Files
dtm-py-all/UI/ui_utils/user_session.py

89 lines
2.3 KiB
Python
Raw Normal View History

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
用户会话管理模块
用于存储和管理当前登录用户的信息
"""
class UserSession:
"""单例模式的用户会话管理器"""
_instance = None
_user_info = None
def __new__(cls):
if cls._instance is None:
cls._instance = super(UserSession, cls).__new__(cls)
return cls._instance
@classmethod
def set_user_info(cls, user_info):
"""
设置当前登录用户信息
Args:
user_info (dict): 用户信息包含 username, userid, role, auth 等字段
"""
cls._user_info = user_info
print(f"[UserSession] 用户登录成功: {user_info.get('username')} (角色: {user_info.get('role')})")
@classmethod
def get_user_info(cls):
"""
获取当前登录用户信息
Returns:
dict: 用户信息如果未登录则返回 None
"""
return cls._user_info
@classmethod
def get_username(cls):
"""获取当前用户名"""
return cls._user_info.get('username') if cls._user_info else None
@classmethod
def get_userid(cls):
"""获取当前用户ID"""
return cls._user_info.get('userid') if cls._user_info else None
@classmethod
def get_role(cls):
"""获取当前用户角色"""
return cls._user_info.get('role') if cls._user_info else None
@classmethod
def get_auth(cls):
"""获取当前用户权限"""
return cls._user_info.get('auth') if cls._user_info else None
@classmethod
def is_logged_in(cls):
"""检查是否已登录"""
return cls._user_info is not None
@classmethod
def is_super(cls):
"""检查是否为超级管理员"""
return cls.get_role() == 'super'
@classmethod
def is_admin(cls):
"""检查是否为管理员"""
role = cls.get_role()
return role in ['super', 'admin']
@classmethod
def is_engineer(cls):
"""检查是否为工程师"""
role = cls.get_role()
return role in ['super', 'admin', 'engineer']
@classmethod
def clear(cls):
"""清除用户会话(登出)"""
cls._user_info = None
print("[UserSession] 用户已登出")