2021与蓝度共同重构项目,服务端
liuhaonan
2021-12-02 34768217f342b700f2da6c3be6df13465c68ab3b
ximon-admin/src/main/java/com/sandu/ximon/admin/security/SecurityUtils.java
@@ -15,8 +15,7 @@
import com.sandu.common.security.jwt.JwtTokenProvider;
import com.sandu.common.util.RequestHolder;
import com.sandu.common.util.SpringContextHolder;
import com.sandu.ximon.admin.dto.AdminJwtUser;
import com.sandu.ximon.dao.domain.Admin;
import com.sandu.ximon.dao.enums.AdministratorEnums;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.security.core.userdetails.UserDetails;
@@ -32,25 +31,32 @@
 */
public class SecurityUtils {
    public static UserDetails getUserDetails() {
    /**
     * 获取当前登录用户信息
     */
    private static UserDetails 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 UserDetails) {
        Integer administratorIdentity = getAdministratorIdentity();
        if (AdministratorEnums.ADMIN.getCode().equals(administratorIdentity)) {
            UserDetails userDetails = (UserDetails) authentication.getPrincipal();
            UserDetailsService userDetailsService = SpringContextHolder.getBean(UserDetailsService.class);
            UserDetailsService userDetailsService = SpringContextHolder.getBean("adminDetailsService");
            return userDetailsService.loadUserByUsername(userDetails.getUsername());
        } else if (AdministratorEnums.CUSTOMER.getCode().equals(administratorIdentity)) {
            UserDetails userDetails = (UserDetails) authentication.getPrincipal();
            UserDetailsService userDetailsService = SpringContextHolder.getBean("customerDetailsService");
            return userDetailsService.loadUserByUsername(userDetails.getUsername());
        }
        return null;
//        throw new BusinessException(ResponseStatusEnums.TOKEN_INVALID.getCode(), ResponseStatusEnums.TOKEN_INVALID.getMessage());
    }
    /**
     * 获取系统用户名称 登录名
     * 获取当前登录用户登录名
     *
     * @return 系统用户名称
     * @return 当前登录用户登录名
     */
    public static String getUsername() {
        final Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
@@ -62,9 +68,22 @@
    }
    /**
     * 获取系统用户id
     * 获取管理员身份, 类型可见 {{@link AdministratorEnums}}
     *
     * @return 系统用户id
     * @return
     */
    public static Integer getAdministratorIdentity() {
        final Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
        if (authentication == null) {
            throw new BusinessException(ResponseStatusEnums.TOKEN_INVALID.getCode(), ResponseStatusEnums.TOKEN_INVALID.getMessage());
        }
        return (Integer) authentication.getCredentials();
    }
    /**
     * 获取当前登录账号的id
     *
     * @return 当前登录账号的id
     */
    public static Long getUserId() {
        SecurityProperties properties = SpringContextHolder.getBean(SecurityProperties.class);
@@ -91,4 +110,12 @@
            }
        }
    }
    public static Long getClientId() {
        Integer administratorIdentity = SecurityUtils.getAdministratorIdentity();
        if (AdministratorEnums.CUSTOMER.getCode().equals(administratorIdentity)) {
            return SecurityUtils.getUserId();
        }
        return null;
    }
}