|
|
@@ -1,7 +1,9 @@
|
|
|
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.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;
|
|
|
@@ -9,10 +11,14 @@ 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.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.permission.PermissionService;
|
|
|
+import cn.iocoder.byzs.module.system.service.permission.RoleService;
|
|
|
import cn.iocoder.byzs.module.system.service.tenant.TenantService;
|
|
|
+import cn.iocoder.byzs.module.web.controller.admin.login.vo.AuthLoginVO;
|
|
|
import io.swagger.v3.oas.annotations.Operation;
|
|
|
import io.swagger.v3.oas.annotations.Parameter;
|
|
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
|
|
@@ -22,6 +28,10 @@ import jakarta.servlet.http.HttpServletRequest;
|
|
|
import jakarta.validation.Valid;
|
|
|
import org.springframework.web.bind.annotation.*;
|
|
|
|
|
|
+import java.util.HashSet;
|
|
|
+import java.util.List;
|
|
|
+import java.util.Set;
|
|
|
+
|
|
|
import static cn.iocoder.byzs.framework.common.pojo.CommonResult.success;
|
|
|
|
|
|
@Tag(name = "前端")
|
|
|
@@ -35,6 +45,10 @@ public class WebLoginController {
|
|
|
private AdminAuthService authService;
|
|
|
@Resource
|
|
|
private SecurityProperties securityProperties;
|
|
|
+ @Resource
|
|
|
+ private PermissionService permissionService;
|
|
|
+ @Resource
|
|
|
+ private RoleService roleService;
|
|
|
|
|
|
|
|
|
@GetMapping("/getTenantIdByName")
|
|
|
@@ -50,15 +64,15 @@ public class WebLoginController {
|
|
|
@PostMapping("/login")
|
|
|
@PermitAll
|
|
|
@Operation(summary = "使用账号密码登录")
|
|
|
- public CommonResult<AuthLoginRespVO> login(@RequestBody @Valid AuthLoginReqVO reqVO) {
|
|
|
- return success(authService.login(reqVO));
|
|
|
+ public CommonResult<AuthLoginVO> login(@RequestBody @Valid AuthLoginReqVO reqVO) {
|
|
|
+ return success(setAuthRoleVO(authService.login(reqVO)));
|
|
|
}
|
|
|
|
|
|
@PostMapping("/sms-login")
|
|
|
@PermitAll
|
|
|
@Operation(summary = "使用短信验证码登录")
|
|
|
- public CommonResult<AuthLoginRespVO> smsLogin(@RequestBody @Valid AuthSmsLoginReqVO reqVO) {
|
|
|
- return success(authService.smsLogin(reqVO));
|
|
|
+ public CommonResult<AuthLoginVO> smsLogin(@RequestBody @Valid AuthSmsLoginReqVO reqVO) {
|
|
|
+ return success(setAuthRoleVO(authService.smsLogin(reqVO)));
|
|
|
}
|
|
|
|
|
|
@PostMapping("/send-sms-code")
|
|
|
@@ -80,4 +94,31 @@ public class WebLoginController {
|
|
|
}
|
|
|
return success(true);
|
|
|
}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 填充课程数据权限
|
|
|
+ * @param login
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ private AuthLoginVO setAuthRoleVO(AuthLoginRespVO login) {
|
|
|
+
|
|
|
+ // 获得角色列表
|
|
|
+ Set<Long> roleIds = permissionService.getUserRoleIdListByUserId(login.getUserId());
|
|
|
+ List<RoleDO> roles = roleService.getRoleList(roleIds);
|
|
|
+ roles.removeIf(role -> !CommonStatusEnum.ENABLE.getStatus().equals(role.getStatus())); // 移除禁用的角色
|
|
|
+
|
|
|
+ // 将所有角色的dataScopeCourseIds拼接成一个Set集合
|
|
|
+ Set<Long> allDataScopeCourseIds = new HashSet<>();
|
|
|
+ for (RoleDO role : roles) {
|
|
|
+ Set<Long> dataScopeCourseIds = role.getDataScopeCourseIds();
|
|
|
+ if (dataScopeCourseIds != null && !dataScopeCourseIds.isEmpty()) {
|
|
|
+ allDataScopeCourseIds.addAll(dataScopeCourseIds);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ //填充课程数据权限
|
|
|
+ AuthLoginVO authLoginVO = BeanUtils.toBean(login, AuthLoginVO.class);
|
|
|
+ authLoginVO.setCourseDataScope(allDataScopeCourseIds);
|
|
|
+ return authLoginVO;
|
|
|
+ }
|
|
|
}
|