Files
Achievement_Inputing/accounts/es_client.py
2025-11-13 17:06:01 +08:00

29 lines
1.0 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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,
}