diff --git a/json/build.sh b/json/build.sh index b59d2d9..86a8ad9 100755 --- a/json/build.sh +++ b/json/build.sh @@ -1,3 +1,3 @@ -#!/usr/bin/bash +#!/bin/bash xls2ui -m ../models -o ../wwwroot rbac *.json diff --git a/rbac/check_perm.py b/rbac/check_perm.py index 88d7d1a..8d2eb52 100644 --- a/rbac/check_perm.py +++ b/rbac/check_perm.py @@ -55,25 +55,48 @@ async def get_user_roles(userid): roles.append(r.name) return roles -async def create_org(sor, ns): +async def create_org(sor, ns, orgtypes=[]): await sor.C('organization', ns) - otns = { - 'id':getID(), - 'orgid':ns.id, - 'orgtypeid':'customer' - } - await sor.C('orgtypes', otns) + if orgtypes == []: + orgtypes = ['customer'] + if 'customer' not in orgtypes: + orgtypes.append('customer') + for ot in orgtypes: + otns = { + 'id':getID(), + 'orgid':ns.id, + 'orgtypeid':ot + } + await sor.C('orgtypes', otns) -async def create_user(sor, ns): +async def create_user(sor, ns, roles=[]): + """ + role format: + { + orgtypeid: rr, + roles: ['ee', 'bb'] + } + """ await sor.C('users', ns) - sql = "select * from role where orgtypeid = 'customer' and name in ('admin', 'customer')" - recs = await sor.sqlExe(sql, {}) - for r in recs: - await sor.C('userrole', { - 'id':getID(), - 'userid':ns.id, - 'roleid':r.id - }) + if roles == []: + roles = [ + { + 'orgtypeid': 'customer', + 'roles': [ 'customer'] + } + ] + for rt in roles: + sql = "select * from role where orgtypeid = ${otid}$ and name in ${roles}$)" + recs = await sor.sqlExe(sql, { + 'otid': rt['orgtypeid', + 'roles': rt['roles'] + }) + for r in recs: + await sor.C('userrole', { + 'id':getID(), + 'userid':ns.id, + 'roleid':r.id + }) async def register_user(sor, ns): if ns.password != ns.cfm_password: