This commit is contained in:
yumoqing 2025-04-06 16:04:44 +08:00
parent 5dd0c98f3b
commit 94909bf061
5 changed files with 53 additions and 32 deletions

9
rbac/audit_log.py Normal file
View File

@ -0,0 +1,9 @@
from sqlor.dbpools import DBPools
from appPublic.dictObject import DictObject
from appPublic.uniqueID import getID
import json
def write_audit_log(sor, request):
id = getID()
params_kw = get_params_kw(request)

View File

@ -8,8 +8,8 @@ from appPublic.jsonConfig import getConfig
from appPublic.log import debug, exception
from appPublic.dictObject import DictObject
from appPublic.uniqueID import getID
from ahserver.auth_api import AuthAPI, user_login
from ahserver.globalEnv import password_encode
from ahserver.auth_api import AuthAPI, user_login
from ahserver.serverenv import ServerEnv, get_serverenv, set_serverenv
import jwt
@ -88,13 +88,6 @@ async def register_user(sor, ns):
await create_user(sor, ns)
return id
def load_rbac():
AuthAPI.checkUserPermission = objcheckperm
env = ServerEnv()
env.get_user_roles = get_user_roles
env.check_user_password = checkUserPassword
env.register_user = register_user
async def get_dbname():
rf = RegisterFunction()
dbname = await rf.exe('get_module_dbname', 'rbac')

12
rbac/init.py Normal file
View File

@ -0,0 +1,12 @@
from rbac.check_perm import objcheckperm, get_user_role, checkUserPassword, register_user
from rbac.set_role_perms import set_role_perm, set_role_perms
def load_rbac():
AuthAPI.checkUserPermission = objcheckperm
env = ServerEnv()
env.get_user_roles = get_user_roles
env.check_user_password = checkUserPassword
env.register_user = register_user
env.set_role_perm = set_role_perm
env.set_role_perms = set_role_perms

13
script/roleperm.py → rbac/set_role_perms.py Executable file → Normal file
View File

@ -9,7 +9,11 @@ from appPublic.asynciorun import run
async def set_role_perm(dbname, module, orgtype, role, tblname):
db = DBPools()
async with db.sqlorContext(dbname) as sor:
if '/' in dbname:
path = [f'/{module}/{dbname}']
else:
paths = [
f'/{module}/{tblname}',
f'/{module}/{tblname}/index.ui',
f'/{module}/{tblname}/get_{tblname}.dspy',
f'/{module}/{tblname}/add_{tblname}.dspy',
@ -40,6 +44,11 @@ async def set_role_perm(dbname, module, orgtype, role, tblname):
})
print(f'{orgtype=}, {role=}, {tblname=} permission configured')
async def set_role_perms(dbname, module, orgtype, role, items):
for tblname in items:
await set_role_perm(dbname, module, orgtype, role, tblname)
if __name__ == '__main__':
async def main():
if len(sys.argv) < 6:
print(f'{sys.argv[0]} dbname module orgtype role tblname ...\n')
@ -48,8 +57,7 @@ async def main():
module = sys.argv[2]
orgtype = sys.argv[3]
role = sys.argv[4]
for tblname in sys.argv[5:]:
await set_role_perm(dbname, module, orgtype, role, tblname)
await set_role_perms(dbname, module, orgtype, role, sys.argv[5:])
def run(coro):
p = '.'
@ -59,6 +67,5 @@ def run(coro):
asyncio.set_event_loop(loop)
loop.run_until_complete(coro())
if __name__ == '__main__':
run(main)

0
rbac/version.py Executable file → Normal file
View File