app-center/api/src/main/java/com/lktx/center/controller/RestAuthController.java

50 lines
1.8 KiB
Java

package com.lktx.center.controller;
import cn.dev33.satoken.session.SaSession;
import cn.dev33.satoken.stp.StpUtil;
import cn.hserver.core.ioc.annotation.Autowired;
import cn.hserver.core.server.util.JsonResult;
import cn.hserver.plugin.web.annotation.Controller;
import cn.hserver.plugin.web.annotation.RequestMapping;
import cn.hserver.plugin.web.interfaces.HttpRequest;
import cn.hserver.plugin.web.interfaces.HttpResponse;
import com.lktx.center.config.Data;
import com.lktx.center.config.SsoAuthRequest;
import lombok.extern.slf4j.Slf4j;
import me.zhyd.oauth.model.AuthCallback;
import me.zhyd.oauth.model.AuthResponse;
import me.zhyd.oauth.model.AuthToken;
import me.zhyd.oauth.model.AuthUser;
import me.zhyd.oauth.utils.AuthStateUtils;
@Slf4j
@Controller("/oauth")
public class RestAuthController {
@Autowired
private SsoAuthRequest authRequest;
@RequestMapping("/render")
public void renderAuth(HttpResponse response) {
String authorize = authRequest.authorize(AuthStateUtils.createState());
response.redirect(authorize);
}
@RequestMapping("/callback")
public JsonResult login(AuthCallback callback, HttpRequest request) {
try {
String rawData = request.getRawData();
System.out.println(rawData);
AuthResponse<AuthUser> login = authRequest.login(callback);
AuthUser data = login.getData();
AuthToken token = login.getData().getToken();
StpUtil.login(login.getData().getUuid());
SaSession session = StpUtil.getSession();
session.set(Data.AuthToken, token);
return JsonResult.ok().put("data", data);
}catch (Exception e) {
log.error("login error",e);
}
return JsonResult.error();
}
}