Merge remote-tracking branch 'origin/dev' into future/flowable

This commit is contained in:
疯狂的狮子Li 2023-11-30 13:25:00 +08:00
commit d6886461dd
6 changed files with 40 additions and 37 deletions

View File

@ -52,7 +52,6 @@ import java.util.concurrent.TimeUnit;
*/ */
@Slf4j @Slf4j
@SaIgnore @SaIgnore
@Validated
@RequiredArgsConstructor @RequiredArgsConstructor
@RestController @RestController
@RequestMapping("/auth") @RequestMapping("/auth")
@ -76,7 +75,7 @@ public class AuthController {
*/ */
@ApiEncrypt @ApiEncrypt
@PostMapping("/login") @PostMapping("/login")
public R<LoginVo> login(@Validated @RequestBody String body) { public R<LoginVo> login(@RequestBody String body) {
LoginBody loginBody = JsonUtils.parseObject(body, LoginBody.class); LoginBody loginBody = JsonUtils.parseObject(body, LoginBody.class);
ValidatorUtils.validate(loginBody); ValidatorUtils.validate(loginBody);
// 授权类型和客户端id // 授权类型和客户端id

View File

@ -97,6 +97,9 @@ public class SysLoginService {
public void logout() { public void logout() {
try { try {
LoginUser loginUser = LoginHelper.getLoginUser(); LoginUser loginUser = LoginHelper.getLoginUser();
if (ObjectUtil.isNull(loginUser)) {
return;
}
if (TenantHelper.isEnable() && LoginHelper.isSuperAdmin()) { if (TenantHelper.isEnable() && LoginHelper.isSuperAdmin()) {
// 超级管理员 登出清除动态租户 // 超级管理员 登出清除动态租户
TenantHelper.clearDynamic(); TenantHelper.clearDynamic();

View File

@ -66,12 +66,6 @@
<artifactId>hutool-extra</artifactId> <artifactId>hutool-extra</artifactId>
</dependency> </dependency>
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-json</artifactId>
<scope>provided</scope>
</dependency>
<dependency> <dependency>
<groupId>org.projectlombok</groupId> <groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId> <artifactId>lombok</artifactId>

View File

@ -15,6 +15,7 @@ import org.dromara.common.core.domain.model.LoginUser;
import org.dromara.common.core.enums.UserType; import org.dromara.common.core.enums.UserType;
import java.util.Set; import java.util.Set;
import java.util.function.Supplier;
/** /**
* 登录鉴权助手 * 登录鉴权助手
@ -36,6 +37,7 @@ public class LoginHelper {
public static final String USER_KEY = "userId"; public static final String USER_KEY = "userId";
public static final String DEPT_KEY = "deptId"; public static final String DEPT_KEY = "deptId";
public static final String CLIENT_KEY = "clientid"; public static final String CLIENT_KEY = "clientid";
public static final String TENANT_ADMIN_KEY = "isTenantAdmin";
/** /**
* 登录系统 基于 设备类型 * 登录系统 基于 设备类型
@ -55,32 +57,27 @@ public class LoginHelper {
model.setExtra(TENANT_KEY, loginUser.getTenantId()) model.setExtra(TENANT_KEY, loginUser.getTenantId())
.setExtra(USER_KEY, loginUser.getUserId()) .setExtra(USER_KEY, loginUser.getUserId())
.setExtra(DEPT_KEY, loginUser.getDeptId())); .setExtra(DEPT_KEY, loginUser.getDeptId()));
StpUtil.getSession().set(LOGIN_USER_KEY, loginUser); StpUtil.getTokenSession().set(LOGIN_USER_KEY, loginUser);
} }
/** /**
* 获取用户(多级缓存) * 获取用户(多级缓存)
*/ */
public static LoginUser getLoginUser() { public static LoginUser getLoginUser() {
LoginUser loginUser = (LoginUser) SaHolder.getStorage().get(LOGIN_USER_KEY); return (LoginUser) getStorageIfAbsentSet(LOGIN_USER_KEY, () -> {
if (loginUser != null) { SaSession session = StpUtil.getTokenSession();
return loginUser;
}
SaSession session = StpUtil.getSession();
if (ObjectUtil.isNull(session)) { if (ObjectUtil.isNull(session)) {
return null; return null;
} }
loginUser = (LoginUser) session.get(LOGIN_USER_KEY); return session.get(LOGIN_USER_KEY);
SaHolder.getStorage().set(LOGIN_USER_KEY, loginUser); });
return loginUser;
} }
/** /**
* 获取用户基于token * 获取用户基于token
*/ */
public static LoginUser getLoginUser(String token) { public static LoginUser getLoginUser(String token) {
Object loginId = StpUtil.getLoginIdByToken(token); SaSession session = StpUtil.getTokenSessionByToken(token);
SaSession session = StpUtil.getSessionByLoginId(loginId);
if (ObjectUtil.isNull(session)) { if (ObjectUtil.isNull(session)) {
return null; return null;
} }
@ -109,17 +106,7 @@ public class LoginHelper {
} }
private static Object getExtra(String key) { private static Object getExtra(String key) {
Object obj; return getStorageIfAbsentSet(key, () -> StpUtil.getExtra(key));
try {
obj = SaHolder.getStorage().get(key);
if (ObjectUtil.isNull(obj)) {
obj = StpUtil.getExtra(key);
SaHolder.getStorage().set(key, obj);
}
} catch (Exception e) {
return null;
}
return obj;
} }
/** /**
@ -162,7 +149,26 @@ public class LoginHelper {
} }
public static boolean isTenantAdmin() { public static boolean isTenantAdmin() {
Object value = getStorageIfAbsentSet(TENANT_ADMIN_KEY, () -> {
return isTenantAdmin(getLoginUser().getRolePermission()); return isTenantAdmin(getLoginUser().getRolePermission());
});
return Convert.toBool(value);
} }
public static boolean isLogin() {
return getLoginUser() != null;
}
public static Object getStorageIfAbsentSet(String key, Supplier<Object> handle) {
try {
Object obj = SaHolder.getStorage().get(key);
if (ObjectUtil.isNull(obj)) {
obj = handle.get();
SaHolder.getStorage().set(key, obj);
}
return obj;
} catch (Exception e) {
return null;
}
}
} }

View File

@ -62,11 +62,12 @@ public class SysProfileController extends BaseController {
@PutMapping @PutMapping
public R<Void> updateProfile(@RequestBody SysUserProfileBo profile) { public R<Void> updateProfile(@RequestBody SysUserProfileBo profile) {
SysUserBo user = BeanUtil.toBean(profile, SysUserBo.class); SysUserBo user = BeanUtil.toBean(profile, SysUserBo.class);
String username = LoginHelper.getUsername();
if (StringUtils.isNotEmpty(user.getPhonenumber()) && !userService.checkPhoneUnique(user)) { if (StringUtils.isNotEmpty(user.getPhonenumber()) && !userService.checkPhoneUnique(user)) {
return R.fail("修改用户'" + user.getUserName() + "'失败,手机号码已存在"); return R.fail("修改用户'" + username + "'失败,手机号码已存在");
} }
if (StringUtils.isNotEmpty(user.getEmail()) && !userService.checkEmailUnique(user)) { if (StringUtils.isNotEmpty(user.getEmail()) && !userService.checkEmailUnique(user)) {
return R.fail("修改用户'" + user.getUserName() + "'失败,邮箱账号已存在"); return R.fail("修改用户'" + username + "'失败,邮箱账号已存在");
} }
user.setUserId(LoginHelper.getUserId()); user.setUserId(LoginHelper.getUserId());
if (userService.updateUserProfile(user) > 0) { if (userService.updateUserProfile(user) > 0) {

View File

@ -23,7 +23,7 @@ public class SysSensitiveServiceImpl implements SensitiveService {
*/ */
@Override @Override
public boolean isSensitive(String roleKey, String perms) { public boolean isSensitive(String roleKey, String perms) {
if (!StpUtil.isLogin()) { if (!LoginHelper.isLogin()) {
return true; return true;
} }
boolean roleExist = StringUtils.isNotBlank(roleKey); boolean roleExist = StringUtils.isNotBlank(roleKey);