Skip to content

[Permissions] System Design #455

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

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions