package com.sandu.ximon.admin.security; import com.sandu.common.enums.ResponseStatusEnums; import com.sandu.common.execption.BusinessException; import com.sandu.common.security.LoginUserInfo; import com.sandu.ximon.dao.enums.AdministratorEnums; import org.springframework.security.core.Authentication; import org.springframework.security.core.context.SecurityContextHolder; /** * 获取当前登录的用户 * * @author Zheng Jie * @date 2019-01-17 */ public class SecurityUtils { /** * 获取当前登录用户信息 */ public static LoginUserInfo getUserDetails() { final Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); if (authentication == null) { throw new BusinessException(ResponseStatusEnums.TOKEN_INVALID.getCode(), ResponseStatusEnums.TOKEN_INVALID.getMessage()); } if (authentication.getPrincipal() instanceof LoginUserInfo) { LoginUserInfo loginUserInfo = (LoginUserInfo) authentication.getPrincipal(); if (!loginUserInfo.isEnabled()) { throw new BusinessException(ResponseStatusEnums.DISABLE_ACCOUNT.getCode(), ResponseStatusEnums.DISABLE_ACCOUNT.getMessage()); } return loginUserInfo; } return null; } /** * 获取当前登录用户登录名 * * @return 当前登录用户登录名 */ public static String getUsername() { LoginUserInfo loginUserInfo = getUserDetails(); if (loginUserInfo != null) { return loginUserInfo.getUsername(); } return null; } /** * 获取管理员身份, 类型可见 {{@link AdministratorEnums}} * * @return */ public static Integer getAdministratorIdentity() { LoginUserInfo loginUserInfo = getUserDetails(); if (loginUserInfo == null) { throw new BusinessException(ResponseStatusEnums.TOKEN_INVALID.getCode(), ResponseStatusEnums.TOKEN_INVALID.getMessage()); } return loginUserInfo.getAdministratorType(); } /** * 获取当前登录账号的id * * @return 当前登录账号的id */ public static Long getUserId() { LoginUserInfo loginUserInfo = getUserDetails(); if (loginUserInfo != null) { return loginUserInfo.getUserId(); } return null; } /** * 获取客户账号的id 如果当前身份是运营人员,返回null * * @return */ public static Long getClientId() { LoginUserInfo loginUserInfo = getUserDetails(); if (loginUserInfo == null) { return null; } if (!AdministratorEnums.ADMIN.getCode().equals(loginUserInfo.getAdministratorType())) { return loginUserInfo.getUserId(); } return null; } }