models

package
v1.0.0-beta.29 Latest Latest
Warning

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

Go to latest
Published: May 31, 2023 License: MIT Imports: 17 Imported by: 0

Documentation

Index

Constants

View Source
const (
	CredentialsKeyType = "credentials"
	ApiKeyKeyType      = "api_key"
)
View Source
const CreatedAt = "created_at"
View Source
const SystemUserID = "0"

Variables

View Source
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 DeleteInstance(ctx context.Context, database *tigris.Database, instance *Instance) error

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

func IsNotFoundError(err error) bool

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 NewAuditLogEntry(ctx context.Context, database *tigris.Database, instanceID uuid.UUID, actor *User, action AuditAction, traits map[string]interface{}) error

func TruncateAll

func TruncateAll(database *tigris.Database) error

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 FindAuditLogEntries(ctx context.Context, database *tigris.Database, instanceID uuid.UUID, filterColumns []string, filterValue string, pageParams *Pagination) ([]*AuditLogEntry, error)

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 GetInstanceByUUID(ctx context.Context, database *tigris.Database, uuid uuid.UUID) (*Instance, error)

func (*Instance) Config

func (i *Instance) Config() (*conf.Configuration, error)

Config loads the base configuration values with defaults.

func (Instance) TableName

func (Instance) TableName() string

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 JSONMap

type JSONMap map[string]interface{}

func (JSONMap) Scan

func (j JSONMap) Scan(src interface{}) error

func (JSONMap) Value

func (j JSONMap) Value() (driver.Value, error)

type Pagination

type Pagination struct {
	Page    uint64
	PerPage uint64
	Count   uint64
}

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

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

func FindUserByID(ctx context.Context, database *tigris.Database, id uuid.UUID) (*User, error)

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 NewSystemUser

func NewSystemUser(instanceID uuid.UUID, aud string) *User

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 (u *User) BeforeCreate() error

func (*User) BeforeSave

func (u *User) BeforeSave() error

func (*User) BeforeUpdate

func (u *User) BeforeUpdate() error

func (*User) Confirm

func (u *User) Confirm(ctx context.Context, database *tigris.Database) error

Confirm resets the confimation token and the confirm timestamp

func (*User) ConfirmEmailChange

func (u *User) ConfirmEmailChange(ctx context.Context, database *tigris.Database) error

ConfirmEmailChange confirm the change of email for a user

func (*User) HasRole

func (u *User) HasRole(roleName string) bool

HasRole returns true when the users role is set to roleName

func (*User) IsConfirmed

func (u *User) IsConfirmed() bool

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) Recover

func (u *User) Recover(ctx context.Context, database *tigris.Database) error

Recover resets the recovery token

func (*User) SetEmail

func (u *User) SetEmail(ctx context.Context, database *tigris.Database, email string) error

func (*User) SetRole

func (u *User) SetRole(ctx context.Context, database *tigris.Database, roleName string) error

SetRole sets the users Role to roleName

func (User) TableName

func (User) TableName() string

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

func (u *User) UpdatePassword(ctx context.Context, database *tigris.Database, encrypter *crypto.AESBlockEncrypter, password string) error

func (*User) UpdateUserMetaData

func (u *User) UpdateUserMetaData(ctx context.Context, database *tigris.Database, updates map[string]interface{}) error

UpdateUserMetaData sets all user data from a map of updates, ensuring that it doesn't override attributes that are not in the provided map.

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

Jump to

Keyboard shortcuts

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