use of com.fujieid.jap.http.adapter.jakarta.JakartaRequestAdapter in project solon by noear.
the class SocialController method redirect.
/**
* 第三方跳转方法
*/
@Get
@Mapping("/social/{platform}")
public Object redirect(Context ctx, HttpServletRequest request, HttpServletResponse response, String platform, String next, String code, String state) throws IllegalAccessException {
// 验证 二次回调地址 是否合法
if (next == null) {
// 如果没指定回调地址,可能是第三方回调的结果
next = (String) this.cacheService.get(this.getKey(state));
// 如果 Callback 所属的 State 已过期
if (next == null) {
throw new IllegalStateException();
} else {
// 填入缺失的 next 参数
ctx.paramSet("next", next);
}
} else {
if (!this.validNext(next)) {
throw new IllegalAccessException();
}
}
// 构建 社会化登录 Payload
SocialConfig socialConfig = new SocialConfig().setPlatform(platform).setState(UuidUtils.getUUID()).setJustAuthConfig(this.japProperties.getCredentials().get(platform));
// 将 State -> Callback 存入缓存
this.cacheService.store(this.getKey(socialConfig.getState()), next, 300);
// 请求登录
JapResponse japResponse = this.socialStrategy.authenticate(socialConfig, new JakartaRequestAdapter(new HttpServletRequestWrapperImpl(ctx, request)), new JakartaResponseAdapter(response));
return this.simpleResponse(ctx, japResponse);
}
use of com.fujieid.jap.http.adapter.jakarta.JakartaRequestAdapter in project solon by noear.
the class AuthorizationController method authorizePost.
@Post
@Mapping("authorize")
public void authorizePost(Context ctx, HttpServletRequest request) throws IOException {
// agree
IdsResponse<String, String> idsResponse = this.authorizationEndpoint.agree(new JakartaRequestAdapter(request));
ctx.redirect(idsResponse.getData());
}
use of com.fujieid.jap.http.adapter.jakarta.JakartaRequestAdapter in project solon by noear.
the class LoginController method loginPost.
@Post
@Mapping("login")
public void loginPost(Context ctx, HttpServletRequest request, HttpServletResponse response) {
IdsResponse<String, String> idsResponse = this.loginEndpoint.signin(new JakartaRequestAdapter(request), new JakartaResponseAdapter(response));
ctx.redirect(idsResponse.getData());
}
use of com.fujieid.jap.http.adapter.jakarta.JakartaRequestAdapter in project solon by noear.
the class LogoutController method logout.
@Get
@Mapping("logout")
public void logout(Context ctx, HttpServletRequest request, HttpServletResponse response) {
IdsResponse<String, String> idsResponse = this.logoutEndpoint.logout(new JakartaRequestAdapter(request), new JakartaResponseAdapter(response));
ctx.redirect(idsResponse.getData());
}
use of com.fujieid.jap.http.adapter.jakarta.JakartaRequestAdapter in project solon by noear.
the class SimpleController method login.
@Post
@Mapping("/login")
public Object login(Context ctx, HttpServletRequest request, HttpServletResponse response) {
request = new HttpServletRequestWrapperImpl(ctx, request);
JapResponse japResponse = this.simpleStrategy.authenticate(this.japProperties.getSimpleConfig(), new JakartaRequestAdapter(request), new JakartaResponseAdapter(response));
return this.simpleResponse(ctx, japResponse);
}
Aggregations