|
|
@@ -3,18 +3,22 @@ package cn.iocoder.byzs.module.web.controller.admin.login;
|
|
|
import cn.hutool.core.util.StrUtil;
|
|
|
import cn.iocoder.byzs.framework.common.enums.CommonStatusEnum;
|
|
|
import cn.iocoder.byzs.framework.common.pojo.CommonResult;
|
|
|
+import cn.iocoder.byzs.framework.common.util.json.JsonUtils;
|
|
|
import cn.iocoder.byzs.framework.common.util.object.BeanUtils;
|
|
|
import cn.iocoder.byzs.framework.security.config.SecurityProperties;
|
|
|
import cn.iocoder.byzs.framework.security.core.util.SecurityFrameworkUtils;
|
|
|
import cn.iocoder.byzs.framework.tenant.core.aop.TenantIgnore;
|
|
|
+import cn.iocoder.byzs.framework.web.core.util.WebFrameworkUtils;
|
|
|
import cn.iocoder.byzs.module.system.controller.admin.auth.vo.AuthLoginReqVO;
|
|
|
import cn.iocoder.byzs.module.system.controller.admin.auth.vo.AuthLoginRespVO;
|
|
|
import cn.iocoder.byzs.module.system.controller.admin.auth.vo.AuthSmsLoginReqVO;
|
|
|
import cn.iocoder.byzs.module.system.controller.admin.auth.vo.AuthSmsSendReqVO;
|
|
|
+import cn.iocoder.byzs.module.system.dal.dataobject.dict.DictDataDO;
|
|
|
import cn.iocoder.byzs.module.system.dal.dataobject.permission.RoleDO;
|
|
|
import cn.iocoder.byzs.module.system.dal.dataobject.tenant.TenantDO;
|
|
|
import cn.iocoder.byzs.module.system.enums.logger.LoginLogTypeEnum;
|
|
|
import cn.iocoder.byzs.module.system.service.auth.AdminAuthService;
|
|
|
+import cn.iocoder.byzs.module.system.service.dict.DictDataService;
|
|
|
import cn.iocoder.byzs.module.system.service.permission.PermissionService;
|
|
|
import cn.iocoder.byzs.module.system.service.permission.RoleService;
|
|
|
import cn.iocoder.byzs.module.system.service.tenant.TenantService;
|
|
|
@@ -30,7 +34,9 @@ import org.springframework.web.bind.annotation.*;
|
|
|
|
|
|
import java.util.HashSet;
|
|
|
import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
import java.util.Set;
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
import static cn.iocoder.byzs.framework.common.pojo.CommonResult.success;
|
|
|
|
|
|
@@ -49,6 +55,8 @@ public class WebLoginController {
|
|
|
private PermissionService permissionService;
|
|
|
@Resource
|
|
|
private RoleService roleService;
|
|
|
+ @Resource
|
|
|
+ private DictDataService dictDataService;
|
|
|
|
|
|
|
|
|
@GetMapping("/getTenantIdByName")
|
|
|
@@ -95,12 +103,41 @@ public class WebLoginController {
|
|
|
return success(true);
|
|
|
}
|
|
|
|
|
|
+ @GetMapping("/getRoleRoute")
|
|
|
+ @Operation(summary = "根据用户ID,取角色路由")
|
|
|
+ public CommonResult<Set<String>> getRoleRoute() {
|
|
|
+ Set<Long> roleIds = permissionService.getUserRoleIdListByUserId(WebFrameworkUtils.getLoginUserId());
|
|
|
+ List<RoleDO> roles = roleService.getRoleList(roleIds);
|
|
|
+ roles.removeIf(role -> !CommonStatusEnum.ENABLE.getStatus().equals(role.getStatus())); // 移除禁用的角色
|
|
|
+
|
|
|
+ // 填充角色路由
|
|
|
+ Set<String> roleRouteSet = new HashSet<>();
|
|
|
+ for (RoleDO role : roles) {
|
|
|
+ if(role.getDataScopeWebRoute() != null && !role.getDataScopeWebRoute().isEmpty()){
|
|
|
+ roleRouteSet.addAll(role.getDataScopeWebRoute());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 如果roleRoutes为空,则从字典中获取默认路由
|
|
|
+ if (roleRouteSet.isEmpty()) {
|
|
|
+ List<DictDataDO> webRoleRoute = dictDataService.getDictDataListByDictType("web_role_route");
|
|
|
+ Set<String> roleRoute = webRoleRoute.stream().map(DictDataDO::getValue).collect(Collectors.toSet());
|
|
|
+ roleRouteSet.addAll(roleRoute);
|
|
|
+ }
|
|
|
+ return success(roleRouteSet);
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 填充课程数据权限
|
|
|
* @param login
|
|
|
* @return
|
|
|
*/
|
|
|
private AuthLoginVO setAuthRoleVO(AuthLoginRespVO login) {
|
|
|
+ AuthLoginVO authLoginVO = BeanUtils.toBean(login, AuthLoginVO.class);
|
|
|
+
|
|
|
+ // 已经在后台读取,这里无需重复读取
|
|
|
+ if (true) {
|
|
|
+ return authLoginVO;
|
|
|
+ }
|
|
|
|
|
|
// 获得角色列表
|
|
|
Set<Long> roleIds = permissionService.getUserRoleIdListByUserId(login.getUserId());
|
|
|
@@ -124,7 +161,6 @@ public class WebLoginController {
|
|
|
}
|
|
|
|
|
|
//填充课程数据权限
|
|
|
- AuthLoginVO authLoginVO = BeanUtils.toBean(login, AuthLoginVO.class);
|
|
|
authLoginVO.setCourseDataScope(allDataScopeCourseIds);
|
|
|
authLoginVO.setBlocklyDataScope(allDataScopeBlocklyIds);
|
|
|
return authLoginVO;
|