Invites

Invite users/devices to workspaces

Use cases

  • 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

  • Login // old stored records -> Invite.Login that is actually c.sys.InitiateInvitationByEMail.Email, new records (starting from https://github.com/voedger/voedger/issues/1107) - Invite.ActualLogin that is login from token

  • SubjectKind (User/Device)

  • Roles (comma-separated list)

Background

Last updated

Was this helpful?