appuser

package
v0.26.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 2, 2025 License: MIT Imports: 9 Imported by: 11

Documentation

Index

Constants

View Source
const AccountKeySeparator = ":"

Variables

This section is empty.

Functions

This section is empty.

Types

type AccountData

type AccountData interface {
	BelongsToUser
	GetEmailLowerCase() string
	GetEmailConfirmed() bool
	SetLastLoginAt(time time.Time) dal.Update
	GetNames() person.NameFields
}

AccountData stores info about a user account with auth provider

type AccountDataBase

type AccountDataBase struct {
	AccountKey
	OwnedByUserWithID
	person.NameFields
	WithLastLogin
	EmailData

	Domains []string `json:"domains" dalgo:"domains" firestore:"domains"` // E.g. website domain names used to authenticate user

	Admin bool

	// ClientID is an OAuth2 client ID
	ClientID string `json:"clientID" dalgo:"clientID" firestore:"clientID"`

	FederatedIdentity string `firestore:"federatedIdentity"`
	FederatedProvider string `firestore:"federatedProvider"`
}

func (*AccountDataBase) GetNames

func (v *AccountDataBase) GetNames() person.NameFields

func (*AccountDataBase) Validate added in v0.21.0

func (v *AccountDataBase) Validate() error

type AccountKey added in v0.10.0

type AccountKey struct {
	// Global ID of AccountKey
	Provider string `json:"provider" dalgo:"provider" firestore:"dalgo"` // E.g. Email, Google, Facebook, etc.
	App      string `json:"app" dalgo:"app" firestore:"app"`             // E.g. app ID, bot ID, etc.
	ID       string `json:"id" dalgo:"id" firestore:"id"`                // An ID of a user at auth provider. E.g. email address, some ID, etc.
}

AccountKey stores info about a user account with auth provider

func ParseUserAccount

func ParseUserAccount(s string) (ua AccountKey, err error)

func (AccountKey) IsEmpty added in v0.24.0

func (ua AccountKey) IsEmpty() bool

func (AccountKey) String added in v0.10.0

func (ua AccountKey) String() string

func (AccountKey) Validate added in v0.24.0

func (ua AccountKey) Validate() error

type AccountRecord

type AccountRecord interface {
	AccountKey() AccountKey
	AccountData() AccountData
}

type AccountsOfUser

type AccountsOfUser struct {
	Accounts []string `json:"accounts,omitempty" firestore:"accounts,omitempty"`
}

func (*AccountsOfUser) AddAccount

func (ua *AccountsOfUser) AddAccount(userAccount AccountKey) (updates []dal.Update)

func (*AccountsOfUser) GetAccount

func (ua *AccountsOfUser) GetAccount(provider, app string) (userAccount *AccountKey, err error)

GetAccount returns the first account of the given provider and app.

func (*AccountsOfUser) GetAccounts

func (ua *AccountsOfUser) GetAccounts(platform string) (userAccounts []AccountKey, err error)

func (*AccountsOfUser) GetFbAccount deprecated

func (ua *AccountsOfUser) GetFbAccount(_ string) (userAccount *AccountKey, err error)

Deprecated: use GetAccount instead

func (*AccountsOfUser) GetFbAccounts deprecated

func (ua *AccountsOfUser) GetFbAccounts() (userAccounts []AccountKey, err error)

Deprecated: use GetAccounts instead

func (*AccountsOfUser) GetFbmAccount deprecated

func (ua *AccountsOfUser) GetFbmAccount(_ string) (userAccount *AccountKey, err error)

Deprecated: use GetAccount instead

func (*AccountsOfUser) GetGoogleAccount deprecated

func (ua *AccountsOfUser) GetGoogleAccount() (userAccount *AccountKey, err error)

Deprecated: use GetAccounts instead

func (*AccountsOfUser) GetTelegramAccounts deprecated

func (ua *AccountsOfUser) GetTelegramAccounts() (telegramAccounts []AccountKey, er error)

Deprecated: use GetAccounts instead

func (*AccountsOfUser) GetTelegramUserIDs

func (ua *AccountsOfUser) GetTelegramUserIDs() (telegramUserIDs []int64)

func (*AccountsOfUser) HasAccount

func (ua *AccountsOfUser) HasAccount(provider, app string) bool

func (*AccountsOfUser) HasGoogleAccount deprecated

func (ua *AccountsOfUser) HasGoogleAccount() bool

Deprecated: use HasAccount instead

func (*AccountsOfUser) HasTelegramAccount deprecated

func (ua *AccountsOfUser) HasTelegramAccount() bool

Deprecated: use HasAccount instead

func (*AccountsOfUser) RemoveAccount

func (ua *AccountsOfUser) RemoveAccount(userAccount AccountKey) (changed bool)

RemoveAccount removes an account from the list of account IDs.

func (*AccountsOfUser) SetBotUserID

func (ua *AccountsOfUser) SetBotUserID(platform, botID, botUserID string)

func (*AccountsOfUser) Validate added in v0.25.7

func (ua *AccountsOfUser) Validate() error

type BaseUserData

BaseUserData defines base app user interface to standardize how plugins & frameworks can work with a custom app user record. The easiest way to implement this interface is to embed BaseUserFields struct into your app user record struct.

type BaseUserFields

type BaseUserFields struct {
	person.NameFields
	with.CreatedFields
	with.UpdatedFields
	with.PreferredLocaleField
	AccountsOfUser // TODO: Reconsider if this should be part of base implementation, if yes extend BaseUserData interface
}

BaseUserFields provides a base implementation of BaseUserData interface.

func (BaseUserFields) Validate added in v0.11.0

func (v BaseUserFields) Validate() error

type BelongsToUser

type BelongsToUser interface {
	GetAppUserID() (appUserID string)
	SetAppUserID(appUserID string)
	with.CreatedTimeGetter
	with.UpdatedTimeGetter
	with.UpdateTimeSetter
}

BelongsToUser should be implemented by any struct that belongs to a single user

type EmailData

type EmailData struct {
	EmailRaw       string `firestore:"emailRaw"`
	EmailLowerCase string `firestore:"emailLowerCase"`
	EmailConfirmed bool   `firestore:"emailConfirmed"`
}

EmailData stores info about email

func NewEmailData

func NewEmailData(email string) EmailData

func (*EmailData) GetEmailConfirmed

func (ed *EmailData) GetEmailConfirmed() bool

func (*EmailData) GetEmailLowerCase

func (ed *EmailData) GetEmailLowerCase() string

func (*EmailData) GetEmailRaw

func (ed *EmailData) GetEmailRaw() string

func (*EmailData) SetEmailConfirmed

func (ed *EmailData) SetEmailConfirmed(value bool)

func (*EmailData) Validate

func (ed *EmailData) Validate() error

type OwnedByUserWithID

type OwnedByUserWithID struct {
	AppUserID string // intentionally indexed & do NOT omitempty (so we can find records with empty AppUserID)

	with.CreatedFields
	with.UpdatedFields
}

OwnedByUserWithID is a struct that implements BelongsToUser & BelongsToUserWithIntID

func NewOwnedByUserWithID

func NewOwnedByUserWithID(id string, created time.Time) OwnedByUserWithID

NewOwnedByUserWithID creates a new OwnedByUserWithID, takes user ID and time of creation

func (*OwnedByUserWithID) GetAppUserID

func (ownedByUser *OwnedByUserWithID) GetAppUserID() string

func (*OwnedByUserWithID) SetAppUserID

func (ownedByUser *OwnedByUserWithID) SetAppUserID(appUserID string)

func (*OwnedByUserWithID) SetAppUserIntID

func (ownedByUser *OwnedByUserWithID) SetAppUserIntID(appUserID int64)

func (*OwnedByUserWithID) Validate

func (ownedByUser *OwnedByUserWithID) Validate() error

type WithLastLogin added in v0.21.0

type WithLastLogin struct {
	LastLoginAt time.Time `json:"lastLoginAt" firestore:"lastLoginAt"`
}

WithLastLogin is a struct that contains the last login time of a user.

func (*WithLastLogin) SetLastLoginAt added in v0.21.0

func (l *WithLastLogin) SetLastLoginAt(time time.Time) dal.Update

SetLastLoginAt sets the time of the last successful login.

func (*WithLastLogin) Validate added in v0.21.0

func (l *WithLastLogin) Validate() error

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL