117 lines
3.0 KiB
Java
117 lines
3.0 KiB
Java
package com.starry.admin.utils;
|
|
|
|
|
|
import com.starry.admin.common.domain.LoginUser;
|
|
import com.starry.admin.common.security.entity.JwtUser;
|
|
import com.starry.admin.modules.system.module.entity.SysUserEntity;
|
|
import com.starry.common.context.CustomSecurityContextHolder;
|
|
import org.springframework.security.core.Authentication;
|
|
import org.springframework.security.core.context.SecurityContextHolder;
|
|
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
|
|
|
|
/**
|
|
* 安全服务工具类
|
|
*
|
|
* @author admin
|
|
*/
|
|
public class SecurityUtils {
|
|
/**
|
|
* 用户ID
|
|
**/
|
|
public static String getUserId() {
|
|
try {
|
|
return getLoginUser().getUser().getUserId();
|
|
} catch (Exception e) {
|
|
throw new RuntimeException("获取用户ID异常");
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 获取用户账户
|
|
**/
|
|
public static String getUsername() {
|
|
try {
|
|
return getLoginUser().getUsername();
|
|
} catch (Exception e) {
|
|
throw new RuntimeException("获取用户账户异常");
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 获取用户
|
|
**/
|
|
public static JwtUser getOldLoginUser() {
|
|
try {
|
|
return (JwtUser) getAuthentication().getPrincipal();
|
|
} catch (Exception e) {
|
|
throw new RuntimeException("获取用户信息异常");
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 获取用户
|
|
**/
|
|
public static LoginUser getLoginUser() {
|
|
try {
|
|
return (LoginUser) getAuthentication().getPrincipal();
|
|
} catch (Exception e) {
|
|
throw new RuntimeException("获取用户信息异常");
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 获取Authentication
|
|
*/
|
|
public static Authentication getAuthentication() {
|
|
return SecurityContextHolder.getContext().getAuthentication();
|
|
}
|
|
|
|
/**
|
|
* 是否登录
|
|
**/
|
|
public static boolean isLogin() {
|
|
return getAuthentication() != null && getAuthentication().getPrincipal() != null;
|
|
}
|
|
|
|
public static boolean isAdmin(SysUserEntity user) {
|
|
return user.getSuperAdmin();
|
|
}
|
|
|
|
/**
|
|
* 生成BCryptPasswordEncoder密码
|
|
*
|
|
* @param password 密码
|
|
* @return 加密字符串
|
|
*/
|
|
public static String encryptPassword(String password) {
|
|
BCryptPasswordEncoder passwordEncoder = new BCryptPasswordEncoder();
|
|
return passwordEncoder.encode(password);
|
|
}
|
|
|
|
/**
|
|
* 判断密码是否相同
|
|
*
|
|
* @param rawPassword 真实密码
|
|
* @param encodedPassword 加密后字符
|
|
* @return 结果
|
|
*/
|
|
public static boolean matchesPassword(String rawPassword, String encodedPassword) {
|
|
BCryptPasswordEncoder passwordEncoder = new BCryptPasswordEncoder();
|
|
return passwordEncoder.matches(rawPassword, encodedPassword);
|
|
}
|
|
|
|
/**
|
|
* 获取租户ID
|
|
*/
|
|
public static String getTenantId() {
|
|
return CustomSecurityContextHolder.getTenantId();
|
|
}
|
|
|
|
/**
|
|
* 设置租户ID
|
|
*/
|
|
public static void setTenantId(String tenantId) {
|
|
CustomSecurityContextHolder.setTenantId(tenantId);
|
|
}
|
|
}
|