"""Generate RBAC permissions for uapi module paths. Run from Sage root with Sage venv: cd ~/repos/sage && ./py3/bin/python ../uapi/scripts/load_path.py """ import os import sys import asyncio sage_root = os.environ.get('SAGE_ROOT') if sage_root and sage_root not in sys.path: sys.path.insert(0, sage_root) from sqlor.dbpools import DBPools from appPublic.jsonConfig import getConfig from appPublic.dictObject import DictObject from appPublic.uniqueID import getID paths = [ ("/uapi", "logined"), ("/uapi/jump_in.dspy", "logined"), ("/uapi/minimax_callback.dspy", "any"), ("/uapi/uptask_callback.dspy", "any"), ("/uapi/viducallback", "any"), ("/uapi/copy_uapi.ui", "logined"), ("/uapi/api/copy_uapi.dspy", "logined"), ] async def main(): config = getConfig('.') DBPools(config.databases) dbname = 'sage' async with DBPools().sqlorContext(dbname) as sor: cnt = 0 for path, role in paths: r = await sor.sqlExe( 'select * from permission where path = ${path}$', {'path': path} ) if len(r) == 0: await sor.sqlExe( '''insert into permission (id, path, name, permtype) values (${id}$, ${path}$, ${name}$, ${permtype}$)''', { 'id': getID(), 'path': path, 'name': path, 'permtype': role, } ) cnt += 1 print(f'{cnt} path(s) inserted for uapi') if __name__ == '__main__': asyncio.run(main())