Class SecurityContext

java.lang.Object
com.elitesland.ystdms.sys.security.SecurityContext

public class SecurityContext extends Object
Security 上下文工具类 提供从 JWT Token 中获取用户信息的能力,以及通过 Feign 获取扩展信息
  • Constructor Details

    • SecurityContext

      public SecurityContext()
  • Method Details

    • setSecurityContextService

      public static void setSecurityContextService(SecurityContextService service)
      设置 SecurityContextService 实例 通过配置类手动调用
    • setJwt

      public static void setJwt(org.springframework.security.oauth2.jwt.Jwt jwt)
    • getJwt

      public static org.springframework.security.oauth2.jwt.Jwt getJwt()
    • setRawToken

      public static void setRawToken(String token)
      设置原始令牌字符串 用于JWT解析失败时仍能将令牌传递给Feign调用
      Parameters:
      token - 原始JWT令牌字符串
    • setExternalUser

      public static void setExternalUser(SysUserDTO user)
      设置外部系统的用户信息 当JWT解析失败(外部系统的令牌)时,通过Feign获取用户信息后设置
      Parameters:
      user - 外部系统用户信息
    • getExternalUser

      public static SysUserDTO getExternalUser()
      获取外部系统的用户信息
      Returns:
      外部系统用户信息,如果不存在则返回null
    • setSysEmployee

      public static void setSysEmployee(SysEmployeeDTO employee)
      设置本地系统的员工信息(SysEmployee) 通过NewUserId从sys_employee表查询,用于填充CurrentUserContext
      Parameters:
      employee - 本地员工信息
    • getSysEmployee

      public static SysEmployeeDTO getSysEmployee()
      获取本地系统的员工信息(SysEmployee)
      Returns:
      本地员工信息,如果不存在则返回null
    • setSysUser

      public static void setSysUser(SysUserBasicDTO user)
      设置本地系统的用户信息(SysUserBasicDTO) 通过username从sys_user表查询,用于覆盖外部系统的用户信息
      Parameters:
      user - 本地SysUser信息
    • getSysUser

      public static SysUserBasicDTO getSysUser()
      获取本地系统的用户信息(SysUserBasicDTO)
      Returns:
      本地SysUser信息,如果不存在则返回null
    • getSysUserByUsername

      public static SysUserBasicDTO getSysUserByUsername(String username)
      根据用户名查询SysUser记录(从本系统sys_user表) 用于JWT解析后获取本地用户信息,确保用户信息以本系统为准
      Parameters:
      username - 用户名
      Returns:
      SysUserBasicDTO,如果不存在则返回null
    • getNewUserIdByUsername

      @Deprecated public static UUID getNewUserIdByUsername(String username)
      Deprecated.
      根据用户名获取SysUser的UUID类型的ID(NewUserId) 用于外部系统JWT解析后获取本地用户ID
      Parameters:
      username - 用户名
      Returns:
      SysUser的UUID类型的ID,如果不存在则返回null
    • getRawToken

      public static String getRawToken()
      获取原始令牌字符串 优先返回已解析的JWT令牌,如果不存在则返回原始令牌字符串
      Returns:
      令牌字符串,如果都没有则返回null
    • hasToken

      public static boolean hasToken()
      判断是否有令牌(无论是解析后的JWT还是原始令牌)
    • clear

      public static void clear()
    • getSubject

      public static String getSubject()
    • getUserId

      public static String getUserId()
      获取用户ID(从JWT的subject中获取)
    • getUsername

      public static String getUsername()
      获取用户名
    • getDept

      public static String getDept()
      获取部门
    • getRoles

      public static List<String> getRoles()
      获取角色列表
    • getTokenType

      public static String getTokenType()
      获取Token类型
    • isAuthenticated

      public static boolean isAuthenticated()
      判断当前是否已认证(有有效的JWT或有外部系统用户信息或有本地用户信息)
    • getClaim

      public static <T> T getClaim(String claimName)
    • getCurrentEmployee

      public static SysEmployeeDTO getCurrentEmployee()
      获取当前登录用户的员工信息
      Returns:
      员工信息,如果未登录或查询失败则返回 null
    • getEmployee

      public static SysEmployeeDTO getEmployee(String username)
      获取指定用户的员工信息
      Parameters:
      username - 用户名
      Returns:
      员工信息,如果查询失败则返回 null
    • getEmployeeByUserId

      public static SysEmployeeDTO getEmployeeByUserId(UUID userId)
      根据 userId 获取员工信息
    • getEmployeeByMobile

      public static SysEmployeeDTO getEmployeeByMobile(String mobile)
      根据手机号获取员工信息
    • getCurrentOrg

      public static SysOrgRespRpcDTO getCurrentOrg()
      获取当前用户所属的组织信息
      Returns:
      组织信息,如果未登录或查询失败则返回 null
    • getOrg

      public static SysOrgRespRpcDTO getOrg(UUID orgId)
      获取指定ID的组织信息
      Parameters:
      orgId - 组织ID
      Returns:
      组织信息,如果查询失败则返回 null
    • getOrgByCode

      public static SysOrgRespRpcDTO getOrgByCode(String code)
      根据组织编码获取组织信息
      Parameters:
      code - 组织编码
      Returns:
      组织信息,如果查询失败则返回 null
    • getCurrentOu

      public static List<SysOuDTO> getCurrentOu()
      获取当前用户所属的公司信息
      Returns:
      公司信息列表,如果未登录或查询失败则返回 null
    • getAllOu

      public static List<SysOuDTO> getAllOu()
      获取所有公司信息
      Returns:
      公司信息列表,如果查询失败则返回 null
    • getEmployeeOrgs

      public static List<SysOrgRespRpcDTO> getEmployeeOrgs(UUID employeeId)
      获取员工的所有部门信息(通过 sys_employee_org 关联表查询)
      Parameters:
      employeeId - 员工ID
      Returns:
      部门信息列表,如果查询失败则返回 null
    • getCurrentEmployeeOrgs

      public static List<SysOrgRespRpcDTO> getCurrentEmployeeOrgs()
      获取当前员工的所有部门信息
      Returns:
      部门信息列表,如果查询失败则返回 null