console

package
v1.19.7 Latest Latest
Warning

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

Go to latest
Published: Jan 5, 2021 License: AGPL-3.0 Imports: 27 Imported by: 0

Documentation

Index

Constants

View Source
const (

	// TestPasswordCost is the hashing complexity to use for testing.
	TestPasswordCost = bcrypt.MinCost
)

Variables

View Source
var (
	// Error describes internal console error.
	Error = errs.Class("service error")

	// ErrNoMembership is error type of not belonging to a specific project.
	ErrNoMembership = errs.Class("no membership error")

	// ErrTokenExpiration is error type of token reached expiration time.
	ErrTokenExpiration = errs.Class("token expiration error")

	// ErrProjLimit is error type of project limit.
	ErrProjLimit = errs.Class("project limit error")

	// ErrUsage is error type of project usage.
	ErrUsage = errs.Class("project usage error")

	// ErrEmailUsed is error type that occurs on repeating auth attempts with email.
	ErrEmailUsed = errs.Class("email used")
)
View Source
var ErrUnauthorized = errs.Class("unauthorized error")

ErrUnauthorized is error class for authorization related errors.

View Source
var ErrValidation = errs.Class("validation error")

ErrValidation validation related error class.

View Source
var NoCreditForUpdateErr = errs.Class("no credit found to update")

NoCreditForUpdateErr is a error message used when no credits are found for update when new users sign up.

Functions

func GetRequest added in v1.12.3

func GetRequest(ctx context.Context) *http.Request

GetRequest gets *http.Request from context.

func ValidateFullName added in v0.27.0

func ValidateFullName(name string) error

ValidateFullName validates full name.

func ValidateNameAndDescription added in v1.13.1

func ValidateNameAndDescription(name string, description string) error

ValidateNameAndDescription validates project name and description strings. Project name must have more than 0 and less than 21 symbols. Project description can't have more than hundred symbols.

func ValidatePassword added in v0.27.0

func ValidatePassword(pass string) error

ValidatePassword validates password.

func WithAuth

func WithAuth(ctx context.Context, auth Authorization) context.Context

WithAuth creates new context with Authorization.

func WithAuthFailure

func WithAuthFailure(ctx context.Context, err error) context.Context

WithAuthFailure creates new context with authorization failure.

func WithRequest added in v1.12.3

func WithRequest(ctx context.Context, req *http.Request) context.Context

WithRequest creates new context with *http.Request.

Types

type APIKeyCursor added in v0.21.0

type APIKeyCursor struct {
	Search         string
	Limit          uint
	Page           uint
	Order          APIKeyOrder
	OrderDirection OrderDirection
}

APIKeyCursor holds info for api keys cursor pagination.

type APIKeyInfo

type APIKeyInfo struct {
	ID        uuid.UUID `json:"id"`
	ProjectID uuid.UUID `json:"projectId"`
	PartnerID uuid.UUID `json:"partnerId"`
	Name      string    `json:"name"`
	Secret    []byte    `json:"-"`
	CreatedAt time.Time `json:"createdAt"`
}

APIKeyInfo describing api key model in the database.

type APIKeyOrder added in v0.21.0

type APIKeyOrder uint8

APIKeyOrder is used for querying api keys in specified order.

const (
	// KeyName indicates that we should order by key name.
	KeyName APIKeyOrder = 1
	// CreationDate indicates that we should order by creation date.
	CreationDate APIKeyOrder = 2
)

type APIKeyPage added in v0.21.0

type APIKeyPage struct {
	APIKeys []APIKeyInfo

	Search         string
	Limit          uint
	Order          APIKeyOrder
	OrderDirection OrderDirection
	Offset         uint64

	PageCount   uint
	CurrentPage uint
	TotalCount  uint64
}

APIKeyPage represent api key page result.

type APIKeys

type APIKeys interface {
	// GetPagedByProjectID is a method for querying API keys from the database by projectID and cursor
	GetPagedByProjectID(ctx context.Context, projectID uuid.UUID, cursor APIKeyCursor) (akp *APIKeyPage, err error)
	// Get retrieves APIKeyInfo with given ID
	Get(ctx context.Context, id uuid.UUID) (*APIKeyInfo, error)
	// GetByHead retrieves APIKeyInfo for given key head
	GetByHead(ctx context.Context, head []byte) (*APIKeyInfo, error)
	// GetByNameAndProjectID retrieves APIKeyInfo for given key name and projectID
	GetByNameAndProjectID(ctx context.Context, name string, projectID uuid.UUID) (*APIKeyInfo, error)
	// Create creates and stores new APIKeyInfo
	Create(ctx context.Context, head []byte, info APIKeyInfo) (*APIKeyInfo, error)
	// Update updates APIKeyInfo in store
	Update(ctx context.Context, key APIKeyInfo) error
	// Delete deletes APIKeyInfo from store
	Delete(ctx context.Context, id uuid.UUID) error
}

APIKeys is interface for working with api keys store.

architecture: Database

type Authorization

type Authorization struct {
	User   User
	Claims consoleauth.Claims
}

Authorization contains auth info of authorized User.

func GetAuth

func GetAuth(ctx context.Context) (Authorization, error)

GetAuth gets Authorization from context.

type BillingHistoryItem added in v0.25.0

type BillingHistoryItem struct {
	ID          string                 `json:"id"`
	Description string                 `json:"description"`
	Amount      int64                  `json:"amount"`
	Remaining   int64                  `json:"remaining"`
	Received    int64                  `json:"received"`
	Status      string                 `json:"status"`
	Link        string                 `json:"link"`
	Start       time.Time              `json:"start"`
	End         time.Time              `json:"end"`
	Type        BillingHistoryItemType `json:"type"`
}

BillingHistoryItem holds all public information about billing history line.

type BillingHistoryItemType added in v0.25.0

type BillingHistoryItemType int

BillingHistoryItemType indicates type of billing history item.

const (
	// Invoice is a Stripe invoice billing item.
	Invoice BillingHistoryItemType = 0
	// Transaction is a Coinpayments transaction billing item.
	Transaction BillingHistoryItemType = 1
	// Charge is a credit card charge billing item.
	Charge BillingHistoryItemType = 2
	// Coupon is an entity that adds some funds to Accounts balance for some fixed period.
	Coupon BillingHistoryItemType = 3
	// DepositBonus is an entity that adds some funds to Accounts balance after deposit with storj coins.
	DepositBonus BillingHistoryItemType = 4
)

type Buckets added in v1.15.1

type Buckets interface {
	// Create creates a new bucket.
	CreateBucket(ctx context.Context, bucket storj.Bucket) (_ storj.Bucket, err error)
	// Get returns an existing bucket.
	GetBucket(ctx context.Context, bucketName []byte, projectID uuid.UUID) (bucket storj.Bucket, err error)
	// GetBucketID returns an existing bucket id.
	GetBucketID(ctx context.Context, bucket metabase.BucketLocation) (id uuid.UUID, err error)
	// UpdateBucket updates an existing bucket.
	UpdateBucket(ctx context.Context, bucket storj.Bucket) (_ storj.Bucket, err error)
	// Delete deletes a bucket.
	DeleteBucket(ctx context.Context, bucketName []byte, projectID uuid.UUID) (err error)
	// List returns all buckets for a project.
	ListBuckets(ctx context.Context, projectID uuid.UUID, listOpts storj.BucketListOptions, allowedBuckets macaroon.AllowedBuckets) (bucketList storj.BucketList, err error)
	// CountBuckets returns the number of buckets a project currently has.
	CountBuckets(ctx context.Context, projectID uuid.UUID) (int, error)
}

Buckets is the interface for the database to interact with buckets.

architecture: Database

type Config added in v0.34.8

type Config struct {
	PasswordCost            int  `help:"password hashing cost (0=automatic)" internal:"true" default:"0"`
	OpenRegistrationEnabled bool `help:"enable open registration" default:"false"`
	DefaultProjectLimit     int  `help:"default project limits for users" default:"10"`
}

Config keeps track of core console service configuration parameters.

type CreateCredit added in v0.18.0

type CreateCredit struct {
	OfferInfo     rewards.RedeemOffer
	UserID        uuid.UUID
	OfferID       int
	Type          CreditType
	ReferredBy    *uuid.UUID
	CreditsEarned currency.USD
	ExpiresAt     time.Time
}

CreateCredit holds information that's needed when create a new record of user credit.

func NewCredit added in v0.18.0

func NewCredit(currentReward *rewards.Offer, creditType CreditType, userID uuid.UUID, referrerID *uuid.UUID) (*CreateCredit, error)

NewCredit returns a new credit data.

type CreateUser

type CreateUser struct {
	FullName  string `json:"fullName"`
	ShortName string `json:"shortName"`
	Email     string `json:"email"`
	PartnerID string `json:"partnerId"`
	Password  string `json:"password"`
}

CreateUser struct holds info for User creation.

func (*CreateUser) IsValid

func (user *CreateUser) IsValid() error

IsValid checks CreateUser validity and returns error describing whats wrong.

type CreditType added in v0.17.0

type CreditType string

CreditType indicates a type of a credit.

const (
	// Invitee is a type of credits earned by invitee.
	Invitee CreditType = "invitee"
	// Referrer is a type of credits earned by referrer.
	Referrer CreditType = "referrer"
)

type DB

type DB interface {
	// Users is a getter for Users repository.
	Users() Users
	// Projects is a getter for Projects repository.
	Projects() Projects
	// ProjectMembers is a getter for ProjectMembers repository.
	ProjectMembers() ProjectMembers
	// APIKeys is a getter for APIKeys repository.
	APIKeys() APIKeys
	// RegistrationTokens is a getter for RegistrationTokens repository.
	RegistrationTokens() RegistrationTokens
	// ResetPasswordTokens is a getter for ResetPasswordTokens repository.
	ResetPasswordTokens() ResetPasswordTokens
	// UserCredits is a getter for UserCredits repository.
	UserCredits() UserCredits

	// WithTx is a method for executing transactions with retrying as necessary.
	WithTx(ctx context.Context, fn func(ctx context.Context, tx DBTx) error) error
}

DB contains access to different satellite databases.

architecture: Database

type DBTx

type DBTx interface {
	DB
	// Commit is a method for committing and closing transaction.
	Commit() error
	// Rollback is a method for rollback and closing transaction.
	Rollback() error
}

DBTx extends Database with transaction scope.

type OrderDirection added in v0.21.0

type OrderDirection uint8

OrderDirection is used for members in specific order direction.

const (
	// Ascending indicates that we should order ascending.
	Ascending OrderDirection = 1
	// Descending indicates that we should order descending.
	Descending OrderDirection = 2
)

type PaymentsService added in v0.24.0

type PaymentsService struct {
	// contains filtered or unexported fields
}

PaymentsService separates all payment related functionality.

func (PaymentsService) AccountBalance added in v0.24.0

func (paymentService PaymentsService) AccountBalance(ctx context.Context) (balance payments.Balance, err error)

AccountBalance return account balance.

func (PaymentsService) AddCreditCard added in v0.24.0

func (paymentService PaymentsService) AddCreditCard(ctx context.Context, creditCardToken string) (err error)

AddCreditCard is used to save new credit card and attach it to payment account.

func (PaymentsService) AddPromotionalCoupon added in v0.31.4

func (paymentService PaymentsService) AddPromotionalCoupon(ctx context.Context, userID uuid.UUID) (err error)

AddPromotionalCoupon creates new coupon for specified user.

func (PaymentsService) BillingHistory added in v0.25.0

func (paymentService PaymentsService) BillingHistory(ctx context.Context) (billingHistory []*BillingHistoryItem, err error)

BillingHistory returns a list of billing history items for payment account.

func (PaymentsService) ListCreditCards added in v0.24.0

func (paymentService PaymentsService) ListCreditCards(ctx context.Context) (_ []payments.CreditCard, err error)

ListCreditCards returns a list of credit cards for a given payment account.

func (PaymentsService) MakeCreditCardDefault added in v0.24.0

func (paymentService PaymentsService) MakeCreditCardDefault(ctx context.Context, cardID string) (err error)

MakeCreditCardDefault makes a credit card default payment method.

func (PaymentsService) PopulatePromotionalCoupons added in v0.31.0

func (paymentService PaymentsService) PopulatePromotionalCoupons(ctx context.Context) (err error)

PopulatePromotionalCoupons is used to populate promotional coupons through all active users who already have a project, payment method and do not have a promotional coupon yet. And updates project limits to selected size.

func (PaymentsService) ProjectsCharges added in v0.26.0

func (paymentService PaymentsService) ProjectsCharges(ctx context.Context, since, before time.Time) (_ []payments.ProjectCharge, err error)

ProjectsCharges returns how much money current user will be charged for each project which he owns.

func (PaymentsService) RemoveCreditCard added in v0.24.0

func (paymentService PaymentsService) RemoveCreditCard(ctx context.Context, cardID string) (err error)

RemoveCreditCard is used to detach a credit card from payment account.

func (PaymentsService) SetupAccount added in v0.24.0

func (paymentService PaymentsService) SetupAccount(ctx context.Context) (err error)

SetupAccount creates payment account for authorized user.

func (PaymentsService) TokenDeposit added in v0.26.0

func (paymentService PaymentsService) TokenDeposit(ctx context.Context, amount int64) (_ *payments.Transaction, err error)

TokenDeposit creates new deposit transaction for adding STORJ tokens to account balance.

type Project

type Project struct {
	ID uuid.UUID `json:"id"`

	Name        string    `json:"name"`
	Description string    `json:"description"`
	PartnerID   uuid.UUID `json:"partnerId"`
	OwnerID     uuid.UUID `json:"ownerId"`
	RateLimit   *int      `json:"rateLimit"`
	MaxBuckets  *int      `json:"maxBuckets"`
	CreatedAt   time.Time `json:"createdAt"`
}

Project is a database object that describes Project entity.

type ProjectInfo

type ProjectInfo struct {
	Name        string `json:"name"`
	Description string `json:"description"`

	CreatedAt time.Time `json:"createdAt"`
}

ProjectInfo holds data needed to create/update Project.

type ProjectMember

type ProjectMember struct {
	// FK on Users table.
	MemberID uuid.UUID
	// FK on Projects table.
	ProjectID uuid.UUID

	CreatedAt time.Time
}

ProjectMember is a database object that describes ProjectMember entity.

type ProjectMemberOrder

type ProjectMemberOrder int8

ProjectMemberOrder is used for querying project members in specified order.

const (
	// Name indicates that we should order by full name.
	Name ProjectMemberOrder = 1
	// Email indicates that we should order by email.
	Email ProjectMemberOrder = 2
	// Created indicates that we should order by created date.
	Created ProjectMemberOrder = 3
)

type ProjectMembers

type ProjectMembers interface {
	// GetByMemberID is a method for querying project members from the database by memberID.
	GetByMemberID(ctx context.Context, memberID uuid.UUID) ([]ProjectMember, error)
	// GetPagedByProjectID is a method for querying project members from the database by projectID and cursor
	GetPagedByProjectID(ctx context.Context, projectID uuid.UUID, cursor ProjectMembersCursor) (*ProjectMembersPage, error)
	// Insert is a method for inserting project member into the database.
	Insert(ctx context.Context, memberID, projectID uuid.UUID) (*ProjectMember, error)
	// Delete is a method for deleting project member by memberID and projectID from the database.
	Delete(ctx context.Context, memberID, projectID uuid.UUID) error
}

ProjectMembers exposes methods to manage ProjectMembers table in database.

architecture: Database

type ProjectMembersCursor added in v0.17.0

type ProjectMembersCursor struct {
	Search         string
	Limit          uint
	Page           uint
	Order          ProjectMemberOrder
	OrderDirection OrderDirection
}

ProjectMembersCursor holds info for project members cursor pagination.

type ProjectMembersPage added in v0.17.0

type ProjectMembersPage struct {
	ProjectMembers []ProjectMember

	Search         string
	Limit          uint
	Order          ProjectMemberOrder
	OrderDirection OrderDirection
	Offset         uint64

	PageCount   uint
	CurrentPage uint
	TotalCount  uint64
}

ProjectMembersPage represent project members page result.

type ProjectUsageLimits added in v0.28.0

type ProjectUsageLimits struct {
	StorageLimit   int64 `json:"storageLimit"`
	BandwidthLimit int64 `json:"bandwidthLimit"`
	StorageUsed    int64 `json:"storageUsed"`
	BandwidthUsed  int64 `json:"bandwidthUsed"`
}

ProjectUsageLimits holds project usage limits and current usage.

type Projects

type Projects interface {
	// GetAll is a method for querying all projects from the database.
	GetAll(ctx context.Context) ([]Project, error)
	// GetCreatedBefore retrieves all projects created before provided date.
	GetCreatedBefore(ctx context.Context, before time.Time) ([]Project, error)
	// GetByUserID returns a list of projects where user is a project member.
	GetByUserID(ctx context.Context, userID uuid.UUID) ([]Project, error)
	// GetOwn returns a list of projects where user is an owner.
	GetOwn(ctx context.Context, userID uuid.UUID) ([]Project, error)
	// Get is a method for querying project from the database by id.
	Get(ctx context.Context, id uuid.UUID) (*Project, error)
	// Insert is a method for inserting project into the database.
	Insert(ctx context.Context, project *Project) (*Project, error)
	// Delete is a method for deleting project by Id from the database.
	Delete(ctx context.Context, id uuid.UUID) error
	// Update is a method for updating project entity.
	Update(ctx context.Context, project *Project) error
	// List returns paginated projects, created before provided timestamp.
	List(ctx context.Context, offset int64, limit int, before time.Time) (ProjectsPage, error)

	// UpdateRateLimit is a method for updating projects rate limit.
	UpdateRateLimit(ctx context.Context, id uuid.UUID, newLimit int) error

	// GetMaxBuckets is a method to get the maximum number of buckets allowed for the project
	GetMaxBuckets(ctx context.Context, id uuid.UUID) (*int, error)
	// UpdateBucketLimit is a method for updating projects bucket limit.
	UpdateBucketLimit(ctx context.Context, id uuid.UUID, newLimit int) error
}

Projects exposes methods to manage Project table in database.

architecture: Database

type ProjectsPage added in v0.25.0

type ProjectsPage struct {
	Projects   []Project
	Next       bool
	NextOffset int64
}

ProjectsPage returns paginated projects, providing next offset if there are more projects to retrieve.

type RegistrationSecret

type RegistrationSecret [32]byte

RegistrationSecret stores secret of registration token.

func NewRegistrationSecret

func NewRegistrationSecret() (RegistrationSecret, error)

NewRegistrationSecret creates new registration secret.

func RegistrationSecretFromBase64

func RegistrationSecretFromBase64(s string) (RegistrationSecret, error)

RegistrationSecretFromBase64 creates new registration secret from base64 string.

func (RegistrationSecret) IsZero added in v0.34.8

func (secret RegistrationSecret) IsZero() bool

IsZero returns if the RegistrationSecret is not set.

func (RegistrationSecret) String

func (secret RegistrationSecret) String() string

String implements Stringer.

type RegistrationToken

type RegistrationToken struct {
	// Secret is PK of the table and keeps unique value forRegToken
	Secret RegistrationSecret
	// OwnerID stores current token owner ID
	OwnerID *uuid.UUID

	// ProjectLimit defines how many projects user is able to create
	ProjectLimit int `json:"projectLimit"`

	CreatedAt time.Time `json:"createdAt"`
}

RegistrationToken describing api key model in the database.

type RegistrationTokens

type RegistrationTokens interface {
	// Create creates new registration token
	Create(ctx context.Context, projectLimit int) (*RegistrationToken, error)
	// GetBySecret retrieves RegTokenInfo with given Secret
	GetBySecret(ctx context.Context, secret RegistrationSecret) (*RegistrationToken, error)
	// GetByOwnerID retrieves RegTokenInfo by ownerID
	GetByOwnerID(ctx context.Context, ownerID uuid.UUID) (*RegistrationToken, error)
	// UpdateOwner updates registration token's owner
	UpdateOwner(ctx context.Context, secret RegistrationSecret, ownerID uuid.UUID) error
}

RegistrationTokens is interface for working with registration tokens.

architecture: Database

type ResetPasswordSecret added in v0.12.0

type ResetPasswordSecret [32]byte

ResetPasswordSecret stores secret of registration token.

func NewResetPasswordSecret added in v0.12.0

func NewResetPasswordSecret() (ResetPasswordSecret, error)

NewResetPasswordSecret creates new reset password secret.

func ResetPasswordSecretFromBase64 added in v0.12.0

func ResetPasswordSecretFromBase64(s string) (ResetPasswordSecret, error)

ResetPasswordSecretFromBase64 creates new reset password secret from base64 string.

func (ResetPasswordSecret) String added in v0.12.0

func (secret ResetPasswordSecret) String() string

String implements Stringer.

type ResetPasswordToken added in v0.12.0

type ResetPasswordToken struct {
	// Secret is PK of the table and keeps unique value for reset password token
	Secret ResetPasswordSecret
	// OwnerID stores current token owner ID
	OwnerID *uuid.UUID

	CreatedAt time.Time `json:"createdAt"`
}

ResetPasswordToken describing reset password model in the database.

type ResetPasswordTokens added in v0.12.0

type ResetPasswordTokens interface {
	// Create creates new reset password token
	Create(ctx context.Context, ownerID uuid.UUID) (*ResetPasswordToken, error)
	// GetBySecret retrieves ResetPasswordToken with given secret
	GetBySecret(ctx context.Context, secret ResetPasswordSecret) (*ResetPasswordToken, error)
	// GetByOwnerID retrieves ResetPasswordToken by ownerID
	GetByOwnerID(ctx context.Context, ownerID uuid.UUID) (*ResetPasswordToken, error)
	// Delete deletes ResetPasswordToken by ResetPasswordSecret
	Delete(ctx context.Context, secret ResetPasswordSecret) error
}

ResetPasswordTokens is interface for working with reset password tokens.

architecture: Database

type Service

type Service struct {
	Signer
	// contains filtered or unexported fields
}

Service is handling accounts related logic.

architecture: Service

func NewService

func NewService(log *zap.Logger, signer Signer, store DB, projectAccounting accounting.ProjectAccounting, projectUsage *accounting.Service, buckets Buckets, rewards rewards.DB, partners *rewards.PartnersService, accounts payments.Accounts, config Config, minCoinPayment int64) (*Service, error)

NewService returns new instance of Service.

func (*Service) ActivateAccount

func (s *Service) ActivateAccount(ctx context.Context, activationToken string) (err error)

ActivateAccount - is a method for activating user account after registration.

func (*Service) AddProjectMembers

func (s *Service) AddProjectMembers(ctx context.Context, projectID uuid.UUID, emails []string) (users []*User, err error)

AddProjectMembers adds users by email to given project.

func (*Service) Authorize

func (s *Service) Authorize(ctx context.Context) (a Authorization, err error)

Authorize validates token from context and returns authorized Authorization.

func (*Service) ChangeEmail added in v1.17.1

func (s *Service) ChangeEmail(ctx context.Context, newEmail string) (err error)

ChangeEmail updates email for a given user.

func (*Service) ChangePassword

func (s *Service) ChangePassword(ctx context.Context, pass, newPass string) (err error)

ChangePassword updates password for a given user.

func (*Service) CreateAPIKey

func (s *Service) CreateAPIKey(ctx context.Context, projectID uuid.UUID, name string) (_ *APIKeyInfo, _ *macaroon.APIKey, err error)

CreateAPIKey creates new api key.

func (*Service) CreateProject

func (s *Service) CreateProject(ctx context.Context, projectInfo ProjectInfo) (p *Project, err error)

CreateProject is a method for creating new project.

func (*Service) CreateRegToken

func (s *Service) CreateRegToken(ctx context.Context, projLimit int) (_ *RegistrationToken, err error)

CreateRegToken creates new registration token. Needed for testing.

func (*Service) CreateUser

func (s *Service) CreateUser(ctx context.Context, user CreateUser, tokenSecret RegistrationSecret, refUserID string) (u *User, err error)

CreateUser gets password hash value and creates new inactive User.

func (*Service) DeleteAPIKeys

func (s *Service) DeleteAPIKeys(ctx context.Context, ids []uuid.UUID) (err error)

DeleteAPIKeys deletes api key by id.

func (*Service) DeleteAccount

func (s *Service) DeleteAccount(ctx context.Context, password string) (err error)

DeleteAccount deletes User.

func (*Service) DeleteProject

func (s *Service) DeleteProject(ctx context.Context, projectID uuid.UUID) (err error)

DeleteProject is a method for deleting project by id.

func (*Service) DeleteProjectMembers

func (s *Service) DeleteProjectMembers(ctx context.Context, projectID uuid.UUID, emails []string) (err error)

DeleteProjectMembers removes users by email from given project.

func (*Service) GenerateActivationToken

func (s *Service) GenerateActivationToken(ctx context.Context, id uuid.UUID, email string) (token string, err error)

GenerateActivationToken - is a method for generating activation token.

func (*Service) GeneratePasswordRecoveryToken added in v0.10.0

func (s *Service) GeneratePasswordRecoveryToken(ctx context.Context, id uuid.UUID) (token string, err error)

GeneratePasswordRecoveryToken - is a method for generating password recovery token.

func (*Service) GetAPIKeyInfo

func (s *Service) GetAPIKeyInfo(ctx context.Context, id uuid.UUID) (_ *APIKeyInfo, err error)

GetAPIKeyInfo retrieves api key by id.

func (*Service) GetAPIKeys added in v0.21.0

func (s *Service) GetAPIKeys(ctx context.Context, projectID uuid.UUID, cursor APIKeyCursor) (page *APIKeyPage, err error)

GetAPIKeys returns paged api key list for given Project.

func (*Service) GetAllBucketNames added in v1.18.1

func (s *Service) GetAllBucketNames(ctx context.Context, projectID uuid.UUID) (_ []string, err error)

GetAllBucketNames retrieves all bucket names of a specific project.

func (*Service) GetBucketTotals added in v0.12.0

func (s *Service) GetBucketTotals(ctx context.Context, projectID uuid.UUID, cursor accounting.BucketUsageCursor, before time.Time) (_ *accounting.BucketUsagePage, err error)

GetBucketTotals retrieves paged bucket total usages since project creation.

func (*Service) GetBucketUsageRollups added in v0.9.0

func (s *Service) GetBucketUsageRollups(ctx context.Context, projectID uuid.UUID, since, before time.Time) (_ []accounting.BucketUsageRollup, err error)

GetBucketUsageRollups retrieves summed usage rollups for every bucket of particular project for a given period.

func (*Service) GetCurrentRewardByType added in v0.15.0

func (s *Service) GetCurrentRewardByType(ctx context.Context, offerType rewards.OfferType) (offer *rewards.Offer, err error)

GetCurrentRewardByType is a method for querying current active reward offer based on its type.

func (*Service) GetProject

func (s *Service) GetProject(ctx context.Context, projectID uuid.UUID) (p *Project, err error)

GetProject is a method for querying project by id.

func (*Service) GetProjectMembers

func (s *Service) GetProjectMembers(ctx context.Context, projectID uuid.UUID, cursor ProjectMembersCursor) (pmp *ProjectMembersPage, err error)

GetProjectMembers returns ProjectMembers for given Project.

func (*Service) GetProjectUsage added in v0.9.0

func (s *Service) GetProjectUsage(ctx context.Context, projectID uuid.UUID, since, before time.Time) (_ *accounting.ProjectUsage, err error)

GetProjectUsage retrieves project usage for a given period.

func (*Service) GetProjectUsageLimits added in v0.28.0

func (s *Service) GetProjectUsageLimits(ctx context.Context, projectID uuid.UUID) (_ *ProjectUsageLimits, err error)

GetProjectUsageLimits returns project limits and current usage.

func (*Service) GetUser

func (s *Service) GetUser(ctx context.Context, id uuid.UUID) (u *User, err error)

GetUser returns User by id.

func (*Service) GetUserByEmail added in v0.10.0

func (s *Service) GetUserByEmail(ctx context.Context, email string) (u *User, err error)

GetUserByEmail returns User by email.

func (*Service) GetUserCreditUsage added in v0.14.0

func (s *Service) GetUserCreditUsage(ctx context.Context) (usage *UserCreditUsage, err error)

GetUserCreditUsage is a method for querying users' credit information up until now.

func (*Service) GetUsersProjects

func (s *Service) GetUsersProjects(ctx context.Context) (ps []Project, err error)

GetUsersProjects is a method for querying all projects.

func (*Service) Payments added in v0.24.0

func (s *Service) Payments() PaymentsService

Payments separates all payment related functionality.

func (*Service) PaywallEnabled added in v1.10.1

func (s *Service) PaywallEnabled(userID uuid.UUID) bool

PaywallEnabled returns a true if a credit card or account balance is required to create projects.

func (*Service) ResetPassword added in v0.10.0

func (s *Service) ResetPassword(ctx context.Context, resetPasswordToken, password string) (err error)

ResetPassword - is a method for resetting user password.

func (*Service) RevokeResetPasswordToken added in v0.12.0

func (s *Service) RevokeResetPasswordToken(ctx context.Context, resetPasswordToken string) (err error)

RevokeResetPasswordToken - is a method to revoke reset password token.

func (*Service) Token

func (s *Service) Token(ctx context.Context, email, password string) (token string, err error)

Token authenticates User by credentials and returns auth token.

func (*Service) UpdateAccount

func (s *Service) UpdateAccount(ctx context.Context, fullName string, shortName string) (err error)

UpdateAccount updates User.

func (*Service) UpdateProject

func (s *Service) UpdateProject(ctx context.Context, projectID uuid.UUID, name string, description string) (p *Project, err error)

UpdateProject is a method for updating project name and description by id.

type Signer

type Signer interface {
	Sign(data []byte) ([]byte, error)
}

Signer creates signature for provided data.

type User

type User struct {
	ID uuid.UUID `json:"id"`

	FullName  string `json:"fullName"`
	ShortName string `json:"shortName"`

	Email        string `json:"email"`
	PasswordHash []byte `json:"passwordHash"`

	Status    UserStatus `json:"status"`
	PartnerID uuid.UUID  `json:"partnerId"`

	CreatedAt time.Time `json:"createdAt"`

	ProjectLimit int `json:"projectLimit"`
}

User is a database object that describes User entity.

type UserCredit added in v0.14.0

type UserCredit struct {
	ID            int
	UserID        uuid.UUID
	OfferID       int
	ReferredBy    *uuid.UUID
	Type          CreditType
	CreditsEarned currency.USD
	CreditsUsed   currency.USD
	ExpiresAt     time.Time
	CreatedAt     time.Time
}

UserCredit holds information about an user's credit.

type UserCreditUsage added in v0.14.0

type UserCreditUsage struct {
	Referred         int64
	AvailableCredits currency.USD
	UsedCredits      currency.USD
}

UserCreditUsage holds information about credit usage information.

type UserCredits added in v0.14.0

type UserCredits interface {
	GetCreditUsage(ctx context.Context, userID uuid.UUID, expirationEndDate time.Time) (*UserCreditUsage, error)
	Create(ctx context.Context, userCredit CreateCredit) error
	UpdateEarnedCredits(ctx context.Context, userID uuid.UUID) error
	UpdateAvailableCredits(ctx context.Context, creditsToCharge int, id uuid.UUID, billingStartDate time.Time) (remainingCharge int, err error)
}

UserCredits holds information to interact with database.

architecture: Database

type UserInfo

type UserInfo struct {
	FullName  string `json:"fullName"`
	ShortName string `json:"shortName"`
}

UserInfo holds User updatable data.

func (*UserInfo) IsValid

func (user *UserInfo) IsValid() error

IsValid checks UserInfo validity and returns error describing whats wrong.

type UserStatus

type UserStatus int

UserStatus - is used to indicate status of the users account.

const (
	// Inactive is a user status that he receives after registration.
	Inactive UserStatus = 0
	// Active is a user status that he receives after account activation.
	Active UserStatus = 1
	// Deleted is a user status that he receives after deleting account.
	Deleted UserStatus = 2
)

type Users

type Users interface {
	// Get is a method for querying user from the database by id.
	Get(ctx context.Context, id uuid.UUID) (*User, error)
	// GetByEmail is a method for querying user by email from the database.
	GetByEmail(ctx context.Context, email string) (*User, error)
	// Insert is a method for inserting user into the database.
	Insert(ctx context.Context, user *User) (*User, error)
	// Delete is a method for deleting user by Id from the database.
	Delete(ctx context.Context, id uuid.UUID) error
	// Update is a method for updating user entity.
	Update(ctx context.Context, user *User) error
	// GetProjectLimit is a method to get the users project limit
	GetProjectLimit(ctx context.Context, id uuid.UUID) (limit int, err error)
}

Users exposes methods to manage User table in database.

architecture: Database

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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