use of com.fujieid.jap.social.SocialConfig 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.social.SocialConfig in project solon by noear.
the class FixedSocialStrategy method authenticate.
@Override
public JapResponse authenticate(AuthenticateConfig config, JapHttpRequest request, JapHttpResponse response) {
SocialConfig socialConfig = null;
try {
this.checkAuthenticateConfig(config, SocialConfig.class);
socialConfig = (SocialConfig) config;
} catch (JapException e) {
return JapResponse.error(e.getErrorCode(), e.getErrorMessage());
}
if (socialConfig.isBindUser()) {
return this.bind(config, request, response);
}
// !!! 取消 Session 校验 !!!
// JapUser sessionUser = this.checkSession(request, response);
// if (null != sessionUser) {
// return JapResponse.success(sessionUser);
// }
AuthRequest authRequest = null;
try {
authRequest = Reflect.on(this).call("getAuthRequest", config).get();
} catch (JapException e) {
return JapResponse.error(e.getErrorCode(), e.getErrorMessage());
}
String source = socialConfig.getPlatform();
AuthCallback authCallback = Reflect.on(this).call("parseRequest", request).get();
if (Reflect.on(this).call("isCallback", source, authCallback).get()) {
try {
return Reflect.on(this).call("login", request, response, source, authRequest, authCallback, (SocialFunc) this::loginSuccess).get();
} catch (JapUserException e) {
return JapResponse.error(e.getErrorCode(), e.getErrorMessage());
}
}
// If it is not a callback request, it must be a request to jump to the authorization link
String url = authRequest.authorize(socialConfig.getState());
return JapResponse.success(url);
}
Aggregations