organization_id !== $organization->id) { throw new AuthorizationException('Member does not belong to organization'); } } /** * List all members of an organization * * @return MemberCollection> * * @throws AuthorizationException * * @operationId getMembers */ public function index(Organization $organization, MemberIndexRequest $request): MemberCollection { $this->checkPermission($organization, 'members:view'); $members = $organization->users() ->paginate(); return MemberCollection::make($members); } /** * Update a member of the organization * * @throws AuthorizationException * * @operationId updateMember */ public function update(Organization $organization, Membership $membership, MemberUpdateRequest $request): JsonResource { $this->checkPermission($organization, 'members:update', $membership); $membership->billable_rate = $request->input('billable_rate'); $membership->role = $request->input('role'); $membership->save(); return new MemberResource($membership); } /** * Remove a member of the organization. * * @throws AuthorizationException * * @operationId removeMember */ public function destroy(Organization $organization, Membership $membership): JsonResponse { $this->checkPermission($organization, 'members:delete', $membership); $membership->delete(); return response() ->json(null, 204); } /** * Invite a placeholder member to become a real member of the organization * * @throws AuthorizationException|UserNotPlaceholderApiException * * @operationId invitePlaceholder */ public function invitePlaceholder(Organization $organization, Membership $membership, Request $request): JsonResponse { $this->checkPermission($organization, 'members:invite-placeholder', $membership); $user = $membership->user; if (! $user->is_placeholder) { throw new UserNotPlaceholderApiException(); } app(InvitesTeamMembers::class)->invite( $request->user(), $organization, $user->email, 'employee' ); return response()->json(null, 204); } }