@ -8,6 +8,7 @@ import me.zhyd.oauth.model.AuthResponse;
import me.zhyd.oauth.model.AuthUser ;
import me.zhyd.oauth.request.* ;
import org.dromara.common.core.domain.model.LoginBody ;
import org.dromara.common.core.utils.SpringUtils ;
import org.dromara.common.social.config.properties.SocialLoginConfigProperties ;
import org.dromara.common.social.config.properties.SocialProperties ;
@ -18,6 +19,8 @@ import org.dromara.common.social.config.properties.SocialProperties;
*/
public class SocialUtils {
private static final AuthRedisStateCache STATE_CACHE = SpringUtils . getBean ( AuthRedisStateCache . class ) ;
@SuppressWarnings ( " unchecked " )
public static AuthResponse < AuthUser > loginAuth ( LoginBody loginBody , SocialProperties socialProperties ) throws AuthException {
AuthRequest authRequest = getAuthRequest ( loginBody . getSource ( ) , socialProperties ) ;
@ -36,28 +39,28 @@ public class SocialUtils {
String clientSecret = obj . getClientSecret ( ) ;
String redirectUri = obj . getRedirectUri ( ) ;
return switch ( source . toLowerCase ( ) ) {
case " dingtalk " - > new AuthDingTalkRequest ( AuthConfig . builder ( ) . clientId ( clientId ) . clientSecret ( clientSecret ) . redirectUri ( redirectUri ) . build ( ) ) ;
case " baidu " - > new AuthBaiduRequest ( AuthConfig . builder ( ) . clientId ( clientId ) . clientSecret ( clientSecret ) . redirectUri ( redirectUri ) . build ( ) ) ;
case " github " - > new AuthGithubRequest ( AuthConfig . builder ( ) . clientId ( clientId ) . clientSecret ( clientSecret ) . redirectUri ( redirectUri ) . build ( ) ) ;
case " gitee " - > new AuthGiteeRequest ( AuthConfig . builder ( ) . clientId ( clientId ) . clientSecret ( clientSecret ) . redirectUri ( redirectUri ) . build ( ) ) ;
case " weibo " - > new AuthWeiboRequest ( AuthConfig . builder ( ) . clientId ( clientId ) . clientSecret ( clientSecret ) . redirectUri ( redirectUri ) . build ( ) ) ;
case " coding " - > new AuthCodingRequest ( AuthConfig . builder ( ) . clientId ( clientId ) . clientSecret ( clientSecret ) . redirectUri ( redirectUri ) . build ( ) ) ;
case " oschina " - > new AuthOschinaRequest ( AuthConfig . builder ( ) . clientId ( clientId ) . clientSecret ( clientSecret ) . redirectUri ( redirectUri ) . build ( ) ) ;
case " dingtalk " - > new AuthDingTalkRequest ( AuthConfig . builder ( ) . clientId ( clientId ) . clientSecret ( clientSecret ) . redirectUri ( redirectUri ) . build ( ) , STATE_CACHE );
case " baidu " - > new AuthBaiduRequest ( AuthConfig . builder ( ) . clientId ( clientId ) . clientSecret ( clientSecret ) . redirectUri ( redirectUri ) . build ( ) , STATE_CACHE );
case " github " - > new AuthGithubRequest ( AuthConfig . builder ( ) . clientId ( clientId ) . clientSecret ( clientSecret ) . redirectUri ( redirectUri ) . build ( ) , STATE_CACHE );
case " gitee " - > new AuthGiteeRequest ( AuthConfig . builder ( ) . clientId ( clientId ) . clientSecret ( clientSecret ) . redirectUri ( redirectUri ) . build ( ) , STATE_CACHE );
case " weibo " - > new AuthWeiboRequest ( AuthConfig . builder ( ) . clientId ( clientId ) . clientSecret ( clientSecret ) . redirectUri ( redirectUri ) . build ( ) , STATE_CACHE );
case " coding " - > new AuthCodingRequest ( AuthConfig . builder ( ) . clientId ( clientId ) . clientSecret ( clientSecret ) . redirectUri ( redirectUri ) . build ( ) , STATE_CACHE );
case " oschina " - > new AuthOschinaRequest ( AuthConfig . builder ( ) . clientId ( clientId ) . clientSecret ( clientSecret ) . redirectUri ( redirectUri ) . build ( ) , STATE_CACHE );
// 支付宝在创建回调地址时, 不允许使用localhost或者127.0.0.1, 所以这儿的回调地址使用的局域网内的ip
case " alipay " - > new AuthAlipayRequest ( AuthConfig . builder ( ) . clientId ( clientId ) . clientSecret ( clientSecret ) . redirectUri ( redirectUri ) . build ( ) , socialProperties . getType ( ) . get ( " alipay " ) . getAlipayPublicKey ( ) ) ;
case " qq " - > new AuthQqRequest ( AuthConfig . builder ( ) . clientId ( clientId ) . clientSecret ( clientSecret ) . redirectUri ( redirectUri ) . build ( ) ) ;
case " wechat_open " - > new AuthWeChatOpenRequest ( AuthConfig . builder ( ) . clientId ( clientId ) . clientSecret ( clientSecret ) . redirectUri ( redirectUri ) . build ( ) ) ;
case " taobao " - > new AuthTaobaoRequest ( AuthConfig . builder ( ) . clientId ( clientId ) . clientSecret ( clientSecret ) . redirectUri ( redirectUri ) . build ( ) ) ;
case " douyin " - > new AuthDouyinRequest ( AuthConfig . builder ( ) . clientId ( clientId ) . clientSecret ( clientSecret ) . redirectUri ( redirectUri ) . build ( ) ) ;
case " linkedin " - > new AuthLinkedinRequest ( AuthConfig . builder ( ) . clientId ( clientId ) . clientSecret ( clientSecret ) . redirectUri ( redirectUri ) . build ( ) ) ;
case " microsoft " - > new AuthMicrosoftRequest ( AuthConfig . builder ( ) . clientId ( clientId ) . clientSecret ( clientSecret ) . redirectUri ( redirectUri ) . build ( ) ) ;
case " renren " - > new AuthRenrenRequest ( AuthConfig . builder ( ) . clientId ( clientId ) . clientSecret ( clientSecret ) . redirectUri ( redirectUri ) . build ( ) ) ;
case " stack_overflow " - > new AuthStackOverflowRequest ( AuthConfig . builder ( ) . clientId ( clientId ) . clientSecret ( clientSecret ) . redirectUri ( redirectUri ) . stackOverflowKey ( " " ) . build ( ) ) ;
case " huawei " - > new AuthHuaweiRequest ( AuthConfig . builder ( ) . clientId ( clientId ) . clientSecret ( clientSecret ) . redirectUri ( redirectUri ) . build ( ) ) ;
case " wechat_enterprise " - > new AuthWeChatEnterpriseQrcodeRequest ( AuthConfig . builder ( ) . clientId ( clientId ) . clientSecret ( clientSecret ) . redirectUri ( redirectUri ) . agentId ( " " ) . build ( ) ) ;
case " gitlab " - > new AuthGitlabRequest ( AuthConfig . builder ( ) . clientId ( clientId ) . clientSecret ( clientSecret ) . redirectUri ( redirectUri ) . build ( ) ) ;
case " wechat_mp " - > new AuthWeChatMpRequest ( AuthConfig . builder ( ) . clientId ( clientId ) . clientSecret ( clientSecret ) . redirectUri ( redirectUri ) . build ( ) ) ;
case " aliyun " - > new AuthAliyunRequest ( AuthConfig . builder ( ) . clientId ( clientId ) . clientSecret ( clientSecret ) . redirectUri ( redirectUri ) . build ( ) ) ;
case " alipay " - > new AuthAlipayRequest ( AuthConfig . builder ( ) . clientId ( clientId ) . clientSecret ( clientSecret ) . redirectUri ( redirectUri ) . build ( ) , socialProperties . getType ( ) . get ( " alipay " ) . getAlipayPublicKey ( ) , STATE_CACHE );
case " qq " - > new AuthQqRequest ( AuthConfig . builder ( ) . clientId ( clientId ) . clientSecret ( clientSecret ) . redirectUri ( redirectUri ) . build ( ) , STATE_CACHE );
case " wechat_open " - > new AuthWeChatOpenRequest ( AuthConfig . builder ( ) . clientId ( clientId ) . clientSecret ( clientSecret ) . redirectUri ( redirectUri ) . build ( ) , STATE_CACHE );
case " taobao " - > new AuthTaobaoRequest ( AuthConfig . builder ( ) . clientId ( clientId ) . clientSecret ( clientSecret ) . redirectUri ( redirectUri ) . build ( ) , STATE_CACHE );
case " douyin " - > new AuthDouyinRequest ( AuthConfig . builder ( ) . clientId ( clientId ) . clientSecret ( clientSecret ) . redirectUri ( redirectUri ) . build ( ) , STATE_CACHE );
case " linkedin " - > new AuthLinkedinRequest ( AuthConfig . builder ( ) . clientId ( clientId ) . clientSecret ( clientSecret ) . redirectUri ( redirectUri ) . build ( ) , STATE_CACHE );
case " microsoft " - > new AuthMicrosoftRequest ( AuthConfig . builder ( ) . clientId ( clientId ) . clientSecret ( clientSecret ) . redirectUri ( redirectUri ) . build ( ) , STATE_CACHE );
case " renren " - > new AuthRenrenRequest ( AuthConfig . builder ( ) . clientId ( clientId ) . clientSecret ( clientSecret ) . redirectUri ( redirectUri ) . build ( ) , STATE_CACHE );
case " stack_overflow " - > new AuthStackOverflowRequest ( AuthConfig . builder ( ) . clientId ( clientId ) . clientSecret ( clientSecret ) . redirectUri ( redirectUri ) . stackOverflowKey ( " " ) . build ( ) , STATE_CACHE );
case " huawei " - > new AuthHuaweiRequest ( AuthConfig . builder ( ) . clientId ( clientId ) . clientSecret ( clientSecret ) . redirectUri ( redirectUri ) . build ( ) , STATE_CACHE );
case " wechat_enterprise " - > new AuthWeChatEnterpriseQrcodeRequest ( AuthConfig . builder ( ) . clientId ( clientId ) . clientSecret ( clientSecret ) . redirectUri ( redirectUri ) . agentId ( " " ) . build ( ) , STATE_CACHE );
case " gitlab " - > new AuthGitlabRequest ( AuthConfig . builder ( ) . clientId ( clientId ) . clientSecret ( clientSecret ) . redirectUri ( redirectUri ) . build ( ) , STATE_CACHE );
case " wechat_mp " - > new AuthWeChatMpRequest ( AuthConfig . builder ( ) . clientId ( clientId ) . clientSecret ( clientSecret ) . redirectUri ( redirectUri ) . build ( ) , STATE_CACHE );
case " aliyun " - > new AuthAliyunRequest ( AuthConfig . builder ( ) . clientId ( clientId ) . clientSecret ( clientSecret ) . redirectUri ( redirectUri ) . build ( ) , STATE_CACHE );
default - > throw new AuthException ( " 未获取到有效的Auth配置 " ) ;
} ;
}