Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 10 additions & 0 deletions libs/wire-api/src/Wire/API/Routes/Public/Brig.hs
Original file line number Diff line number Diff line change
Expand Up @@ -1989,6 +1989,16 @@ type TeamsAPI =
:> "collaborators"
:> MultiVerb1 'GET '[JSON] (Respond 200 "Return collaborators" [TeamCollaborator])
)
:<|> Named
"remove-team-collaborator"
( Summary "Remove a collaborator from the team."
:> ZLocalUser
:> "teams"
:> Capture "tid" TeamId
:> "collaborators"
:> CaptureUserId "uid"
:> MultiVerb1 'DELETE '[JSON] (RespondEmpty 204 "User removed from team")
)

type SystemSettingsAPI =
Named
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,5 +12,6 @@ data TeamCollaboratorsSubsystem m a where
CreateTeamCollaborator :: Local UserId -> UserId -> TeamId -> Set CollaboratorPermission -> TeamCollaboratorsSubsystem m ()
GetAllTeamCollaborators :: Local UserId -> TeamId -> TeamCollaboratorsSubsystem m [TeamCollaborator]
InternalGetTeamCollaborator :: TeamId -> UserId -> TeamCollaboratorsSubsystem m (Maybe TeamCollaborator)
RemoveTeamCollaborator :: Local UserId -> UserId -> TeamId -> TeamCollaboratorsSubsystem m ()

makeSem ''TeamCollaboratorsSubsystem
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ interpretTeamCollaboratorsSubsystem = interpret $ \case
CreateTeamCollaborator zUser user team perms -> createTeamCollaboratorImpl zUser user team perms
GetAllTeamCollaborators zUser team -> getAllTeamCollaboratorsImpl zUser team
InternalGetTeamCollaborator team user -> internalGetTeamCollaboratorImpl team user
RemoveTeamCollaborator zUser team user -> removeTeamCollaboratorImpl zUser team user

internalGetTeamCollaboratorImpl ::
(Member Store.TeamCollaboratorsStore r) =>
Expand Down Expand Up @@ -93,6 +94,19 @@ getAllTeamCollaboratorsImpl zUser team = do
guardPermission (tUnqualified zUser) team TeamMember.NewTeamCollaborator InsufficientRights
Store.getAllTeamCollaborators team

removeTeamCollaboratorImpl ::
( Member GalleyAPIAccess r,
Member (Error TeamCollaboratorsError) r,
Member Store.TeamCollaboratorsStore r
) =>
Local UserId ->
UserId ->
TeamId ->
Sem r ()
removeTeamCollaboratorImpl zUser user team = do
-- TODO: actual implementation here
return ()

-- This is of general usefulness. However, we cannot move this to wire-api as
-- this would lead to a cyclic dependency.
guardPermission ::
Expand Down
1 change: 1 addition & 0 deletions services/brig/src/Brig/Team/API.hs
Original file line number Diff line number Diff line change
Expand Up @@ -114,6 +114,7 @@ servantAPI =
:<|> Named @"accept-team-invitation" (\luid req -> lift $ liftSem $ acceptTeamInvitation luid req.password req.code)
:<|> Named @"add-team-collaborator" (\zuid tid (NewTeamCollaborator uid perms) -> lift . liftSem $ createTeamCollaborator zuid uid tid perms)
:<|> Named @"get-team-collaborators" (\zuid tid -> lift . liftSem $ getAllTeamCollaborators zuid tid)
:<|> Named @"remove-team-collaborator" (\zuid tid uid -> lift . liftSem $ removeTeamCollaborator zuid uid tid)

teamSizePublic ::
( Member (Error UserSubsystemError) r,
Expand Down