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 }