Skip to content

[Permissions] System Design #455

@rsnyman

Description

@rsnyman

Basics of the System

Any permissions system usually contains three building blocks for fine-grained permissions.

  1. Permissions
  2. Roles/Groups
  3. Users

Permissions

Permissions are the individual actions a user can perform that can be gated. For example, "edit project", or "edit project members".

Roles/Groups

Roles (sometimes called Groups) are sets of permissions which can be applied to users. A "project owner" role might contain the "edit project" permission, as well as the "edit project members" permission.

Users

Users, obviously, are users in the system. Each user can be assigned one or more roles.

Projects

In addition to the above basic system, individual users will require permissions specific to a certain project which they do not have on other projects.

Conceptual Diagram

erDiagram
    USER }|--|{ ROLE : roles
    USER }|--|{ PROJECT : projects
    ROLE }|--|{ PERMISSON : permissions
    ROLE }o--o| PROJECT : project
Loading

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    Status

    📋 Backlog

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions