https://github.com/rf-tar-railt/simpleperm
A simple impl of permission system, inspired from Luckperm
https://github.com/rf-tar-railt/simpleperm
Last synced: 3 months ago
JSON representation
A simple impl of permission system, inspired from Luckperm
- Host: GitHub
- URL: https://github.com/rf-tar-railt/simpleperm
- Owner: RF-Tar-Railt
- License: mit
- Created: 2022-11-27T07:31:54.000Z (over 2 years ago)
- Default Branch: master
- Last Pushed: 2023-06-16T10:23:49.000Z (almost 2 years ago)
- Last Synced: 2025-01-23T16:33:50.208Z (4 months ago)
- Language: Python
- Size: 19.5 KB
- Stars: 1
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# simple-permission
A simple impl of permission system, inspired from Luckperm
## example
group:
```python
from simperm import Group, Permission# group:default have one basic perm setting.check
default = Group("default", 10, Permission("setting.check"))
# group:admin inherit default and have another perm setting.change
admin = Group("admin", 40, default.to_node(), Permission("setting.change"))
# group:owner include admin (and so include default)
owner = Group("owner", 80, admin.to_node(), Permission("setting.add"), Permission("setting.remove"))
# user in group:master can have all access of setting permission
master = Group("master", 100, Permission("setting.*"), Permission("permission.*"))
```user:
```python
from simperm import User, Permission, Context, monitoruser1 = User("user1")
# user1 can get all permission in group:default
user1.join_group(default.to_node())
user2 = User("user2")
user2.join_group(default.to_node())
user2.add_permission(Permission("setting.add"))
# user2 can only get admin's permissions when context is scope:main
user2.join_group(admin.to_node(), Context(scope="main"))assert not monitor.check_permission(user1, "setting.change")
assert not monitor.check_permission(user2, "setting.change", context=Context(scope="sub"))
```