BaseAuthRequest.java 3.6 KB
Newer Older
1 2 3 4
package me.zhyd.oauth.request;

import lombok.Data;
import me.zhyd.oauth.config.AuthConfig;
智布道's avatar
智布道 已提交
5
import me.zhyd.oauth.exception.AuthException;
6 7
import me.zhyd.oauth.model.AuthResponse;
import me.zhyd.oauth.model.AuthSource;
8
import me.zhyd.oauth.model.AuthToken;
9
import me.zhyd.oauth.model.AuthUser;
智布道's avatar
智布道 已提交
10
import me.zhyd.oauth.utils.AuthConfigChecker;
11 12
import me.zhyd.oauth.utils.UrlBuilder;

13 14 15 16 17 18
/**
 * @author yadong.zhang (yadong.zhang0415(a)gmail.com)
 * @version 1.0
 * @since 1.8
 */
@Data
智布道's avatar
智布道 已提交
19
public abstract class BaseAuthRequest implements AuthRequest {
20
    protected AuthConfig config;
21
    protected AuthSource source;
22

23
    public BaseAuthRequest(AuthConfig config, AuthSource source) {
24
        this.config = config;
25
        this.source = source;
智布道's avatar
智布道 已提交
26
        if (!AuthConfigChecker.isSupportedAuth(config)) {
智布道's avatar
智布道 已提交
27
            throw new AuthException(ResponseStatus.PARAMETER_INCOMPLETE);
智布道's avatar
智布道 已提交
28
        }
29
    }
30

31
    protected abstract AuthToken getAccessToken(String code);
32

33
    protected abstract AuthUser getUserInfo(AuthToken authToken);
34 35 36

    @Override
    public AuthResponse login(String code) {
37 38 39 40 41 42
        try {
            AuthUser user = this.getUserInfo(this.getAccessToken(code));
            return AuthResponse.builder().data(user).build();
        } catch (Exception e) {
            return AuthResponse.builder().code(500).msg(e.getMessage()).build();
        }
43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
    }

    @Override
    public String authorize() {
        String authorizeUrl = null;
        switch (source) {
            case WEIBO:
                authorizeUrl = UrlBuilder.getWeiboAuthorizeUrl(config.getClientId(), config.getRedirectUri());
                break;
            case BAIDU:
                authorizeUrl = UrlBuilder.getBaiduAuthorizeUrl(config.getClientId(), config.getRedirectUri());
                break;
            case DINGTALK:
                authorizeUrl = UrlBuilder.getDingTalkQrConnectUrl(config.getClientId(), config.getRedirectUri());
                break;
            case GITEE:
                authorizeUrl = UrlBuilder.getGiteeAuthorizeUrl(config.getClientId(), config.getRedirectUri());
                break;
            case GITHUB:
                authorizeUrl = UrlBuilder.getGithubAuthorizeUrl(config.getClientId(), config.getRedirectUri());
                break;
64 65 66 67 68 69
            case CSDN:
                authorizeUrl = UrlBuilder.getCsdnAuthorizeUrl(config.getClientId(), config.getRedirectUri());
                break;
            case CODING:
                authorizeUrl = UrlBuilder.getCodingAuthorizeUrl(config.getClientId(), config.getRedirectUri());
                break;
70 71 72 73 74 75
            case TENCEN_CLOUD:
                authorizeUrl = UrlBuilder.getTencentCloudAuthorizeUrl(config.getClientId(), config.getRedirectUri());
                break;
            case OSCHINA:
                authorizeUrl = UrlBuilder.getOschinaAuthorizeUrl(config.getClientId(), config.getRedirectUri());
                break;
76 77 78
            case ALIPAY:
                authorizeUrl = UrlBuilder.getAlipayAuthorizeUrl(config.getClientId(), config.getRedirectUri());
                break;
79
            case QQ:
80
                authorizeUrl = UrlBuilder.getQqAuthorizeUrl(config.getClientId(), config.getRedirectUri());
81 82
                break;
            case WECHAT:
83
                authorizeUrl = UrlBuilder.getWeChatAuthorizeUrl(config.getClientId(), config.getRedirectUri());
84
                break;
85 86 87
            case TAOBAO:
                authorizeUrl = UrlBuilder.getTaobaoAuthorizeUrl(config.getClientId(), config.getRedirectUri());
                break;
88 89 90 91 92 93 94
            case GOOGLE:
                break;
            default:
                break;
        }
        return authorizeUrl;
    }
95
}