Invites
Invite users/devices to workspaces
Use cases
- Invite to workspace
- As a workspace owner I want to change invited user's roles
- As a user, I want to see the list of my workspaces and roles, so that I know what am I available to work with
- As a user, I want to be able to leave the workspace I'm invited to
- As a workspace owner I want to ban user to he doesn't have access to my workspace anymore
Overview
Roles and permissions:
WorkspaceOwner: Highest level role, automatically has admin privilegesWorkspaceAdmin: Can manage invites and user access
Key documents:
Invite: Tracks invitation status and metadataSubject: Represents an invited user/device in the workspaceJoinedWorkspace: Records workspace membership detailsLogin: Manages user authentication and access
Invitation management:
c.InitiateInvitationByEmail: Creates new invitation- Requires WorkspaceAdmin role
- Includes email, roles, expiration, and email template
c.InitiateJoinWorkspace: Processes invite acceptance- Requires verification code
- Creates necessary workspace access records
Role management:
c.InitiateUpdateInviteRoles: Updates member permissions- Available for joined members only
- Includes email notification
Membership termination:
c.InitiateCancelAcceptedInvite: Admin removes memberc.InitiateLeaveWorkspace: Member voluntarily leavesc.CancelSentInvite: Cancels pending invitation
Technical design
Data
Invite state diagram
Extra:
Documents
cdoc.sys.Invite
- ID
- SubjectKind (User/Device)
- Login // actually
c.sys.InitiateInvitationByEmail.EMail - Email // actually
c.sys.InitiateInvitationByEmail.EMail - Roles (comma-separated)
- ExpireDatetime (unix-timestamp)
- VerificationCode
- State
- Created (unix-timestamp) ???
- Updated (unix-timestamp) ???
- SubjectID (Subject.ID) // by ap.sys.ApplyJoinWorkspace
- InviteeProfileWSID // by ap.sys.ApplyJoinWorkspace
- ActualLogin //
token.Login, by ap.sys.ApplyJoinWorkspace
cdoc.sys.Subject
- Login // old stored records ->
Invite.Loginthat is actuallyc.sys.InitiateInvitationByEMail.Email, new records (starting from https://github.com/voedger/voedger/issues/1107) -Invite.ActualLoginthat is login from token - SubjectKind (User/Device)
- Roles (comma-separated list)