Skip to content

Commit

Permalink
Extend TeamInvitationSubsystem interface.
Browse files Browse the repository at this point in the history
  • Loading branch information
fisx committed Sep 25, 2024
1 parent ac5fb59 commit 389181c
Show file tree
Hide file tree
Showing 2 changed files with 30 additions and 0 deletions.
6 changes: 6 additions & 0 deletions libs/wire-subsystems/src/Wire/TeamInvitationSubsystem.hs
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,12 @@ import Wire.API.User.EmailAddress

data TeamInvitationSubsystem m a where
InviteUser :: Local UserId -> TeamId -> InvitationRequest -> TeamInvitationSubsystem m (Invitation, InvitationLocation)
AcceptInvitation :: UserId -> InvitationId -> InvitationCode -> TeamInvitationSubsystem m ()
RevokeInvitation :: TeamId -> InvitationId -> TeamInvitationSubsystem m ()
GetInvitationByCode :: InvitationCode -> TeamInvitationSubsystem m Invitation
GetInvitationByEmail :: EmailAddress -> TeamInvitationSubsystem m Invitation
CheckInvitationsByEmail :: EmailAddress -> TeamInvitationSubsystem m HeadInvitationByEmailResult
DeleteAllInvitationsFor :: TeamId -> TeamInvitationSubsystem m ()
-- | This function exists to support migration in this susbystem, after the
-- migration this would just be an internal detail of the subsystem
InternalCreateInvitation :: TeamId -> Maybe InvitationId -> Role -> Local (Maybe UserId) -> EmailAddress -> InvitationRequest -> TeamInvitationSubsystem m (Invitation, InvitationCode)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,12 @@ runTeamInvitationSubsystem ::
InterpreterFor TeamInvitationSubsystem r
runTeamInvitationSubsystem cfg = interpret $ \case
InviteUser luid tid request -> runInputConst cfg $ inviteUserImpl luid tid request
AcceptInvitation uid invitationId invitationCode -> acceptInvitationImpl uid invitationId invitationCode
RevokeInvitation tid invitationId -> revokeInvitationImpl tid invitationId
GetInvitationByCode invitationCode -> getInvitationByCodeImpl invitationCode
GetInvitationByEmail email -> getInvitationByEmailImpl email
CheckInvitationsByEmail email -> checkInvitationsByEmailImpl email
DeleteAllInvitationsFor tid -> deleteAllInvitationsForImpl tid
InternalCreateInvitation tid mExpectedInvId role mbInviterUid inviterEmail invRequest ->
runInputConst cfg $ createInvitation' tid mExpectedInvId role mbInviterUid inviterEmail invRequest

Expand Down Expand Up @@ -241,6 +247,24 @@ logInvitationRequest context action =
. logInvitationCode code
pure res

acceptInvitationImpl :: UserId -> InvitationId -> InvitationCode -> Sem r ()
acceptInvitationImpl = undefined

revokeInvitationImpl :: TeamId -> InvitationId -> Sem r ()
revokeInvitationImpl = undefined

getInvitationByCodeImpl :: InvitationCode -> Sem r Invitation
getInvitationByCodeImpl = undefined

getInvitationByEmailImpl :: EmailAddress -> Sem r Invitation
getInvitationByEmailImpl = undefined

checkInvitationsByEmailImpl :: EmailAddress -> Sem r HeadInvitationByEmailResult
checkInvitationsByEmailImpl = undefined

deleteAllInvitationsForImpl :: TeamId -> Sem r ()
deleteAllInvitationsForImpl = undefined

-- | Privilege escalation detection (make sure no `RoleMember` user creates a `RoleOwner`).
--
-- There is some code duplication with 'Galley.API.Teams.ensureNotElevated'.
Expand Down

0 comments on commit 389181c

Please sign in to comment.