Skip to content

miniscruff/scopie

Repository files navigation

Authorization engine for configuring per user per feature access control. Access is configured via plain text and handled directly via code. Configuration storage is controlled by you, scopie just handles the logic.

Implementations

A language agnostic set of scenarios can be found in the scenarios.json file.

Example

A portion of our application is around building, running and responding to financial reports. We run half, quarterly, monthly and weekly reports.

Actions

  1. Edit: Modify how the report is built
  2. Run: Manually run the report
  3. Read: Read the reports in our tool
  4. Approve: Sign off on the report, approved reports would then be shared
  5. Delete: Remove an invalid or broken report

Format

For the above reasons we are going to specify our scopes and rules as:

reports/<duration>/<action>

We could expand this later to include some sort of organization or business group but for this example, we will keep it simple.

Users

  1. Maya is allowed to do everything ( the boss )
allow/**
  1. Adam is allowed to edit and read any report ( makes changes to the queries )
allow/reports/*/edit|read
  1. Tyler can only read reports ( reviews reports but doesn't need to approve them )
allow/reports/*/read
  1. Elisa can do everything but delete ( mostly there to approve, but occasionally edits queries )
allow/reports/*/*
deny/reports/*/delete
  1. Jenna can edit and read but only the weekly reports ( a new hire working up )
allow/reports/weekly/edit|read

About

Scope based authorization framework design

Resources

License

Stars

Watchers

Forks

Releases

No releases published