Merge branch 'master' of git.kaiyuancloud.cn:yumoqing/rbac

This commit is contained in:
yumoqing 2025-02-14 11:11:55 +08:00
commit 93f536e087
6 changed files with 26 additions and 37 deletions

View File

@ -1,17 +1,20 @@
{
"models_dir": "${HOME}$/py/rbac/models",
"output_dir": "${HOME}$/py/sage/wwwroot/_a/permission",
"dbname": "sage",
"tblname": "permission",
"uitype":"tree",
"title":"权限",
"params": {
"browserfields": {
"exclouded": ["id"],
"cwidth": {}
},
"editexclouded": [
"id"
],
"record_toolbar": null
}
"params":{
"idField":"id",
"textField":"name",
"editable":true,
"browserfields":{
"alters":{}
},
"edit_exclouded_fields":[],
"parentField":"parentid",
"toolbar":{
},
"binds":[
]
}
}

View File

@ -1,11 +1,9 @@
{
"models_dir": "${HOME}$/py/rbac/models",
"output_dir": "${HOME}$/py/sage/wwwroot/_a/users",
"dbname": "sage",
"tblname": "users",
"title":"用户",
"params": {
"sortby":"username",
"confidential_fields":["password"],
"logined_userorgid":"orgid",
"browserfields": {
"exclouded": ["id", "password", "orgid", "nick_name" ],

View File

@ -9,6 +9,7 @@ from appPublic.log import debug, exception
from appPublic.dictObject import DictObject
from appPublic.uniqueID import getID
from ahserver.auth_api import AuthAPI, user_login
from ahserver.globalEnv import password_encode
from ahserver.serverenv import ServerEnv, get_serverenv, set_serverenv
import jwt
@ -55,7 +56,8 @@ async def get_user_roles(userid):
roles.append(r.name)
return roles
async def get_owner_orgid(sor):
async def get_owner_orgid(sor, *args):
debug('uyyyyyyyyyyyyyyyy')
global ownerid
if ownerid:
return ownerid
@ -66,16 +68,6 @@ async def get_owner_orgid(sor):
ownerid = recs[0].orgid
return ownerid
def mypassword(passwd):
config = getConfig()
key = config.password_key or default_password_key
return password(passwd, key = key)
def myunpassword(passwd):
config = getConfig()
key = config.password_key or default_password_key
return unpassword(passwd)
async def create_org(sor, ns):
await sor.C('organization', ns)
otns = {
@ -100,6 +92,7 @@ async def register_user(sor, ns):
if ns.password != ns.cfm_password:
debug('password not match')
return False
ns.password = password_encode(ns.password)
id = getID()
ns.id = id
ns.orgid = id
@ -111,8 +104,6 @@ async def register_user(sor, ns):
def load_rbac():
AuthAPI.checkUserPermission = objcheckperm
env = ServerEnv()
env.password = mypassword
env.unpassword = myunpassword
env.get_user_roles = get_user_roles
env.check_user_password = checkUserPassword
env.register_user = register_user
@ -145,7 +136,7 @@ async def getAuthenticationUserid(sor, request):
auther = BasicAuth('x')
m = auther.decode(auth)
username = m.login
password = mypassword(m.password)
password = password_encode(m.password)
sql = "select * from users where username=${username}$ and password=${password}$"
recs = await sor.sqlExe(sql, {'username':username,'password':password})
if len(recs) < 1:
@ -172,8 +163,7 @@ right join userrole c on b.roleid = c.roleid
where c.userid = ${userid}$
"""
rf = RegisterFunction()
dbname = await rf.exe('get_module_dbname', 'rbac')
dbname = await get_dbname()
db = DBPools()
async with db.sqlorContext(dbname) as sor:
perms = await sor.R('permission', {'path':path})

View File

@ -9,6 +9,5 @@ async with db.sqlorContext(dbname) as sor:
except Exception as e:
fe = format_exc()
exception(f'{e=}\n{fe}')
return UiMessage(title="Success", message="register success")
return UiError(title='Error', message="register failed")

View File

@ -1,9 +1,8 @@
debug(f'{params_kw=}, {password=}')
await rfexe('password', params_kw)
ns = {
"username":params_kw.username,
"password":params_kw.password
"password":password_encode(params_kw.password)
}
info(f'{ns=}')

View File

@ -8,7 +8,7 @@
"width":"70%"
},
"items":[
{% if 'customer' in get_user_roles(get_user()) %}
{% if 'customer.customer' in get_user_roles(get_user()) %}
{
"name":"recharge",
"label":"充值",
@ -17,7 +17,7 @@
{
"name":"myacc",
"label":"我的账户",
"url":"{{entire_url('myaccout')}}"
"url":"{{entire_url('myaccount')}}"
},
{
"name":"mybill",