This commit is contained in:
yumoqing 2025-01-21 13:49:26 +08:00
parent 9f852a739e
commit 9fd6eba6da
7 changed files with 87 additions and 25 deletions

View File

@ -1,22 +0,0 @@
{
"models_dir": "${HOME}$/py/rbac/models",
"output_dir": "${HOME}$/py/sage/wwwroot/_a/userroles",
"dbname": "sage",
"tblname": "userroles",
"title":"用户",
"params": {
"relation":{
"outter_field":"roleid",
"param_field":"userid"
},
"browserfields": {
"exclouded": ["id", "userid"],
"cwidth": {}
},
"editexclouded": [
"id",
"userid"
],
"record_toolbar": null
}
}

View File

@ -6,6 +6,7 @@
"title":"用户", "title":"用户",
"params": { "params": {
"sortby":"username", "sortby":"username",
"logined_userorgid":"orgid",
"browserfields": { "browserfields": {
"exclouded": ["id"], "exclouded": ["id"],
"cwidth": {} "cwidth": {}
@ -13,6 +14,12 @@
"editexclouded": [ "editexclouded": [
"id" "id"
], ],
"record_toolbar": null "subtables": [
{
"field":"userid",
"title":"用户角色",
"subtable":"userrole"
}
]
} }
} }

View File

@ -0,0 +1,23 @@
if params_kw.get('password') != params_kw.get('chkpassword'):
return Error(title='add user error', message='password not match')
ns = params_kw.copy()
ns['id'] = uuid()
await rfexe('passowrd', ns)
user_orgid = await get_userorgid()
ns['orgid'] = user_orgid
dbname = await rfexe('get_module_dbname','rbac')
db = DBPools()
debug(f'{dbname=}')
async with db.sqlorContext(dbname) as sor:
await sor.C('users',ns.copy())
uid = ns['id']
ns = {
'id':uuid(),
'userid':uid,
'roleid':'admin'
}
await sor.C('userrole', ns.copy())
return UiMesage(title='Success', message='admin user added')
return UiError(title='Error', message='Error happened when add admin user')

View File

@ -28,7 +28,7 @@
"widgettype":"Text", "widgettype":"Text",
"options":{ "options":{
"wrap":false, "wrap":false,
"text":"{{get_username()}}" "text":"{{get_username()}}({{str(get_user_roles(get_user()))}})"
} }
} }
] ]

View File

@ -2,7 +2,7 @@
"id":"user_panel", "id":"user_panel",
"widgettype":"VBox", "widgettype":"VBox",
"options":{ "options":{
"width":"100px" "width":"auto"
}, },
"subwidgets":[ "subwidgets":[
{ {

View File

@ -0,0 +1,11 @@
username = params_kw.get('username')
passwd = params_kw.get('passwd')
if not passwd:
return UiError(title='Login failed', message='Password is required')
passwd = password(passwd)
rzt = await check_user_password(request, username, passwd)
if rzt:
return UiMessage(title='Logined', message=f'Welcome back ')
return UiError(title='login failed', message='user and password mismatch')

View File

@ -0,0 +1,43 @@
{
"id":"login_window",
"widgettype":"PopupWindow",
"options":{
"auto_open":true,
"anthor":"cc",
"cwidth":20,
"cheight":"14"
},
"subwidgets":[
{
"widgettype":"Form",
"id":"userpasswd",
"options":{
"cols":1,
"fields":[
{
"name":"username",
"label":"用户名",
"uitype":"str"
},
{
"name":"passwd",
"label":"密码",
"uitype":"password"
}
]
}
}
],
"binds":[
{
"wid":"userpasswd",
"event":"submit",
"actiontype":"urlwidget",
"target":"self",
"options":{
"url":"{{entire_url('userpassword_login.dspy')}}"
}
}
]
}