models

package
v0.0.0-...-c0e9d1d Latest Latest
Warning

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

Go to latest
Published: Apr 15, 2024 License: AGPL-3.0 Imports: 8 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func RequestApiFullPermissionsAttribute

func RequestApiFullPermissionsAttribute(request *restful.Request, key string) *[]ApiFullPermissions

func RequestApiReadPermissionsAttribute

func RequestApiReadPermissionsAttribute(request *restful.Request, key string) *[]ApiReadPermission

func RequestHasApiFullPermission

func RequestHasApiFullPermission(req *restful.Request, permission ApiFullPermissions) bool

func RequestHasApiReadPermission

func RequestHasApiReadPermission(req *restful.Request, permission ApiReadPermission) bool

Types

type AccountDetail

type AccountDetail struct {
	Id        string     `json:"id"`
	CreatedAt *time.Time `json:"created_at"`
	ApiDomain *string    `json:"api_domain"`
}

type AccountORM

type AccountORM struct {
	ParentAccountId *string `gorm:"index"`
	Id              string  `gorm:"primary_key"`
	CreatedAt       *time.Time
	DeletedAt       *time.Time
	UpdatedAt       *time.Time
	State           AccountState

	// Related entities
	PlatformAccountData *PlatformAccountDataORM `gorm:"foreignKey:AccountId;references:Id"`
}

func (*AccountORM) Detail

func (a *AccountORM) Detail() *AccountDetail

func (*AccountORM) TableName

func (a *AccountORM) TableName() string

type AccountPermissionsCache

type AccountPermissionsCache struct {
	AccountId string
	UserId    string
	Detail    *AccountPermissionsDetail
}

func (AccountPermissionsCache) CacheKey

func (a AccountPermissionsCache) CacheKey() string

func (AccountPermissionsCache) Ttl

type AccountPermissionsDetail

type AccountPermissionsDetail struct {
	AccountAdmin           bool `json:"acct_admin"`
	AccountBuyer           bool `json:"acct_buyer"`
	AccountOwner           bool `json:"acct_owner"`
	AccountUser            bool `json:"acct_user"`
	AccountEmailListReader bool `json:"acct_eml_lst_rdr"`
}

type AccountPermissionsORM

type AccountPermissionsORM struct {
	AccountId string
	Account   *AccountORM `gorm:"foreignKey:AccountId;references:Id"`
	Id        string      `gorm:"uniqueIndex"`
	UserId    string      `gorm:"primaryKey"`
	User      *UserORM    `gorm:"foreignKey:UserId;references:Id"`

	AccountAdmin           bool
	AccountBuyer           bool
	AccountOwner           bool
	AccountUser            bool
	AccountEmailListReader bool
}

func (*AccountPermissionsORM) AccountPermissionsList

func (a *AccountPermissionsORM) AccountPermissionsList() []string

func (*AccountPermissionsORM) Cache

func (*AccountPermissionsORM) Detail

func (*AccountPermissionsORM) GetPrimaryRole

func (a *AccountPermissionsORM) GetPrimaryRole() *util.AccountRoleKind

func (*AccountPermissionsORM) SetPrimaryRole

func (a *AccountPermissionsORM) SetPrimaryRole(role util.AccountRoleKind)

func (*AccountPermissionsORM) TableName

func (a *AccountPermissionsORM) TableName() string

func (*AccountPermissionsORM) Update

type AccountState

type AccountState string
const (
	AccountStatePlatformSignup AccountState = "signup"
	AccountStateActive         AccountState = "active"
	AccountStateSuspended      AccountState = "suspended"
	AccountStateDeleted        AccountState = "deleted"
)

type AccountUserPrimaryRole

type AccountUserPrimaryRole string

type Address

type Address struct {
	City       string `json:"city"`
	Country    string `json:"country"`
	Line1      string `json:"line1"`
	Line2      string `json:"line2"`
	PostalCode string `json:"postal_code"`
	State      string `json:"state"`
}

type AddressKind

type AddressKind string
const (
	BillingAddress  AddressKind = "billing"
	ShippingAddress AddressKind = "shipping"
)

type AddressORM

type AddressORM struct {
	AccountId  string
	Account    *AccountORM `gorm:"foreignKey:AccountId;references:Id"`
	City       string
	Country    string
	CreatedAt  *time.Time
	DeletedAt  *time.Time
	Id         string `gorm:"primary_key"`
	Line1      string
	Line2      string
	PostalCode string
	State      string
	UpdatedAt  *time.Time
}

func (*AddressORM) TableName

func (a *AddressORM) TableName() string

type ApiFullPermissions

type ApiFullPermissions string
const (
	ApiFullPermissionsAccountAdmin  ApiFullPermissions = "acct_adm"
	ApiFullPermissionsUser          ApiFullPermissions = "user"
	ApiFullPermissionsPlatformAdmin ApiFullPermissions = "plat_adm"
	ApiFullPermissionsPlatformUser  ApiFullPermissions = "plat_user"
)

type ApiReadPermission

type ApiReadPermission string
const (
	ApiReadPermissionCurrentCheckoutTransaction ApiReadPermission = "cur_cktrx"
	ApiReadPermissionAccountPurchases           ApiReadPermission = "acct_purchases"
)

type AuthTokenClaims

type AuthTokenClaims struct {
	AccountId string `json:"aid"`
	UserId    string `json:"uid"`
	Name      string `json:"name,omitempty"`
	Email     string `json:"email,omitempty"`
	Initials  string `json:"initials,omitempty"`
	CommonTokenClaims
}

func (*AuthTokenClaims) CommonClaims

func (a *AuthTokenClaims) CommonClaims() *CommonTokenClaims

type CommonTokenClaims

type CommonTokenClaims struct {
	AccountId             *util.AccountId             `json:"aid,omitempty"`
	UserId                *util.UserId                `json:"uid,omitempty"`
	CheckoutTransactionId *util.CheckoutTransactionId `json:"c_xid,omitempty"`
	ApiReadPermissions    []ApiReadPermission         `json:"api_rd,omitempty"`
	ApiFullPermissions    []ApiFullPermissions        `json:"api_full,omitempty"`
	jwt.StandardClaims
}

func GetCommonClaims

func GetCommonClaims(token *jwt.Token) *CommonTokenClaims

func (*CommonTokenClaims) CommonClaims

func (c *CommonTokenClaims) CommonClaims() *CommonTokenClaims

func (*CommonTokenClaims) HasApiFullPermission

func (c *CommonTokenClaims) HasApiFullPermission(permission ApiFullPermissions) bool

func (*CommonTokenClaims) HasApiReadPermission

func (c *CommonTokenClaims) HasApiReadPermission(permission ApiReadPermission) bool

type DeleteUserResponse

type DeleteUserResponse struct {
	AccountId string `json:"account_id"`
	Id        string `json:"id"`
}

/ Appears to be needed by frontend

type EmailDetail

type EmailDetail struct {
	Id         string `json:"id"`
	Email      string `json:"email"`
	Subscribed bool   `json:"subscribed"`
	Verified   bool   `json:"verified"`
}

type EmailORM

type EmailORM struct {
	AccountId  string      `gorm:"uniqueIndex:idx_account_email"`
	Account    *AccountORM `gorm:"foreignKey:AccountId;references:Id"`
	CreatedAt  *time.Time
	DeletedAt  *time.Time
	Email      string `gorm:"uniqueIndex:idx_account_email"`
	Id         string `gorm:"primary_key"`
	Subscribed bool
	UpdatedAt  *time.Time
	UserId     string
	User       *UserORM `gorm:"foreignKey:UserId"`
	Verified   bool
}

func (*EmailORM) Detail

func (e *EmailORM) Detail() *EmailDetail

func (*EmailORM) TableName

func (e *EmailORM) TableName() string

type NewAccount

type NewAccount struct {
	ParentAccountId *string `json:"parent_account_id"`
	ApiDomain       string  `json:"api_domain"`
}

type NewEmail

type NewEmail struct {
	Email      string `json:"email"`
	Subscribed bool   `json:"subscribed"`
	Verified   bool   `json:"verified"`
}

type NewToken

type NewToken struct {
	AccountId           string `json:"account_id"`
	Email               string `json:"email"`
	Password            string `json:"password"`
	PlatformSignupToken string `json:"signup_token"`
}

type NewTokenInternal

type NewTokenInternal struct {
	AccountId util.AccountId `json:"account_id"`
	UserId    util.UserId    `json:"user_id"`
	Email     string         `json:"email"`
}

type NewUser

type NewUser struct {
	AccountId       string  `json:"account_id"`
	LoginEmail      string  `json:"login_email"`
	FirstName       string  `json:"first_name"`
	LastName        string  `json:"last_name"`
	MiddleName      string  `json:"middle_name"`
	BillingAddress  Address `json:"billing_address"`
	ShippingAddress Address `json:"shipping_address"`
	RoleKind        util.AccountRoleKind
}

type PlatformAccountDataDetail

type PlatformAccountDataDetail struct {
	AccountId string     `json:"account_id"`
	CreatedAt *time.Time `json:"created_at"`
	UpdatedAt *time.Time `json:"updated_at"`
	DeletedAt *time.Time `json:"deleted_at"`
	ApiDomain *string    `json:"api_domain"`
}

type PlatformAccountDataORM

type PlatformAccountDataORM struct {
	AccountId string     `json:"account_id"`
	CreatedAt *time.Time `json:"created_at"`
	UpdatedAt *time.Time `json:"updated_at"`
	DeletedAt *time.Time
	ApiDomain *string `json:"api_domain"`
}

config_api Platform Account Data, used to store platform specific data as an extension to the shared Account model

func (*PlatformAccountDataORM) Detail

func (*PlatformAccountDataORM) TableName

func (p *PlatformAccountDataORM) TableName() string

type PlatformPermissionsCache

type PlatformPermissionsCache struct {
	UserID string
	Detail *PlatformPermissionsDetail
}

func (PlatformPermissionsCache) CacheKey

func (a PlatformPermissionsCache) CacheKey() string

func (PlatformPermissionsCache) Ttl

type PlatformPermissionsDetail

type PlatformPermissionsDetail struct {
	PlatformUser  bool `json:"platform_user"`
	PlatformAdmin bool `json:"platform_admin"`
	InternalUser  bool `json:"internal_user"`
}

type PlatformPermissionsORM

type PlatformPermissionsORM struct {
	AccountId string
	Account   *AccountORM `gorm:"foreignKey:AccountId;references:Id"`
	Id        string      `gorm:"uniqueIndex"`
	UserId    string      `gorm:"primaryKey"`
	User      *UserORM    `gorm:"foreignKey:UserId;references:Id"`

	RootUser     bool
	Admin        bool
	InternalUser bool
}

func (*PlatformPermissionsORM) Cache

func (*PlatformPermissionsORM) Detail

func (*PlatformPermissionsORM) RootUserPermissionsList

func (a *PlatformPermissionsORM) RootUserPermissionsList() []string

func (*PlatformPermissionsORM) TableName

func (r *PlatformPermissionsORM) TableName() string

func (*PlatformPermissionsORM) Update

type TokenCache

type TokenCache struct {
	AccountId string               `json:"account_id"`
	UserId    string               `json:"user_id"`
	Email     string               `json:"email"`
	IssuedAt  int64                `json:"issued_at"`
	ExpiresAt int64                `json:"expires_at"`
	Id        string               `json:"id"`
	Token     string               `json:"token"`
	Role      util.AccountRoleKind `json:"role"`
}

func (*TokenCache) CacheKey

func (t *TokenCache) CacheKey() string

func (*TokenCache) MarshalBinary

func (t *TokenCache) MarshalBinary() ([]byte, error)

func (*TokenCache) Ttl

func (t *TokenCache) Ttl() time.Duration

type TokenDetail

type TokenDetail struct {
	AccountId    string               `json:"account_id"`
	UserId       string               `json:"user_id"`
	Email        string               `json:"email"`
	Issuer       string               `json:"issuer"`
	IssuedAt     time.Time            `json:"issued_at"`
	ExpiresAt    time.Time            `json:"expires_at"`
	Id           string               `json:"id"`
	Token        string               `json:"token"`
	FriendlyName string               `json:"friendly_name"`
	Initals      string               `json:"initials"`
	PlatformUser bool                 `json:"platform_account_user"`
	Role         util.AccountRoleKind `json:"role"`
}

func (*TokenDetail) ToCache

func (t *TokenDetail) ToCache() *TokenCache

type TokenWithCommonClaims

type TokenWithCommonClaims interface {
	CommonClaims() *CommonTokenClaims
	jwt.Claims
}

type UpdateAccount

type UpdateAccount struct {
	ApiDomain    *string       `json:"api_domain"`
	AccountState *AccountState `json:"state"`
}

type UpdateEmail

type UpdateEmail struct {
	Subscribed bool `json:"subscribed"`
	Verified   bool `json:"verified"`
}

type UpdatePlatformAccountData

type UpdatePlatformAccountData struct {
	DeletedAt *time.Time `json:"deleted_at"`
	ApiDomain *string    `json:"api_domain"`
}

type UpdateUser

type UpdateUser struct {
	LoginEmail      *string  `json:"login_email"`
	FirstName       *string  `json:"first_name"`
	LastName        *string  `json:"last_name"`
	MiddleName      *string  `json:"middle_name"`
	BillingAddress  *Address `json:"billing_address"`
	ShippingAddress *Address `json:"shipping_address"`

	// Convenience
	AccountUserPrimaryRole *util.AccountRoleKind `json:"account_user_role"`
}

type UserAddressORM

type UserAddressORM struct {
	UserId      string      `gorm:"primary_key;column:user_id"`
	AddressId   string      `gorm:"primary_key;column:address_id"`
	AddressKind AddressKind `gorm:"primary_key;column:address_kind"`
}

func (*UserAddressORM) TableName

func (u *UserAddressORM) TableName() string

type UserDetail

type UserDetail struct {
	AccountId       string         `json:"account_id"`
	Id              string         `json:"id"`
	Emails          []*EmailDetail `json:"emails"`
	FirstName       string         `json:"first_name"`
	FriendlyName    string         `json:"friendly_name"`
	Initials        string         `json:"initials"`
	LastName        string         `json:"last_name"`
	LoginEmail      string         `json:"login_email"`
	MiddleName      string         `json:"middle_name"`
	BillingAddress  Address        `json:"billing_address"`
	ShippingAddress Address        `json:"shipping_address"`

	// Computed
	AccountUserRole *util.AccountRoleKind `json:"account_user_role"`

	// Related entities
	AccountPermissions *AccountPermissionsDetail `json:"account_user_permissions"`
}

type UserORM

type UserORM struct {
	AccountId string
	Account   *AccountORM `gorm:"foreignKey:AccountId;references:Id"`
	// BillingAddress  *AddressORM `gorm:"many2many:user_addresses"`
	CreatedAt    *time.Time
	DeletedAt    *time.Time
	Emails       []*EmailORM `gorm:"foreignKey:UserId;references:Id"`
	FirstName    string
	Id           string `gorm:"primary_key"`
	LastName     string
	LoginEmail   string
	LoginEmailId string
	// LoginEmailRef *EmailORM `gorm:"foreignKey:LoginEmailId;references:Id"`
	MiddleName string
	// ShippingAddress *AddressORM `gorm:"many2many:user_addresses"`
	UpdatedAt *time.Time

	// Related entities
	RootUserPermissions *PlatformPermissionsORM `gorm:"foreignKey:UserId;references:Id"`
	AccountPermissions  *AccountPermissionsORM  `gorm:"foreignKey:UserId;references:Id"`
}

func (*UserORM) Detail

func (u *UserORM) Detail() *UserDetail

func (*UserORM) FriendlyName

func (u *UserORM) FriendlyName() string

func (*UserORM) Initials

func (u *UserORM) Initials() string

func (*UserORM) SetAccountUserPrimaryRole

func (u *UserORM) SetAccountUserPrimaryRole(roleKind util.AccountRoleKind)

func (*UserORM) TableName

func (u *UserORM) TableName() string

Jump to

Keyboard shortcuts

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