mirror of
https://github.com/h44z/wg-portal
synced 2025-02-26 05:49:14 +00:00
Initial alpha codebase for version 2 of WireGuard Portal. This version is considered unstable and incomplete (for example, no public REST API)! Use with care! Fixes/Implements the following issues: - OAuth support #154, #1 - New Web UI with internationalisation support #98, #107, #89, #62 - Postgres Support #49 - Improved Email handling #47, #119 - DNS Search Domain support #46 - Bugfixes #94, #48 --------- Co-authored-by: Fabian Wechselberger <wechselbergerf@hotmail.com>
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
|
|
}
|