diff --git a/scripts/load_path.py b/scripts/load_path.py new file mode 100644 index 0000000..877000f --- /dev/null +++ b/scripts/load_path.py @@ -0,0 +1,69 @@ +"""Generate RBAC permissions for msp module paths. + +Run from Sage root with Sage venv: + cd ~/repos/sage && ./py3/bin/python ../msp/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 = [ + ("/msp", "logined"), + ("/msp/index.ui", "logined"), + ("/msp/menu.ui", "any"), + ("/msp/accordion.ui", "logined"), + ("/msp/app_panel.ui", "logined"), + ("/msp/bottom.ui", "logined"), + ("/msp/center.ui", "logined"), + ("/msp/connecthost.ui", "logined"), + ("/msp/connecthost.xterm", "logined"), + ("/msp/keypress.ui", "logined"), + ("/msp/msp_profile.md", "logined"), + ("/msp/msp_profile.ui", "logined"), + ("/msp/sagelog.ui", "logined"), + ("/msp/sagelog.xterm", "logined"), + ("/msp/test.ui", "logined"), + ("/msp/top.ui", "logined"), + ("/msp/get_code.dspy", "logined"), + ("/msp/imgs/%", "any"), +] + + +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 permcode = ${permcode}$', + {'permcode': path} + ) + if len(r) == 0: + await sor.sqlExe( + '''insert into permission (id, permcode, permname, permtype) + values (${id}$, ${permcode}$, ${permname}$, ${permtype}$)''', + { + 'id': getID(), + 'permcode': path, + 'permname': path, + 'permtype': role, + } + ) + cnt += 1 + print(f'{cnt} path(s) inserted for msp') + + +if __name__ == '__main__': + asyncio.run(main())