#!/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] 用户已登出")