|
@@ -1,29 +1,22 @@
|
|
|
package cn.iocoder.yudao.adminserver.modules.system.controller.auth;
|
|
|
|
|
|
-import cn.hutool.core.net.url.UrlBuilder;
|
|
|
-import cn.hutool.http.HttpUtil;
|
|
|
import cn.hutool.json.JSONUtil;
|
|
|
-import cn.iocoder.yudao.adminserver.modules.system.enums.user.SysUserSocialTypeEnum;
|
|
|
-import cn.iocoder.yudao.adminserver.modules.system.service.auth.SysUserSessionService;
|
|
|
-import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
|
|
|
-import cn.iocoder.yudao.framework.common.pojo.CommonResult;
|
|
|
-import cn.iocoder.yudao.framework.common.util.http.HttpUtils;
|
|
|
-import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog;
|
|
|
-import cn.iocoder.yudao.adminserver.modules.system.controller.auth.vo.auth.SysAuthLoginReqVO;
|
|
|
-import cn.iocoder.yudao.adminserver.modules.system.controller.auth.vo.auth.SysAuthLoginRespVO;
|
|
|
-import cn.iocoder.yudao.adminserver.modules.system.controller.auth.vo.auth.SysAuthMenuRespVO;
|
|
|
-import cn.iocoder.yudao.adminserver.modules.system.controller.auth.vo.auth.SysAuthPermissionInfoRespVO;
|
|
|
+import cn.iocoder.yudao.adminserver.modules.system.controller.auth.vo.auth.*;
|
|
|
import cn.iocoder.yudao.adminserver.modules.system.convert.auth.SysAuthConvert;
|
|
|
import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.permission.SysMenuDO;
|
|
|
import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.permission.SysRoleDO;
|
|
|
import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.user.SysUserDO;
|
|
|
import cn.iocoder.yudao.adminserver.modules.system.enums.permission.MenuTypeEnum;
|
|
|
+import cn.iocoder.yudao.adminserver.modules.system.enums.user.SysUserSocialTypeEnum;
|
|
|
import cn.iocoder.yudao.adminserver.modules.system.service.auth.SysAuthService;
|
|
|
import cn.iocoder.yudao.adminserver.modules.system.service.permission.SysPermissionService;
|
|
|
import cn.iocoder.yudao.adminserver.modules.system.service.permission.SysRoleService;
|
|
|
import cn.iocoder.yudao.adminserver.modules.system.service.user.SysUserService;
|
|
|
+import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
|
|
|
+import cn.iocoder.yudao.framework.common.pojo.CommonResult;
|
|
|
import cn.iocoder.yudao.framework.common.util.collection.SetUtils;
|
|
|
-import com.aliyuncs.CommonResponse;
|
|
|
+import cn.iocoder.yudao.framework.common.util.http.HttpUtils;
|
|
|
+import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog;
|
|
|
import com.xkcoding.justauth.AuthRequestFactory;
|
|
|
import io.swagger.annotations.Api;
|
|
|
import io.swagger.annotations.ApiImplicitParam;
|
|
@@ -35,26 +28,18 @@ import me.zhyd.oauth.model.AuthResponse;
|
|
|
import me.zhyd.oauth.model.AuthUser;
|
|
|
import me.zhyd.oauth.request.AuthRequest;
|
|
|
import me.zhyd.oauth.utils.AuthStateUtils;
|
|
|
-import org.apache.commons.lang.StringUtils;
|
|
|
-import org.quartz.SimpleTrigger;
|
|
|
import org.springframework.validation.annotation.Validated;
|
|
|
import org.springframework.web.bind.annotation.*;
|
|
|
-import org.springframework.web.multipart.MultipartFile;
|
|
|
-import org.springframework.web.util.UriBuilder;
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
|
-import javax.servlet.http.HttpServletResponse;
|
|
|
import javax.validation.Valid;
|
|
|
-import java.io.IOException;
|
|
|
-import java.net.URL;
|
|
|
-import java.nio.charset.Charset;
|
|
|
import java.util.List;
|
|
|
|
|
|
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
|
|
|
-import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId;
|
|
|
-import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUserRoleIds;
|
|
|
import static cn.iocoder.yudao.framework.common.util.servlet.ServletUtils.getClientIP;
|
|
|
import static cn.iocoder.yudao.framework.common.util.servlet.ServletUtils.getUserAgent;
|
|
|
+import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId;
|
|
|
+import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUserRoleIds;
|
|
|
|
|
|
@Api(tags = "认证")
|
|
|
@RestController
|
|
@@ -71,8 +56,6 @@ public class SysAuthController {
|
|
|
private SysRoleService roleService;
|
|
|
@Resource
|
|
|
private SysPermissionService permissionService;
|
|
|
- @Resource
|
|
|
- private SysUserSessionService sysUserSessionService;
|
|
|
|
|
|
@Resource
|
|
|
private AuthRequestFactory authRequestFactory;
|
|
@@ -86,42 +69,6 @@ public class SysAuthController {
|
|
|
return success(SysAuthLoginRespVO.builder().token(token).build());
|
|
|
}
|
|
|
|
|
|
- @GetMapping("/third-login-redirect")
|
|
|
- @ApiOperation("三方登陆的跳转")
|
|
|
- @ApiImplicitParams({
|
|
|
- @ApiImplicitParam(name = "type", value = "三方类型", required = true, dataTypeClass = Integer.class),
|
|
|
- @ApiImplicitParam(name = "redirectUri", value = "回调路径", dataTypeClass = String.class)
|
|
|
- })
|
|
|
- public CommonResult<String> login(@RequestParam("type") Integer type,
|
|
|
- @RequestParam("redirectUri") String redirectUri) throws IOException {
|
|
|
- // 获得对应的 AuthRequest 实现
|
|
|
- AuthRequest authRequest = authRequestFactory.get(SysUserSocialTypeEnum.valueOfType(type).getSource());
|
|
|
- // 生成跳转地址
|
|
|
- String authorizeUri = authRequest.authorize(AuthStateUtils.createState());
|
|
|
- authorizeUri = HttpUtils.replaceUrlQuery(authorizeUri, "redirect_uri", redirectUri);
|
|
|
-// authorizeUri = UrlBuilder.fromBaseUrl(authorizeUri).queryParam("redirect_uri", redirectUri).build();
|
|
|
- return CommonResult.success(authorizeUri);
|
|
|
- }
|
|
|
-
|
|
|
- @RequestMapping("/{type}/callback")
|
|
|
- public AuthResponse login(@PathVariable String type, AuthCallback callback) {
|
|
|
- AuthRequest authRequest = authRequestFactory.get(type);
|
|
|
- AuthResponse<AuthUser> response = authRequest.login(callback);
|
|
|
- log.info("【response】= {}", JSONUtil.toJsonStr(response));
|
|
|
- return response;
|
|
|
- }
|
|
|
-
|
|
|
-// @RequestMapping("/auth2/login/{oauthType}")
|
|
|
-// @ApiOperation("第三方登录")
|
|
|
-// @OperateLog(enable = false) // 避免 Post 请求被记录操作日志
|
|
|
-// public CommonResult<SysAuthLoginRespVO> login(@PathVariable String oauthType) {
|
|
|
-// Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
|
|
|
-// //TODO NPE
|
|
|
-// String token = sysUserSessionService.getSessionId(authentication.getName());
|
|
|
-// // 返回结果
|
|
|
-// return success(SysAuthLoginRespVO.builder().token(token).build());
|
|
|
-// }
|
|
|
-
|
|
|
@GetMapping("/get-permission-info")
|
|
|
@ApiOperation("获取登陆用户的权限信息")
|
|
|
public CommonResult<SysAuthPermissionInfoRespVO> getPermissionInfo() {
|
|
@@ -153,4 +100,38 @@ public class SysAuthController {
|
|
|
return success(SysAuthConvert.INSTANCE.buildMenuTree(menuList));
|
|
|
}
|
|
|
|
|
|
+ // ========== 三方登陆相关 ==========
|
|
|
+
|
|
|
+ @GetMapping("/third-login-redirect")
|
|
|
+ @ApiOperation("三方登陆的跳转")
|
|
|
+ @ApiImplicitParams({
|
|
|
+ @ApiImplicitParam(name = "type", value = "三方类型", required = true, dataTypeClass = Integer.class),
|
|
|
+ @ApiImplicitParam(name = "redirectUri", value = "回调路径", dataTypeClass = String.class)
|
|
|
+ })
|
|
|
+ public CommonResult<String> thirdLoginRedirect(@RequestParam("type") Integer type,
|
|
|
+ @RequestParam("redirectUri") String redirectUri) {
|
|
|
+ // 获得对应的 AuthRequest 实现
|
|
|
+ AuthRequest authRequest = authRequestFactory.get(SysUserSocialTypeEnum.valueOfType(type).getSource());
|
|
|
+ // 生成跳转地址
|
|
|
+ String authorizeUri = authRequest.authorize(AuthStateUtils.createState());
|
|
|
+ authorizeUri = HttpUtils.replaceUrlQuery(authorizeUri, "redirect_uri", redirectUri);
|
|
|
+ return CommonResult.success(authorizeUri);
|
|
|
+ }
|
|
|
+
|
|
|
+ @PostMapping("/third-login")
|
|
|
+ @ApiOperation("三方登陆,使用 code 授权码")
|
|
|
+ @OperateLog(enable = false) // 避免 Post 请求被记录操作日志
|
|
|
+ public CommonResult<SysAuthLoginRespVO> thirdLogin(@RequestBody @Valid SysAuthThirdLoginReqVO reqVO) {
|
|
|
+ String token = authService.thirdLogin(reqVO, getClientIP(), getUserAgent());
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+
|
|
|
+ @RequestMapping("/{type}/callback")
|
|
|
+ public AuthResponse login(@PathVariable String type, AuthCallback callback) {
|
|
|
+ AuthRequest authRequest = authRequestFactory.get(type);
|
|
|
+ AuthResponse<AuthUser> response = authRequest.login(callback);
|
|
|
+ log.info("【response】= {}", JSONUtil.toJsonStr(response));
|
|
|
+ return response;
|
|
|
+ }
|
|
|
+
|
|
|
}
|