Skip to main content

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 privileges
  • WorkspaceAdmin: Can manage invites and user access

Key documents:

  • Invite: Tracks invitation status and metadata
  • Subject: Represents an invited user/device in the workspace
  • JoinedWorkspace: Records workspace membership details
  • Login: 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 member
  • c.InitiateLeaveWorkspace: Member voluntarily leaves
  • c.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

Background