这是使用PyQT5作为UI的首次提交,将后端和UI合并到1个工程中,统一使用了Python,没有使用JS和HTML
This commit is contained in:
88
UI/ui_utils/user_session.py
Normal file
88
UI/ui_utils/user_session.py
Normal file
@@ -0,0 +1,88 @@
|
||||
#!/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] 用户已登出")
|
||||
Reference in New Issue
Block a user