Files
authorizer/server/oauth/oauth.go

63 lines
2.0 KiB
Go
Raw Normal View History

package oauth
import (
2021-12-03 22:55:27 +05:30
"context"
"log"
2021-07-23 21:57:44 +05:30
"github.com/authorizerdev/authorizer/server/constants"
2021-12-03 22:55:27 +05:30
"github.com/coreos/go-oidc/v3/oidc"
"golang.org/x/oauth2"
2021-09-05 03:57:29 +05:30
facebookOAuth2 "golang.org/x/oauth2/facebook"
githubOAuth2 "golang.org/x/oauth2/github"
)
2021-12-03 22:55:27 +05:30
type OAuthProvider struct {
2021-09-05 03:57:29 +05:30
GoogleConfig *oauth2.Config
GithubConfig *oauth2.Config
FacebookConfig *oauth2.Config
}
2021-12-03 22:55:27 +05:30
type OIDCProvider struct {
GoogleOIDC *oidc.Provider
}
var (
OAuthProviders OAuthProvider
OIDCProviders OIDCProvider
)
func InitOAuth() {
2021-12-03 22:55:27 +05:30
ctx := context.Background()
2021-12-31 13:52:10 +05:30
if constants.EnvData.GOOGLE_CLIENT_ID != "" && constants.EnvData.GOOGLE_CLIENT_SECRET != "" {
2021-12-03 22:55:27 +05:30
p, err := oidc.NewProvider(ctx, "https://accounts.google.com")
if err != nil {
log.Fatalln("error creating oidc provider for google:", err)
}
OIDCProviders.GoogleOIDC = p
OAuthProviders.GoogleConfig = &oauth2.Config{
2021-12-31 13:52:10 +05:30
ClientID: constants.EnvData.GOOGLE_CLIENT_ID,
ClientSecret: constants.EnvData.GOOGLE_CLIENT_SECRET,
RedirectURL: constants.EnvData.AUTHORIZER_URL + "/oauth_callback/google",
2021-12-03 22:55:27 +05:30
Endpoint: OIDCProviders.GoogleOIDC.Endpoint(),
Scopes: []string{oidc.ScopeOpenID, "profile", "email"},
}
}
2021-12-31 13:52:10 +05:30
if constants.EnvData.GITHUB_CLIENT_ID != "" && constants.EnvData.GITHUB_CLIENT_SECRET != "" {
2021-12-03 22:55:27 +05:30
OAuthProviders.GithubConfig = &oauth2.Config{
2021-12-31 13:52:10 +05:30
ClientID: constants.EnvData.GITHUB_CLIENT_ID,
ClientSecret: constants.EnvData.GITHUB_CLIENT_SECRET,
RedirectURL: constants.EnvData.AUTHORIZER_URL + "/oauth_callback/github",
Endpoint: githubOAuth2.Endpoint,
}
}
2021-12-31 13:52:10 +05:30
if constants.EnvData.FACEBOOK_CLIENT_ID != "" && constants.EnvData.FACEBOOK_CLIENT_SECRET != "" {
2021-12-03 22:55:27 +05:30
OAuthProviders.FacebookConfig = &oauth2.Config{
2021-12-31 13:52:10 +05:30
ClientID: constants.EnvData.FACEBOOK_CLIENT_ID,
ClientSecret: constants.EnvData.FACEBOOK_CLIENT_SECRET,
RedirectURL: constants.EnvData.AUTHORIZER_URL + "/oauth_callback/facebook",
2021-09-05 03:57:29 +05:30
Endpoint: facebookOAuth2.Endpoint,
Scopes: []string{"public_profile", "email"},
}
}
}