49 lines
958 B
Go
49 lines
958 B
Go
package auth
|
|
|
|
import (
|
|
"context"
|
|
|
|
"github.com/coreos/go-oidc/v3/oidc"
|
|
"golang.org/x/oauth2"
|
|
)
|
|
|
|
// This is all the user info that this script needs
|
|
type UserInfo struct {
|
|
Email string `json:"email"`
|
|
}
|
|
|
|
type OAuthProvider struct {
|
|
Provider *oidc.Provider
|
|
Config oauth2.Config
|
|
}
|
|
|
|
var Providers []OAuthProvider
|
|
var DefaultProvider *OAuthProvider // Assumed to be the last created provider
|
|
|
|
func CreateOAuthProvider(issuer string, clientID string) error {
|
|
ctx := context.Background()
|
|
provider, err := oidc.NewProvider(ctx, issuer)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
OAuthConfig := oauth2.Config{
|
|
ClientID: clientID,
|
|
RedirectURL: "http://localhost:8080/callback",
|
|
Endpoint: provider.Endpoint(),
|
|
Scopes: []string{
|
|
oidc.ScopeOpenID,
|
|
"profile",
|
|
"email",
|
|
},
|
|
}
|
|
|
|
newProvider := OAuthProvider{
|
|
Provider: provider,
|
|
Config: OAuthConfig,
|
|
}
|
|
Providers = append(Providers, newProvider)
|
|
DefaultProvider = &newProvider
|
|
return nil
|
|
}
|