Files
AstralCalendar/auth/oauth.go
T

50 lines
986 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"`
Name string `json:"name"`
}
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
}