mirror of
https://gitee.com/dromara/RuoYi-Vue-Plus.git
synced 2026-09-21 02:25:56 +08:00
Merge remote-tracking branch 'origin/dev' into future/flowable
This commit is contained in:
commit
d6886461dd
@ -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
|
||||||
|
|||||||
@ -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();
|
||||||
|
|||||||
@ -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>
|
||||||
|
|||||||
@ -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;
|
if (ObjectUtil.isNull(session)) {
|
||||||
}
|
return null;
|
||||||
SaSession session = StpUtil.getSession();
|
}
|
||||||
if (ObjectUtil.isNull(session)) {
|
return session.get(LOGIN_USER_KEY);
|
||||||
return null;
|
});
|
||||||
}
|
|
||||||
loginUser = (LoginUser) 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() {
|
||||||
return isTenantAdmin(getLoginUser().getRolePermission());
|
Object value = getStorageIfAbsentSet(TENANT_ADMIN_KEY, () -> {
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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) {
|
||||||
|
|||||||
@ -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);
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user