2023-01-23 08:11:40 +01:00
|
|
|
package idp
|
|
|
|
|
|
|
|
import (
|
|
|
|
"context"
|
|
|
|
|
|
|
|
"golang.org/x/text/language"
|
2023-03-14 20:20:38 +01:00
|
|
|
|
|
|
|
"github.com/zitadel/zitadel/internal/domain"
|
2023-01-23 08:11:40 +01:00
|
|
|
)
|
|
|
|
|
|
|
|
// Provider is the minimal implementation for a 3rd party authentication provider
|
|
|
|
type Provider interface {
|
|
|
|
Name() string
|
2023-11-13 10:25:26 +02:00
|
|
|
BeginAuth(ctx context.Context, state string, params ...Parameter) (Session, error)
|
2023-01-23 08:11:40 +01:00
|
|
|
IsLinkingAllowed() bool
|
|
|
|
IsCreationAllowed() bool
|
|
|
|
IsAutoCreation() bool
|
|
|
|
IsAutoUpdate() bool
|
|
|
|
}
|
|
|
|
|
|
|
|
// User contains the information of a federated user.
|
|
|
|
type User interface {
|
|
|
|
GetID() string
|
|
|
|
GetFirstName() string
|
|
|
|
GetLastName() string
|
|
|
|
GetDisplayName() string
|
|
|
|
GetNickname() string
|
|
|
|
GetPreferredUsername() string
|
2023-03-14 20:20:38 +01:00
|
|
|
GetEmail() domain.EmailAddress
|
2023-01-23 08:11:40 +01:00
|
|
|
IsEmailVerified() bool
|
2023-03-14 20:20:38 +01:00
|
|
|
GetPhone() domain.PhoneNumber
|
2023-01-23 08:11:40 +01:00
|
|
|
IsPhoneVerified() bool
|
|
|
|
GetPreferredLanguage() language.Tag
|
|
|
|
GetAvatarURL() string
|
|
|
|
GetProfile() string
|
|
|
|
}
|
2023-11-13 10:25:26 +02:00
|
|
|
|
|
|
|
// Parameter allows to pass specific parameter to the BeginAuth function
|
|
|
|
type Parameter interface {
|
|
|
|
setValue()
|
|
|
|
}
|
|
|
|
|
|
|
|
// UserAgentID allows to pass the user agent ID of the auth request to BeginAuth
|
|
|
|
type UserAgentID string
|
|
|
|
|
|
|
|
func (p UserAgentID) setValue() {}
|
|
|
|
|
|
|
|
// LoginHintParam allows to pass a login_hint to BeginAuth
|
|
|
|
type LoginHintParam string
|
|
|
|
|
|
|
|
func (p LoginHintParam) setValue() {}
|