29 lines
1.0 KiB
Python
29 lines
1.0 KiB
Python
import base64
|
||
from elastic.es_connect import get_user_by_username as es_get_user_by_username
|
||
from .crypto import salt_for_username, derive_password
|
||
|
||
|
||
def get_user_by_username(username: str):
|
||
"""
|
||
从Elasticsearch获取用户数据;若不存在则回退到内置admin。
|
||
期望ES中存储的是明文密码,登录时按用户名盐派生后对nonce做HMAC验证。
|
||
"""
|
||
es_user = es_get_user_by_username(username)
|
||
if es_user:
|
||
salt = salt_for_username(username)
|
||
derived = derive_password(es_user.get('password', ''), salt)
|
||
return {
|
||
'user_id': es_user.get('user_id', 0),
|
||
'username': es_user.get('username', ''),
|
||
'password': base64.b64encode(derived).decode('ascii'),
|
||
'permission': es_user.get('permission', 1),
|
||
}
|
||
|
||
salt = salt_for_username('admin')
|
||
derived = derive_password('admin', salt)
|
||
return {
|
||
'user_id': 0,
|
||
'username': 'admin',
|
||
'password': base64.b64encode(derived).decode('ascii'),
|
||
'permission': 0,
|
||
} |