Documentation
¶
Index ¶
- Constants
- Variables
- func CountOtherUsers(ctx context.Context, database *tigris.Database, instanceID, id uuid.UUID) (int, error)
- func DeleteInstance(ctx context.Context, database *tigris.Database, instance *Instance) error
- func FindUserWithRefreshToken(ctx context.Context, database *tigris.Database, token string) (*User, *RefreshToken, error)
- func IsDuplicatedEmail(ctx context.Context, database *tigris.Database, instanceID uuid.UUID, ...) (bool, error)
- func IsNotFoundError(err error) bool
- func Logout(ctx context.Context, database *tigris.Database, instanceID uuid.UUID, ...) error
- func NewAuditLogEntry(ctx context.Context, database *tigris.Database, instanceID uuid.UUID, ...) error
- func TruncateAll(database *tigris.Database) error
- type AuditAction
- type AuditLogEntry
- type Instance
- type InstanceNotFoundError
- type Invitation
- type InvitationMetadata
- type JSONMap
- type Pagination
- type RefreshToken
- type RefreshTokenNotFoundError
- type SortDirection
- type SortField
- type SortParams
- type User
- func FindUserByConfirmationToken(ctx context.Context, database *tigris.Database, token string) (*User, error)
- func FindUserByEmailAndAudience(ctx context.Context, database *tigris.Database, instanceID uuid.UUID, ...) (*User, error)
- func FindUserByID(ctx context.Context, database *tigris.Database, id uuid.UUID) (*User, error)
- func FindUserByIdAndAudience(ctx context.Context, database *tigris.Database, instanceID, id uuid.UUID, ...) (*User, error)
- func FindUserByInstanceIDAndEmail(ctx context.Context, database *tigris.Database, instanceID uuid.UUID, ...) (*User, error)
- func FindUserByInstanceIDAndID(ctx context.Context, database *tigris.Database, instanceID, id uuid.UUID) (*User, error)
- func FindUserByRecoveryToken(ctx context.Context, database *tigris.Database, token string) (*User, error)
- func FindUsersInAudience(ctx context.Context, database *tigris.Database, instanceID uuid.UUID, ...) ([]*User, error)
- func NewSystemUser(instanceID uuid.UUID, aud string) *User
- func NewUser(instanceID uuid.UUID, email, password, aud string, ...) (*User, error)
- func NewUserWithAppData(instanceID uuid.UUID, email, password, aud string, role string, ...) (*User, error)
- func (u *User) Authenticate(password string, encrypter *crypto.AESBlockEncrypter) bool
- func (u *User) BeforeCreate() error
- func (u *User) BeforeSave() error
- func (u *User) BeforeUpdate() error
- func (u *User) Confirm(ctx context.Context, database *tigris.Database) error
- func (u *User) ConfirmEmailChange(ctx context.Context, database *tigris.Database) error
- func (u *User) HasRole(roleName string) bool
- func (u *User) IsConfirmed() bool
- func (u *User) PatchAppMetaData(ctx context.Context, database *tigris.Database, updates *UserAppMetadata) error
- func (u *User) Recover(ctx context.Context, database *tigris.Database) error
- func (u *User) SetEmail(ctx context.Context, database *tigris.Database, email string) error
- func (u *User) SetRole(ctx context.Context, database *tigris.Database, roleName string) error
- func (User) TableName() string
- func (u *User) UpdateAppMetaData(ctx context.Context, database *tigris.Database, updates *UserAppMetadata) error
- func (u *User) UpdatePassword(ctx context.Context, database *tigris.Database, ...) error
- func (u *User) UpdateUserMetaData(ctx context.Context, database *tigris.Database, updates map[string]interface{}) error
- type UserAppMetadata
- type UserNotFoundError
Constants ¶
const ( CredentialsKeyType = "credentials" ApiKeyKeyType = "api_key" )
const CreatedAt = "created_at"
const SystemUserID = "0"
Variables ¶
var SystemUserUUID = uuid.Nil
Functions ¶
func CountOtherUsers ¶
func CountOtherUsers(ctx context.Context, database *tigris.Database, instanceID, id uuid.UUID) (int, error)
CountOtherUsers counts how many other users exist besides the one provided
func DeleteInstance ¶
func FindUserWithRefreshToken ¶
func FindUserWithRefreshToken(ctx context.Context, database *tigris.Database, token string) (*User, *RefreshToken, error)
FindUserWithRefreshToken finds a user from the provided refresh token.
func IsDuplicatedEmail ¶
func IsDuplicatedEmail(ctx context.Context, database *tigris.Database, instanceID uuid.UUID, email, aud string) (bool, error)
IsDuplicatedEmail returns whether a user exists with a matching email and audience.
func IsNotFoundError ¶
IsNotFoundError returns whether an error represents a "not found" error.
func Logout ¶
func Logout(ctx context.Context, database *tigris.Database, instanceID uuid.UUID, id uuid.UUID) error
Logout deletes all refresh tokens for a user.
func NewAuditLogEntry ¶
func TruncateAll ¶
Types ¶
type AuditAction ¶
type AuditAction string
const ( LoginAction AuditAction = "login" LogoutAction AuditAction = "logout" InviteAcceptedAction AuditAction = "invite_accepted" UserSignedUpAction AuditAction = "user_signedup" UserInvitedAction AuditAction = "user_invited" UserDeletedAction AuditAction = "user_deleted" UserModifiedAction AuditAction = "user_modified" UserRecoveryRequestedAction AuditAction = "user_recovery_requested" TokenRevokedAction AuditAction = "token_revoked" TokenRefreshedAction AuditAction = "token_refreshed" )
type AuditLogEntry ¶
type AuditLogEntry struct {
ID uuid.UUID `json:"id" db:"id" tigris:"primaryKey"`
InstanceID uuid.UUID `json:"instance_id" db:"instance_id" tigris:"index"`
Payload JSONMap `json:"payload" db:"payload"`
CreatedAt time.Time `json:"created_at" db:"created_at"`
}
AuditLogEntry is the database model for audit log entries.
func FindAuditLogEntries ¶
func (AuditLogEntry) TableName ¶
func (AuditLogEntry) TableName() string
type Instance ¶
type Instance struct {
ID uuid.UUID `json:"id" db:"id" tigris:"primaryKey"`
// Netlify UUID
UUID uuid.UUID `json:"uuid,omitempty" db:"uuid"`
BaseConfig *conf.Configuration `json:"config" db:"config"`
CreatedAt time.Time `json:"created_at" db:"created_at"`
UpdatedAt time.Time `json:"updated_at" db:"updated_at"`
}
func GetInstance ¶
func GetInstance(ctx context.Context, database *tigris.Database, instanceID uuid.UUID) (*Instance, error)
GetInstance finds an instance by ID
func GetInstanceByUUID ¶
func (*Instance) Config ¶
func (i *Instance) Config() (*conf.Configuration, error)
Config loads the base configuration values with defaults.
func (*Instance) UpdateConfig ¶
func (i *Instance) UpdateConfig(ctx context.Context, database *tigris.Database, config *conf.Configuration) error
UpdateConfig updates the base config
type InstanceNotFoundError ¶
type InstanceNotFoundError struct{}
InstanceNotFoundError represents when an instance is not found.
func (InstanceNotFoundError) Error ¶
func (e InstanceNotFoundError) Error() string
type Invitation ¶
type Invitation struct {
InstanceID uuid.UUID `json:"instance_id" db:"instance_id" tigris:"index"`
ID uuid.UUID `json:"id" db:"id" tigris:"primaryKey:1,autoGenerate"`
Role string `json:"role" db:"role"`
Email string `json:"email" db:"email" tigris:"index"`
Code string `json:"code" db:"code"`
TigrisNamespace string `json:"tigris_namespace" tigris:"index"`
TigrisNamespaceName string `json:"tigris_namespace_name"`
CreatedBy string `json:"created_by"`
CreatedByName string `json:"created_by_name"`
Status string `json:"status" tigris:"index"`
ExpirationTime int64 `json:"expiration_time"`
AppMetaData *InvitationMetadata `json:"metadata" db:"metadata"`
CreatedAt *time.Time `json:"created_at,omitempty" db:"created_at" tigris:"default:now(),createdAt"`
UpdatedAt *time.Time `json:"updated_at,omitempty" db:"updated_at" tigris:"default:now(),updatedAt"`
}
Invitation tigris specific user invitation
func (Invitation) TableName ¶
func (Invitation) TableName() string
type InvitationMetadata ¶
type InvitationMetadata struct {
}
type Pagination ¶
func (*Pagination) Offset ¶
func (p *Pagination) Offset() uint64
type RefreshToken ¶
type RefreshToken struct {
InstanceID uuid.UUID `json:"instance_id" db:"instance_id" tigris:"index"`
ID uuid.UUID `json:"id" db:"id" tigris:"primaryKey"`
Token string `json:"token" db:"token"`
UserID uuid.UUID `json:"user_id" db:"user_id" tigris:"index"`
Revoked bool `json:"revoked" db:"revoked"`
CreatedAt time.Time `json:"created_at" db:"created_at"`
UpdatedAt time.Time `json:"updated_at" db:"updated_at"`
}
RefreshToken is the database model for refresh tokens.
func GrantAuthenticatedUser ¶
func GrantAuthenticatedUser(ctx context.Context, database *tigris.Database, user *User) (*RefreshToken, error)
GrantAuthenticatedUser creates a refresh token for the provided user.
func GrantRefreshTokenSwap ¶
func GrantRefreshTokenSwap(ctx context.Context, database *tigris.Database, user *User, token *RefreshToken) (*RefreshToken, error)
GrantRefreshTokenSwap swaps a refresh token for a new one, revoking the provided token.
func (RefreshToken) TableName ¶
func (RefreshToken) TableName() string
type RefreshTokenNotFoundError ¶
type RefreshTokenNotFoundError struct{}
RefreshTokenNotFoundError represents when a refresh token is not found.
func (RefreshTokenNotFoundError) Error ¶
func (e RefreshTokenNotFoundError) Error() string
type SortDirection ¶
type SortDirection string
const Ascending SortDirection = "ASC"
const Descending SortDirection = "DESC"
type SortField ¶
type SortField struct {
Name string
Dir SortDirection
}
type SortParams ¶
type SortParams struct {
Fields []SortField
}
type User ¶
type User struct {
InstanceID uuid.UUID `json:"instance_id" db:"instance_id" tigris:"index"`
ID uuid.UUID `json:"id" db:"id" tigris:"primaryKey:1"`
Aud string `json:"aud" db:"aud" tigris:"index"`
Role string `json:"role" db:"role"`
Email string `json:"email" db:"email" tigris:"primaryKey:2"`
EncryptedPassword string `json:"encrypted_password" db:"encrypted_password"`
EncryptionIV string `json:"encryption_iv" db:"encryption_iv"`
ConfirmedAt *time.Time `json:"confirmed_at,omitempty" db:"confirmed_at"`
InvitedAt *time.Time `json:"invited_at,omitempty" db:"invited_at"`
ConfirmationToken string `json:"confirmation_token" db:"confirmation_token"`
ConfirmationSentAt *time.Time `json:"confirmation_sent_at,omitempty" db:"confirmation_sent_at"`
RecoveryToken string `json:"recovery_token" db:"recovery_token"`
RecoverySentAt *time.Time `json:"recovery_sent_at,omitempty" db:"recovery_sent_at"`
EmailChangeToken string `json:"email_change_token" db:"email_change_token"`
EmailChange string `json:"new_email,omitempty" db:"email_change"`
EmailChangeSentAt *time.Time `json:"email_change_sent_at,omitempty" db:"email_change_sent_at"`
LastSignInAt *time.Time `json:"last_sign_in_at,omitempty" db:"last_sign_in_at"`
AppMetaData *UserAppMetadata `json:"app_metadata" db:"app_metadata"`
UserMetaData JSONMap `json:"user_metadata" db:"user_metadata"`
IsSuperAdmin bool `json:"is_super_admin" db:"is_super_admin" tigris:"index"`
CreatedAt *time.Time `json:"created_at,omitempty" db:"created_at" tigris:"default:now(),createdAt"`
UpdatedAt *time.Time `json:"updated_at,omitempty" db:"updated_at" tigris:"default:now(),updatedAt"`
}
User represents a registered user with email/password authentication
func FindUserByConfirmationToken ¶
func FindUserByConfirmationToken(ctx context.Context, database *tigris.Database, token string) (*User, error)
FindUserByConfirmationToken finds users with the matching confirmation token.
func FindUserByEmailAndAudience ¶
func FindUserByEmailAndAudience(ctx context.Context, database *tigris.Database, instanceID uuid.UUID, email, aud string) (*User, error)
FindUserByEmailAndAudience finds a user with the matching email and audience.
func FindUserByID ¶
FindUserByID finds a user matching the provided ID.
func FindUserByIdAndAudience ¶
func FindUserByIdAndAudience(ctx context.Context, database *tigris.Database, instanceID, id uuid.UUID, aud string) (*User, error)
FindUserByIdAndAudience finds a user with the matching email and audience.
func FindUserByInstanceIDAndEmail ¶
func FindUserByInstanceIDAndEmail(ctx context.Context, database *tigris.Database, instanceID uuid.UUID, email string) (*User, error)
FindUserByInstanceIDAndEmail finds a user matching the provided ID.
func FindUserByInstanceIDAndID ¶
func FindUserByInstanceIDAndID(ctx context.Context, database *tigris.Database, instanceID, id uuid.UUID) (*User, error)
FindUserByInstanceIDAndID finds a user matching the provided ID.
func FindUserByRecoveryToken ¶
func FindUserByRecoveryToken(ctx context.Context, database *tigris.Database, token string) (*User, error)
FindUserByRecoveryToken finds a user with the matching recovery token.
func FindUsersInAudience ¶
func FindUsersInAudience(ctx context.Context, database *tigris.Database, instanceID uuid.UUID, aud string, pageParams *Pagination, sortParams *SortParams, qfilter string, tigrisNamespace string, createdBy string, tigrisProject string, keyTypeFilter string, encrypter *crypto.AESBlockEncrypter) ([]*User, error)
FindUsersInAudience finds users with the matching audience.
func NewUser ¶
func NewUser(instanceID uuid.UUID, email, password, aud string, userData map[string]interface{}, encrypter *crypto.AESBlockEncrypter) (*User, error)
NewUser initializes a new user from an email, password and user data.
func NewUserWithAppData ¶
func NewUserWithAppData(instanceID uuid.UUID, email, password, aud string, role string, userData map[string]interface{}, appData UserAppMetadata, encrypter *crypto.AESBlockEncrypter) (*User, error)
NewUserWithAppData initializes a new user from an email, password and user data.
func (*User) Authenticate ¶
func (u *User) Authenticate(password string, encrypter *crypto.AESBlockEncrypter) bool
Authenticate a user from a password
func (*User) BeforeCreate ¶
func (*User) BeforeSave ¶
func (*User) BeforeUpdate ¶
func (*User) ConfirmEmailChange ¶
ConfirmEmailChange confirm the change of email for a user
func (*User) IsConfirmed ¶
IsConfirmed checks if a user has already being registered and confirmed.
func (*User) PatchAppMetaData ¶
func (u *User) PatchAppMetaData(ctx context.Context, database *tigris.Database, updates *UserAppMetadata) error
PatchAppMetaData updates all app data from a map of updates, it leaves rest unset fields untouched.
func (*User) UpdateAppMetaData ¶
func (u *User) UpdateAppMetaData(ctx context.Context, database *tigris.Database, updates *UserAppMetadata) error
UpdateAppMetaData updates all app data from a map of updates
func (*User) UpdatePassword ¶
type UserAppMetadata ¶
type UserAppMetadata struct {
TigrisNamespace string `json:"tigris_namespace,omitempty"`
TigrisProject string `json:"tigris_project,omitempty"`
CreatedBy string `json:"created_by,omitempty"`
Name string `json:"name,omitempty"`
Description string `json:"description,omitempty"`
Provider string `json:"provider,omitempty"`
Roles []string `json:"roles,omitempty"`
KeyType string `json:"key_type,omitempty"`
Custom JSONMap `json:"custom,omitempty"`
}
type UserNotFoundError ¶
type UserNotFoundError struct{}
UserNotFoundError represents when a user is not found.
func (UserNotFoundError) Error ¶
func (e UserNotFoundError) Error() string