自动加载权限

This commit is contained in:
wuaho 2021-10-11 17:36:15 +08:00
parent 1d96278818
commit b7fee9c7ca
3 changed files with 11 additions and 12 deletions

View File

@ -33,8 +33,7 @@ async def add_role_domain(
casbin_enforcer.add_role_for_user_in_domain(user=item.username,
role=item.role_id,
domain=item.game)
casbin_enforcer.load_model()
casbin_enforcer.load_policy()
return schemas.Msg(code=0, msg='添加成功', data=True)
@ -75,8 +74,7 @@ async def del_role_domain(
res = casbin_enforcer.delete_roles_for_user_in_domain(user=data_in.username,
role=data_in.role_id,
domain=data_in.game)
casbin_enforcer.load_model()
casbin_enforcer.load_policy()
await crud.role.delete_id(db, data_in.role_id)
return schemas.Msg(code=0, msg='ok', data=res)
@ -93,8 +91,7 @@ async def add_policy(
res = 0
for path in data_id.path_list:
res = casbin_enforcer.add_policy(data_id.role_id, data_id.game, path, data_id.act)
casbin_enforcer.load_model()
casbin_enforcer.load_policy()
return schemas.Msg(code=0, msg='ok', data=res)
@ -108,8 +105,7 @@ async def remove_policy(
"""
res = casbin_enforcer.remove_policy(data_id.role_id, data_id.game, data_id.path, data_id.act)
casbin_enforcer.load_model()
casbin_enforcer.load_policy()
return schemas.Msg(code=0, msg='ok', data=res)
@ -157,8 +153,7 @@ async def del_api(
paths = await crud.api_list.find_ids(db, data_in.ids, {'path': 1})
for item in paths:
casbin_enforcer.remove_filtered_policy(2, item['path'])
casbin_enforcer.load_model()
casbin_enforcer.load_policy()
# 删除保存的记录
res = await crud.api_list.del_api(db, data_in)

View File

@ -141,5 +141,8 @@ class Adapter(persist.Adapter):
casbin_adapter = Adapter(settings.DATABASE_URI, settings.MDB_DB)
casbin_enforcer = casbin.Enforcer('rbac_model.conf', casbin_adapter)
casbin_enforcer = casbin.SyncedEnforcer('rbac_model.conf', casbin_adapter)
casbin_model = casbin_enforcer.get_model()
casbin_enforcer.start_auto_load_policy(30)

View File

@ -49,6 +49,7 @@ class SyncedEnforcer():
return
self._auto_loading.value = True
self._auto_loading_thread = threading.Thread(target=self._auto_load_policy, args=[interval], daemon=True)
self._auto_loading_thread.start()
def stop_auto_load_policy(self):
"""stops the thread started by start_auto_load_policy"""