zero-shubham / permissions_system

An alternative to admin utilities for more autonomy and control.

Home Page:https://pypi.org/project/permissions-system/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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.

About

An alternative to admin utilities for more autonomy and control.

https://pypi.org/project/permissions-system/

License:MIT License


Languages

Language:Python 99.5%Language:Mako 0.4%Language:Shell 0.1%