mirror of
https://github.com/h44z/wg-portal
synced 2025-02-26 05:49:14 +00:00
52 lines
1.3 KiB
Go
52 lines
1.3 KiB
Go
|
package domain
|
||
|
|
||
|
import (
|
||
|
"context"
|
||
|
|
||
|
"golang.org/x/oauth2"
|
||
|
)
|
||
|
|
||
|
type LoginProvider string
|
||
|
|
||
|
type LoginProviderInfo struct {
|
||
|
Identifier string
|
||
|
Name string
|
||
|
ProviderUrl string
|
||
|
CallbackUrl string
|
||
|
}
|
||
|
|
||
|
type AuthenticatorUserInfo struct {
|
||
|
Identifier UserIdentifier
|
||
|
Email string
|
||
|
Firstname string
|
||
|
Lastname string
|
||
|
Phone string
|
||
|
Department string
|
||
|
IsAdmin bool
|
||
|
}
|
||
|
|
||
|
type AuthenticatorType string
|
||
|
|
||
|
const (
|
||
|
AuthenticatorTypeOAuth AuthenticatorType = "oauth"
|
||
|
AuthenticatorTypeOidc AuthenticatorType = "oidc"
|
||
|
)
|
||
|
|
||
|
type OauthAuthenticator interface {
|
||
|
GetName() string
|
||
|
GetType() AuthenticatorType
|
||
|
AuthCodeURL(state string, opts ...oauth2.AuthCodeOption) string
|
||
|
Exchange(ctx context.Context, code string, opts ...oauth2.AuthCodeOption) (*oauth2.Token, error)
|
||
|
GetUserInfo(ctx context.Context, token *oauth2.Token, nonce string) (map[string]interface{}, error)
|
||
|
ParseUserInfo(raw map[string]interface{}) (*AuthenticatorUserInfo, error)
|
||
|
RegistrationEnabled() bool
|
||
|
}
|
||
|
|
||
|
type LdapAuthenticator interface {
|
||
|
GetName() string
|
||
|
PlaintextAuthentication(userId UserIdentifier, plainPassword string) error
|
||
|
GetUserInfo(ctx context.Context, username UserIdentifier) (map[string]interface{}, error)
|
||
|
ParseUserInfo(raw map[string]interface{}) (*AuthenticatorUserInfo, error)
|
||
|
RegistrationEnabled() bool
|
||
|
}
|