用于管理对象级权限的可扩展库,支持sqlalchemy、peewee、pony和django。
guardrail的Python项目详细描述
Guardrail是一个用于管理对象级权限的python库,它是 旨在与任意数据库和web框架集成。护栏 灵感来自django-guardian 目前支持sqlalchemy、peewee、pony和django orms。
主页:https://guardrail.readthedocs.org/
安装
pip install guardrail
护栏支持python>;=2.7或>;=3.3和pypy。
示例
使用registry.agent和registry.target像往常一样定义模型 用于设置权限关系的装饰程序:
importpeeweeaspwfromguardrail.coreimportregistryfromguardrail.ext.peeweeimportPeeweePermissionSchemaFactorydatabase=pw.SqliteDatabase(':memory:')classBase(pw.Model):classMeta:database=database@registry.agentclassUser(Base):name=pw.CharField()@registry.targetclassPost(Base):name=pw.CharField()@registry.targetclassComment(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)
然后使用权限管理器对权限执行CRUD操作 在任何代理和目标模型之间:
fromguardrail.ext.peeweeimportPeeweePermissionManagermanager=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')# Truemanager.remove_permission(user,comment,'delete')manager.has_permission(user,comment,'delete')# False
许可证
麻省理工学院许可。见LICENSE 文件以获取详细信息。