From cef89a6332bdd307f992736c171f8d5b46bbcab3 Mon Sep 17 00:00:00 2001 From: yumoqing Date: Wed, 23 Jul 2025 17:57:58 +0800 Subject: [PATCH 01/11] bugfix --- rbac/check_perm.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/rbac/check_perm.py b/rbac/check_perm.py index 90b5a2e..c275b04 100644 --- a/rbac/check_perm.py +++ b/rbac/check_perm.py @@ -95,8 +95,8 @@ async def checkUserPassword(request, username, password): recs = await sor.sqlExe(sql, {'username':username, 'password':password}) if len(recs) < 1: return False - await user_login(request, recs[0].id, - username=recs[0].username, + await user_login(request, recs[0].id, \ + username=recs[0].username, \ userorgid=recs[0].orgid) return True return False From 5b2945921f985a5de17a87312261cd84385e2eec Mon Sep 17 00:00:00 2001 From: yumoqing Date: Wed, 23 Jul 2025 18:01:30 +0800 Subject: [PATCH 02/11] bugfix --- rbac/check_perm.py | 20 +++++--------------- 1 file changed, 5 insertions(+), 15 deletions(-) diff --git a/rbac/check_perm.py b/rbac/check_perm.py index c275b04..efe7101 100644 --- a/rbac/check_perm.py +++ b/rbac/check_perm.py @@ -95,8 +95,8 @@ async def checkUserPassword(request, username, password): recs = await sor.sqlExe(sql, {'username':username, 'password':password}) if len(recs) < 1: return False - await user_login(request, recs[0].id, \ - username=recs[0].username, \ + await user_login(request, recs[0].id, + username=recs[0].username, userorgid=recs[0].orgid) return True return False @@ -111,19 +111,10 @@ async def basic_auth(sor, auth): if len(recs) < 1: return None await user_login(request, recs[0].id, + username=recs[0].username, + userorgid=recs[0].orgid) return recs[0].id -async def bearer_auth(sor, auth): - # apikey = get_apikey_from_token(auth[7:]) - apikey = auth[7:] - if apikey is None: - return None - sql = "select * from userapp where apikey=${apikey}$ and expired_date > ${today}$" - recs = await sor.sqlExe(sql, {"apikey":apikey, 'today': curDateString()}) - if len(recs) < 1: - return None - return recs[0].userid - async def getAuthenticationUserid(sor, request): auth = request.headers.get('Authentication') if auth is None: @@ -168,8 +159,7 @@ where c.userid = ${userid}$ return False registered_auth_methods = { - "Basic ": basic_auth, - "Bearer ": bearer_auth + "Basic ": basic_auth } def register_auth_method(heading, func): From ce90af0b81a6301f4dc25c781dce3b6e3564c2f0 Mon Sep 17 00:00:00 2001 From: yumoqing Date: Sat, 26 Jul 2025 20:52:51 +0800 Subject: [PATCH 03/11] bugfix --- rbac/check_perm.py | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/rbac/check_perm.py b/rbac/check_perm.py index efe7101..c5dec81 100644 --- a/rbac/check_perm.py +++ b/rbac/check_perm.py @@ -17,7 +17,7 @@ async def get_user_roles(userid): sql = "select 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 = await get_dbname() + dbname = get_dbname() async with db.sqlorContext(dbname) as sor: recs = await sor.sqlExe(sql, {'userid':userid}) if len(recs) < 1: @@ -82,14 +82,15 @@ async def register_user(sor, ns): await create_user(sor, ns) return id -async def get_dbname(): - rf = RegisterFunction() - dbname = await rf.exe('get_module_dbname', 'rbac') - return dbname +def get_dbname(): + f = get_serverenv('get_module_dbname') + if f i None: + return None + return f('rbac') async def checkUserPassword(request, username, password): db = DBPools() - dbname = await get_dbname() + dbname = get_dbname() async with db.sqlorContext(dbname) as sor: sql = "select * from users where username=${username}$ and password=${password}$" recs = await sor.sqlExe(sql, {'username':username, 'password':password}) @@ -134,7 +135,7 @@ right join userrole c on b.roleid = c.roleid where c.userid = ${userid}$ """ - dbname = await get_dbname() + dbname = get_dbname() db = DBPools() async with db.sqlorContext(dbname) as sor: if userid is None: From 04b8dec1153597b6b042f563bd79cadda357f718 Mon Sep 17 00:00:00 2001 From: yumoqing Date: Sat, 26 Jul 2025 20:59:19 +0800 Subject: [PATCH 04/11] bugfix --- rbac/check_perm.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rbac/check_perm.py b/rbac/check_perm.py index c5dec81..53de9b7 100644 --- a/rbac/check_perm.py +++ b/rbac/check_perm.py @@ -84,7 +84,7 @@ async def register_user(sor, ns): def get_dbname(): f = get_serverenv('get_module_dbname') - if f i None: + if f is None: return None return f('rbac') From e8037bb16f9bd972cc84b32b075de709329ab162 Mon Sep 17 00:00:00 2001 From: yumoqing Date: Mon, 28 Jul 2025 15:41:07 +0800 Subject: [PATCH 05/11] bugfix --- wwwroot/user/register.dspy | 2 +- wwwroot/user/up_login.dspy | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/wwwroot/user/register.dspy b/wwwroot/user/register.dspy index 25fd15d..0c3b7eb 100644 --- a/wwwroot/user/register.dspy +++ b/wwwroot/user/register.dspy @@ -1,6 +1,6 @@ debug(f'{params_kw=}') db = DBPools() -dbname = await rfexe('get_module_dbname', 'sage') +dbname = get_module_dbname('rbac') async with db.sqlorContext(dbname) as sor: orgid = await register_user(sor, params_kw) if get_owner_orgid and openCustomerAccounts: diff --git a/wwwroot/user/up_login.dspy b/wwwroot/user/up_login.dspy index 2c9be69..1173d8a 100644 --- a/wwwroot/user/up_login.dspy +++ b/wwwroot/user/up_login.dspy @@ -7,7 +7,7 @@ ns = { info(f'{ns=}') db = DBPools() -dbname = await rfexe('get_module_dbname', 'rbac') +dbname = get_module_dbname('rbac') async with db.sqlorContext(dbname) as sor: r = await sor.sqlExe('select * from users where username=${username}$ and password=${password}$', ns.copy()) if len(r) == 0: From 3b5ef09c3c3104bd505efd95770af7cb2d035589 Mon Sep 17 00:00:00 2001 From: yumoqing Date: Mon, 28 Jul 2025 16:27:28 +0800 Subject: [PATCH 06/11] bugfix --- rbac/check_perm.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rbac/check_perm.py b/rbac/check_perm.py index 53de9b7..619893c 100644 --- a/rbac/check_perm.py +++ b/rbac/check_perm.py @@ -57,7 +57,7 @@ async def create_user(sor, ns, roles=[]): } ] for rt in roles: - sql = "select * from role where orgtypeid = ${otid}$ and name in ${roles}$)" + sql = "select * from role where orgtypeid = ${otid}$ and name in ${roles}$" recs = await sor.sqlExe(sql, { 'otid': rt['orgtypeid'], 'roles': rt['roles'] From d95b12a903b0d64ee5bcbf106b771f0252f998ca Mon Sep 17 00:00:00 2001 From: yumoqing Date: Mon, 28 Jul 2025 16:39:51 +0800 Subject: [PATCH 07/11] bugfix --- wwwroot/user/register.dspy | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/wwwroot/user/register.dspy b/wwwroot/user/register.dspy index 0c3b7eb..5dac922 100644 --- a/wwwroot/user/register.dspy +++ b/wwwroot/user/register.dspy @@ -5,6 +5,7 @@ async with db.sqlorContext(dbname) as sor: orgid = await register_user(sor, params_kw) if get_owner_orgid and openCustomerAccounts: ownerid = await get_owner_orgid(sor, orgid) - await openCustomerAccounts(sor, ownerid, orgid) + if openCustomerAccounts: + await openCustomerAccounts(sor, ownerid, orgid) return UiMessage(title="Success", message="register success") return UiError(title='Error', message="register failed") From aa03d6959e74b46a916831fdaa23e58d19a97ea9 Mon Sep 17 00:00:00 2001 From: yumoqing Date: Mon, 28 Jul 2025 16:42:35 +0800 Subject: [PATCH 08/11] bugfix --- wwwroot/user/register.dspy | 1 + 1 file changed, 1 insertion(+) diff --git a/wwwroot/user/register.dspy b/wwwroot/user/register.dspy index 5dac922..f46e6f4 100644 --- a/wwwroot/user/register.dspy +++ b/wwwroot/user/register.dspy @@ -5,6 +5,7 @@ async with db.sqlorContext(dbname) as sor: orgid = await register_user(sor, params_kw) if get_owner_orgid and openCustomerAccounts: ownerid = await get_owner_orgid(sor, orgid) + openCustomerAccounts = globals().get('openCustomerAccounts') if openCustomerAccounts: await openCustomerAccounts(sor, ownerid, orgid) return UiMessage(title="Success", message="register success") From 5870ed6a9ddc78d4fca068925dfe120589701be5 Mon Sep 17 00:00:00 2001 From: yumoqing Date: Mon, 28 Jul 2025 16:44:09 +0800 Subject: [PATCH 09/11] bugfix --- wwwroot/user/register.dspy | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/wwwroot/user/register.dspy b/wwwroot/user/register.dspy index f46e6f4..0dae5ec 100644 --- a/wwwroot/user/register.dspy +++ b/wwwroot/user/register.dspy @@ -3,9 +3,9 @@ db = DBPools() dbname = get_module_dbname('rbac') async with db.sqlorContext(dbname) as sor: orgid = await register_user(sor, params_kw) + openCustomerAccounts = globals().get('openCustomerAccounts') if get_owner_orgid and openCustomerAccounts: ownerid = await get_owner_orgid(sor, orgid) - openCustomerAccounts = globals().get('openCustomerAccounts') if openCustomerAccounts: await openCustomerAccounts(sor, ownerid, orgid) return UiMessage(title="Success", message="register success") From bb87ec994b1cbfbe1c222bf3a0af162c0bacf922 Mon Sep 17 00:00:00 2001 From: yumoqing Date: Thu, 31 Jul 2025 11:58:54 +0800 Subject: [PATCH 10/11] bugfix --- json/organization.json | 3 --- json/orgtypes.json | 3 --- json/role.json | 3 --- 3 files changed, 9 deletions(-) diff --git a/json/organization.json b/json/organization.json index 50fa259..667e898 100644 --- a/json/organization.json +++ b/json/organization.json @@ -1,7 +1,4 @@ { - "models_dir": "${HOME}$/py/rbac/models", - "output_dir": "${HOME}$/py/sage/wwwroot/_a/organization", - "dbname": "sage", "tblname": "organization", "title":"Organization", "params": { diff --git a/json/orgtypes.json b/json/orgtypes.json index e6778da..bdd8ced 100644 --- a/json/orgtypes.json +++ b/json/orgtypes.json @@ -1,7 +1,4 @@ { - "models_dir": "${HOME}$/py/rbac/models", - "output_dir": "${HOME}$/py/sage/wwwroot/_a/orgtypes", - "dbname": "sage", "tblname": "orgtypes", "title":"Org. type", "params": { diff --git a/json/role.json b/json/role.json index 3c52962..47de184 100644 --- a/json/role.json +++ b/json/role.json @@ -1,7 +1,4 @@ { - "models_dir": "${HOME}$/py/rbac/models", - "output_dir": "${HOME}$/py/sage/wwwroot/_a/role", - "dbname": "sage", "tblname": "role", "title":"角色", "params": { From ebc972fb80f94e2980e094cb9209f741b8468924 Mon Sep 17 00:00:00 2001 From: yumoqing Date: Thu, 31 Jul 2025 15:58:13 +0800 Subject: [PATCH 11/11] bugfix --- json/rolepermission.json | 3 --- json/userdepartment.json | 3 --- rbac/check_perm.py | 5 +++-- 3 files changed, 3 insertions(+), 8 deletions(-) diff --git a/json/rolepermission.json b/json/rolepermission.json index 49bf3fd..7fc4021 100644 --- a/json/rolepermission.json +++ b/json/rolepermission.json @@ -1,7 +1,4 @@ { - "models_dir": "${HOME}$/py/rbac/models", - "output_dir": "${HOME}$/py/sage/wwwroot/_a/rolepermission", - "dbname": "sage", "tblname": "rolepermission", "title":"用户", "params": { diff --git a/json/userdepartment.json b/json/userdepartment.json index 91f409e..1dbd9b4 100644 --- a/json/userdepartment.json +++ b/json/userdepartment.json @@ -1,7 +1,4 @@ { - "models_dir": "${HOME}$/py/rbac/models", - "output_dir": "${HOME}$/py/sage/wwwroot/_a/userdepartment", - "dbname": "sage", "tblname": "userdepartment", "title":"用户", "params": { diff --git a/rbac/check_perm.py b/rbac/check_perm.py index 619893c..43b2937 100644 --- a/rbac/check_perm.py +++ b/rbac/check_perm.py @@ -102,7 +102,8 @@ async def checkUserPassword(request, username, password): return True return False -async def basic_auth(sor, auth): +async def basic_auth(sor, request): + auth = request.headers.get('Authentication') auther = BasicAuth('x') m = auther.decode(auth) username = m.login @@ -122,7 +123,7 @@ async def getAuthenticationUserid(sor, request): return None for h,f in registered_auth_methods.items(): if auth.startswith(h): - return await f(auth) + return await f(sor, request) return None async def objcheckperm(obj, request, userid, path):