Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Permissions] System Design #455

Open
rsnyman opened this issue Apr 3, 2023 · 0 comments
Open

[Permissions] System Design #455

rsnyman opened this issue Apr 3, 2023 · 0 comments

Comments

@rsnyman
Copy link
Contributor

rsnyman commented Apr 3, 2023

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
@rsnyman rsnyman added this to the Fine-grained Permissions milestone Apr 3, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
Status: 📋 Backlog
Development

No branches or pull requests

1 participant