mirror of
https://gitee.com/zhijiantianya/ruoyi-vue-pro.git
synced 2026-03-22 05:07:17 +08:00
Merge remote-tracking branch 'origin/master' into master-alipaymini
# Conflicts: # sql/mysql/ruoyi-vue-pro.sql
This commit is contained in:
@@ -32,4 +32,9 @@ public interface OAuth2AccessTokenMapper extends BaseMapperX<OAuth2AccessTokenDO
|
||||
.orderByDesc(OAuth2AccessTokenDO::getId));
|
||||
}
|
||||
|
||||
default List<OAuth2AccessTokenDO> selectListByUserIdAndUserType(Long userId, Integer userType) {
|
||||
return selectList(OAuth2AccessTokenDO::getUserId, userId,
|
||||
OAuth2AccessTokenDO::getUserType, userType);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -69,6 +69,17 @@ public interface OAuth2TokenService {
|
||||
*/
|
||||
OAuth2AccessTokenDO removeAccessToken(String accessToken);
|
||||
|
||||
/**
|
||||
* 移除访问令牌
|
||||
* 注意:该流程中,会移除相关的刷新令牌
|
||||
*
|
||||
* 参考 DefaultTokenServices 的 revokeToken 方法
|
||||
*
|
||||
* @param userId 用户编号
|
||||
* @param userType 用户类型
|
||||
*/
|
||||
void removeAccessToken(Long userId, Integer userType);
|
||||
|
||||
/**
|
||||
* 获得访问令牌分页
|
||||
*
|
||||
|
||||
@@ -153,6 +153,21 @@ public class OAuth2TokenServiceImpl implements OAuth2TokenService {
|
||||
return accessTokenDO;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removeAccessToken(Long userId, Integer userType) {
|
||||
List<OAuth2AccessTokenDO> accessTokens = oauth2AccessTokenMapper.selectListByUserIdAndUserType(userId, userType);
|
||||
if (CollUtil.isEmpty(accessTokens)) {
|
||||
return;
|
||||
}
|
||||
accessTokens.forEach(accessToken -> {
|
||||
// 删除访问令牌
|
||||
oauth2AccessTokenMapper.deleteById(accessToken.getId());
|
||||
oauth2AccessTokenRedisDAO.delete(accessToken.getAccessToken());
|
||||
// 删除刷新令牌
|
||||
oauth2RefreshTokenMapper.deleteByRefreshToken(accessToken.getRefreshToken());
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public PageResult<OAuth2AccessTokenDO> getAccessTokenPage(OAuth2AccessTokenPageReqVO reqVO) {
|
||||
return oauth2AccessTokenMapper.selectPage(reqVO);
|
||||
|
||||
@@ -102,8 +102,8 @@ public class SocialClientServiceImpl implements SocialClientService {
|
||||
@Value("${yudao.wxa-subscribe-message.miniprogram-state:formal}")
|
||||
public String miniprogramState;
|
||||
|
||||
// @Resource
|
||||
@Autowired // TODO @芋艿:等 justauth1.4.1 发布,可以去掉
|
||||
@SuppressWarnings("SpringJavaAutowiredFieldsWarningInspection")
|
||||
@Autowired(required = false) // 由于 justauth.enable 配置项,可以关闭 AuthRequestFactory 的功能,所以这里只能不强制注入
|
||||
private AuthRequestFactory authRequestFactory;
|
||||
|
||||
@Resource
|
||||
|
||||
@@ -153,6 +153,7 @@ public class SocialUserServiceImpl implements SocialUserService {
|
||||
if (socialUser.getId() == null) {
|
||||
socialUserMapper.insert(socialUser);
|
||||
} else {
|
||||
socialUser.clean(); // 避免 updateTime 不更新:https://gitee.com/yudaocode/yudao-boot-mini/issues/ID7FUL
|
||||
socialUserMapper.updateById(socialUser);
|
||||
}
|
||||
return socialUser;
|
||||
|
||||
@@ -5,6 +5,7 @@ import cn.hutool.core.collection.CollectionUtil;
|
||||
import cn.hutool.core.util.ObjUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
|
||||
import cn.iocoder.yudao.framework.common.enums.UserTypeEnum;
|
||||
import cn.iocoder.yudao.framework.common.exception.ServiceException;
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||
import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
|
||||
@@ -26,6 +27,7 @@ import cn.iocoder.yudao.module.system.dal.mysql.dept.UserPostMapper;
|
||||
import cn.iocoder.yudao.module.system.dal.mysql.user.AdminUserMapper;
|
||||
import cn.iocoder.yudao.module.system.service.dept.DeptService;
|
||||
import cn.iocoder.yudao.module.system.service.dept.PostService;
|
||||
import cn.iocoder.yudao.module.system.service.oauth2.OAuth2TokenService;
|
||||
import cn.iocoder.yudao.module.system.service.permission.PermissionService;
|
||||
import cn.iocoder.yudao.module.system.service.tenant.TenantService;
|
||||
import com.google.common.annotations.VisibleForTesting;
|
||||
@@ -75,6 +77,9 @@ public class AdminUserServiceImpl implements AdminUserService {
|
||||
@Resource
|
||||
@Lazy // 延迟,避免循环依赖报错
|
||||
private TenantService tenantService;
|
||||
@Resource
|
||||
@Lazy // 懒加载,避免循环依赖
|
||||
private OAuth2TokenService oauth2TokenService;
|
||||
|
||||
@Resource
|
||||
private UserPostMapper userPostMapper;
|
||||
@@ -227,6 +232,11 @@ public class AdminUserServiceImpl implements AdminUserService {
|
||||
updateObj.setId(id);
|
||||
updateObj.setStatus(status);
|
||||
userMapper.updateById(updateObj);
|
||||
|
||||
// 如果是禁用用户,则删除其 Token 信息
|
||||
if (CommonStatusEnum.isDisable(status)) {
|
||||
oauth2TokenService.removeAccessToken(id, UserTypeEnum.ADMIN.getValue());
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -276,7 +286,9 @@ public class AdminUserServiceImpl implements AdminUserService {
|
||||
// 如果有角色编号,查询角色对应的用户编号
|
||||
Set<Long> userIds = reqVO.getRoleId() != null ?
|
||||
permissionService.getUserRoleIdListByRoleId(singleton(reqVO.getRoleId())) : null;
|
||||
|
||||
if (userIds != null && userIds.isEmpty()) {
|
||||
return PageResult.empty();
|
||||
}
|
||||
// 分页查询
|
||||
return userMapper.selectPage(reqVO, getDeptCondition(reqVO.getDeptId()), userIds);
|
||||
}
|
||||
|
||||
@@ -25,6 +25,7 @@ import cn.iocoder.yudao.module.system.dal.mysql.user.AdminUserMapper;
|
||||
import cn.iocoder.yudao.module.system.enums.common.SexEnum;
|
||||
import cn.iocoder.yudao.module.system.service.dept.DeptService;
|
||||
import cn.iocoder.yudao.module.system.service.dept.PostService;
|
||||
import cn.iocoder.yudao.module.system.service.oauth2.OAuth2TokenService;
|
||||
import cn.iocoder.yudao.module.system.service.permission.PermissionService;
|
||||
import cn.iocoder.yudao.module.system.service.tenant.TenantService;
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
@@ -82,6 +83,8 @@ public class AdminUserServiceImplTest extends BaseDbUnitTest {
|
||||
private FileApi fileApi;
|
||||
@MockBean
|
||||
private ConfigApi configApi;
|
||||
@MockBean
|
||||
private OAuth2TokenService oauth2TokenService;
|
||||
|
||||
@BeforeEach
|
||||
public void before() {
|
||||
|
||||
Reference in New Issue
Block a user