Skip to main content

Alternative to admin utilities for more autonomy, targeted towards FastAPI.

Project description

Permissions Systems

It's plugin for fastapi (but can be used with similar frameworks) any frameworks, that provides a minimal
setup for maintaining resources and related permissions for user-groups.

How to use it?

application.py

from fastapi import FastAPI
import databases
import sqlalchemy
import os
from permissions_system.PermissionsSystemDatabases import PermissionsS

app = FastAPI()

DB_URI = os.environ["DB_URI"]

database = databases.Database(DB_URI)
metadata = sqlalchemy.MetaData()
ps = PermissionsS(metadata, database, DB_URI)


app.add_event_handler("startup", startup)
app.add_event_handler("shutdown", shutdown)

async def startup():
    await database.connect()
    ps.setup()

for Flask app you will call ps.setup() after db.init(app), assuming you are using flask_sqlalchemy

Step1 - instantiate PermissionsS class.

Step2 - during startup event after database is connected make a call to setup() ************_************

_PermissionsS will then detect your tables add them to resources, add super-admin user-group, if there isn't already one. Everytime there is a new resource that gets added automatically to resources table. User-group super-admin by default has all CRUD permissions for all resources. To add a new user-group and related permissions use built-in functions add_user_group and add_permissions. To get whether a particular user has CRUD permissions for a particular resource you will call > ps.user_has_permissions(user_id:UUID,resource:str,permission_type:PermissionTypesEnum) -> bool*

PermissionsSystem is not like django-admin or flask-admin. It doesn't provide a front-end admin dashboard, but a minimal setup to manage resources and permissions. It aims to provide autonomy and more control over to the developer. For front-end you will end up using something more custom or React-admin or vue-element-admin

Find an example here, to learn how it can be used.

PermissionsSystem now only uses sqlalchemy and is completely sync.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

permissions-system-0.2.3.tar.gz (9.2 kB view hashes)

Uploaded Source

Built Distribution

permissions_system-0.2.3-py3-none-any.whl (14.8 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page