一个可扩展的库,用于管理对象级权限,支持SQLAlchemy、Peewee、Pony和Django。
项目描述
guardrail是一个Python库,用于管理对象级权限,旨在与任意数据库和Web框架集成。guardrail受django-guardian的启发,目前支持SQLAlchemy、Peewee、Pony和Django ORM。
主页: https://guardrail.readthedocs.org/
安装
pip install guardrail
guardrail支持Python >= 2.7或>= 3.3和pypy。
示例
像往常一样定义您的模型,使用registry.agent和registry.target装饰器来设置权限关系
import peewee as pw
from guardrail.core import registry
from guardrail.ext.peewee import PeeweePermissionSchemaFactory
database = pw.SqliteDatabase(':memory:')
class Base(pw.Model):
class Meta:
database = database
@registry.agent
class User(Base):
name = pw.CharField()
@registry.target
class Post(Base):
name = pw.CharField()
@registry.target
class Comment(Base):
name = pw.CharField()
factory = PeeweePermissionSchemaFactory((Base, ))
registry.make_schemas(factory)
database.connect()
database.create_tables([User, Post, Comment], safe=True)
database.create_tables(registry.permissions, safe=True)
然后使用权限管理器在任意agent和target模型之间执行CRUD操作
from guardrail.ext.peewee import PeeweePermissionManager
manager = PeeweePermissionManager()
user = User.create(name='fred')
post = Post.create(name='news of the world')
comment = Comment.create(name='dragon attack')
manager.add_permission(user, post, 'edit')
manager.add_permission(user, comment, 'delete')
manager.has_permission(user, post, 'edit') # True
manager.remove_permission(user, comment, 'delete')
manager.has_permission(user, comment, 'delete') # False
项目链接
许可协议
MIT许可。有关详细信息,请参阅LICENSE文件。
项目详情
关闭
guardrail-0.1.1.tar.gz的散列值
算法 | 散列摘要 | |
---|---|---|
SHA256 | 2279eae52aa00108a9197c3ea594db561df60720e79d970de620423b6842abe9 |
|
MD5 | 14177c9e583b2a715eb50e7e975c2a83 |
|
BLAKE2b-256 | 566840cd6d0aa7d3bf7bd62d2214671b7cf1402b47dd0cac74c97b8632d893fa |
关闭
guardrail-0.1.1.macosx-10.5-x86_64.tar.gz的散列值
算法 | 散列摘要 | |
---|---|---|
SHA256 | e2016b5555f4efc7c1876ad94ef8033b35d7c89970d96e27494f89a7ba08fb43 |
|
MD5 | 8a457648cf380c3e9cbda4bda626b101 |
|
BLAKE2b-256 | 23ef0dd6a4a149f8df00bcf01668c504de2040f7b5057f936d960db1bc5dd9b1 |