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 details)

Uploaded Source

Built Distribution

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

Uploaded Python 3

File details

Details for the file permissions-system-0.2.3.tar.gz.

File metadata

  • Download URL: permissions-system-0.2.3.tar.gz
  • Upload date:
  • Size: 9.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.45.0 CPython/3.8.2

File hashes

Hashes for permissions-system-0.2.3.tar.gz
Algorithm Hash digest
SHA256 683bd4f49c5aa553f59d1c84cffb7b7c8d88bba78ea10060eb240cf6c43e35c7
MD5 65e71570893193d7d98928a0d204f908
BLAKE2b-256 8be7fa6484c47e451e5034351bae73b3bd279017c9404e0209b4e885d76aee4c

See more details on using hashes here.

File details

Details for the file permissions_system-0.2.3-py3-none-any.whl.

File metadata

  • Download URL: permissions_system-0.2.3-py3-none-any.whl
  • Upload date:
  • Size: 14.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.45.0 CPython/3.8.2

File hashes

Hashes for permissions_system-0.2.3-py3-none-any.whl
Algorithm Hash digest
SHA256 db1b6d9fe41c8db76bbf6a7a44b04f03f3dc6eb6e8be25cada30d32a37517520
MD5 566a92efbf0e61ebb23998194e1bc0b7
BLAKE2b-256 d6a64b92f0758a6bf3f1cac0f637a1b1b2b4b71e9dd28d8f0adc492de536868a

See more details on using hashes here.

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