diff --git a/wwwroot/api/check_perm.dspy b/wwwroot/api/check_perm.dspy index 01bb995..8ec82a9 100644 --- a/wwwroot/api/check_perm.dspy +++ b/wwwroot/api/check_perm.dspy @@ -2,18 +2,17 @@ dbname = get_module_dbname('rbac') async with DBPools().sqlorContext(dbname) as sor: - # Get all 'any' role permissions - rp = await sor.sqlExe("SELECT permid FROM rolepermission WHERE roleid='any'", {}) - permids = [getattr(r, "permid", "") for r in (rp or [])] - - # Check permission table for these IDs + # Search for up_login in permissions + login_perms = await sor.sqlExe( + "SELECT id, path FROM permission WHERE path LIKE '%%up_login%%' OR path LIKE '%%login.ui%%' OR path LIKE '%%rbac/user%%'", {}) result = [] - for pid in permids[:10]: - perm = await sor.sqlExe("SELECT * FROM permission WHERE id=${p}$", {"p": pid}) - if perm: - d = perm[0].to_dict() if hasattr(perm[0], 'to_dict') else {} - result.append(d) - else: - result.append({"permid": pid, "error": "not found"}) + for r in (login_perms or []): + pid = getattr(r, "id", "") + path = getattr(r, "path", "") + # Check if in 'any' role + rp = await sor.sqlExe( + "SELECT roleid FROM rolepermission WHERE permid=${p}$", {"p": pid}) + roles = [getattr(r2, "roleid", "") for r2 in (rp or [])] + result.append({"id": pid, "path": path, "roles": roles}) -return json.dumps({"perm_count": len(permids), "sample": result}, ensure_ascii=False, default=str) +return json.dumps({"login_perms": result}, ensure_ascii=False)