This commit is contained in:
yumoqing 2026-03-20 21:11:41 +08:00
parent 7ed44525d1
commit 5b1317d515
3 changed files with 14 additions and 19 deletions

View File

@ -28,23 +28,6 @@ async def sor_get_org_users(sor, orgid):
return recs
return []
async def get_user_roles(userid):
sql = "select b.orgtypeid, concat(b.orgtypeid, '.', b.name) as name from userrole a, role b where a.userid=${userid}$ and a.roleid = b.id"
db = DBPools()
roles = []
dbname = get_dbname()
async with db.sqlorContext(dbname) as sor:
recs = await sor.sqlExe(sql, {'userid':userid})
if len(recs) < 1:
return roles
orgtypes = []
for r in recs:
if r.orgtypeid not in orgtypes:
orgtypes.append(r.orgtypeid)
roles.append(r.orgtypeid + '.*')
roles.append(r.name)
return roles
async def create_org(sor, ns, orgtypes=[]):
await sor.C('organization', ns)
if orgtypes == []:

View File

@ -3,11 +3,11 @@ from ahserver.serverenv import ServerEnv
from .orgs import (
get_platform_providers
)
from .userperm import UserPermissions
from rbac.check_perm import (
objcheckperm,
get_org_users,
sor_get_org_users,
get_user_roles,
checkUserPassword,
register_user,
register_auth_method,
@ -26,10 +26,11 @@ async def sor_get_owner_orgid(sor, orgid):
def load_rbac():
AuthAPI.checkUserPermission = objcheckperm
env = ServerEnv()
env.userpermissions = UserPermissions()
env.create_org = create_org
env.get_platform_providers = get_platform_providers
env.create_user = create_user
env.get_user_roles = get_user_roles
env.get_user_roles = userpermsissions.get_user_roles
env.check_user_password = checkUserPassword
env.register_user = register_user
env.set_role_perm = set_role_perm

View File

@ -12,6 +12,17 @@ class UserPermisions:
self.rp_caches = None
self.ur_caches = {}
async def get_user_roles(self, userid):
if userid is None:
return ['anonymous', 'any']
roles = self.ur_caches.get(userid)
if roles:
return roles
async with get_sor_context(ServerEnv(), 'rbac') as sor:
await self.get_userroles(sor, userid)
return self.ur_caches.get(userid)
return None
async def load_roleperms(self, sor):
self.rp_caches = {}
sql_all = """select c.orgtypeid, c.name, b.path