Documentation ¶
Index ¶
- Constants
- Variables
- func IdToCacheKey(id string) string
- type Core
- func (c *Core) Authenticate(ctx context.Context, email mail.Address, password string) (User, error)
- func (c *Core) Count(ctx context.Context, filter QueryFilter) (int, error)
- func (c *Core) Create(ctx context.Context, newUser User) (User, error)
- func (c *Core) Delete(ctx context.Context, usr User) error
- func (c *Core) QueryByEmail(ctx context.Context, email mail.Address) (User, error)
- func (c *Core) QueryByID(ctx context.Context, userID string) (User, error)
- func (c *Core) QueryByIDs(ctx context.Context, userIDs []string) ([]User, error)
- type MockStorer
- func (m *MockStorer) Count(ctx context.Context, filter QueryFilter) (int, error)
- func (m *MockStorer) Create(ctx context.Context, usr User) (User, error)
- func (m *MockStorer) Delete(ctx context.Context, usr User) error
- func (m *MockStorer) Query(ctx context.Context, filter QueryFilter, orderBy string, pageNumber int, ...) ([]User, error)
- func (m *MockStorer) QueryByEmail(ctx context.Context, email mail.Address) (User, error)
- func (m *MockStorer) QueryByID(ctx context.Context, userID string) (User, error)
- func (m *MockStorer) QueryByIDs(ctx context.Context, userIDs []string) ([]User, error)
- type NewUser
- type QueryFilter
- func (qf *QueryFilter) Validate() error
- func (qf *QueryFilter) WithEmail(email mail.Address)
- func (qf *QueryFilter) WithEndCreatedDate(endDate time.Time)
- func (qf *QueryFilter) WithName(name string)
- func (qf *QueryFilter) WithStartDateCreated(startDate time.Time)
- func (qf *QueryFilter) WithUserID(userID uuid.UUID)
- type Role
- type Storer
- type User
- type UserCredentials
- type UserDTO
Constants ¶
const ( OrderByID = "userid" OrderByName = "name" OrderByEmail = "email" OrderByRoles = "roles" OrderByEnabled = "enabled" )
Set of fields that the results can be ordered by. These are the names that should be used by the application layer.
Variables ¶
var ( RoleAdmin = Role{"ADMIN"} RoleUser = Role{"USER"} )
Set of possible roles for a user.
var ( ErrNotFound = errors.New("user not found") ErrUniqueEmail = errors.New("email is not unique") ErrAuthenticationFailure = errors.New("authentication failed") )
Set of error variables for CRUD operations.
DefaultOrderBy represents the default way we sort.
Functions ¶
func IdToCacheKey ¶
Types ¶
type Core ¶
type Core struct {
// contains filtered or unexported fields
}
Core manages the set of APIs for user access.
func NewCore ¶
func NewCore(storer Storer, ethClient blockchain.BlockchainClient, cacheStorer cachestore.CacheStore) (*Core, error)
NewCore constructs a core for user api access.
func (*Core) Authenticate ¶
Authenticate finds a user by their email and verifies their password. On success it returns a Claims User representing this user. The claims can be used to generate a token for future authentication.
func (*Core) QueryByEmail ¶
QueryByEmail gets the specified user from the database by email.
type MockStorer ¶ added in v0.3.1
MockStorer mocks the Storer interface for testing.
func (*MockStorer) Count ¶ added in v0.3.1
func (m *MockStorer) Count(ctx context.Context, filter QueryFilter) (int, error)
func (*MockStorer) Delete ¶ added in v0.3.1
func (m *MockStorer) Delete(ctx context.Context, usr User) error
func (*MockStorer) Query ¶ added in v0.3.1
func (m *MockStorer) Query(ctx context.Context, filter QueryFilter, orderBy string, pageNumber int, rowsPerPage int) ([]User, error)
func (*MockStorer) QueryByEmail ¶ added in v0.3.1
func (*MockStorer) QueryByIDs ¶ added in v0.3.1
type QueryFilter ¶
type QueryFilter struct { ID *uuid.UUID `validate:"omitempty"` Name *string `validate:"omitempty,min=3"` Email *mail.Address `validate:"omitempty"` StartCreatedDate *time.Time `validate:"omitempty"` EndCreatedDate *time.Time `validate:"omitempty"` }
func (*QueryFilter) Validate ¶
func (qf *QueryFilter) Validate() error
Validate checks the data in the model is considered clean.
func (*QueryFilter) WithEmail ¶
func (qf *QueryFilter) WithEmail(email mail.Address)
WithEmail sets the Email field of the QueryFilter value.
func (*QueryFilter) WithEndCreatedDate ¶
func (qf *QueryFilter) WithEndCreatedDate(endDate time.Time)
WithEndCreatedDate sets the DateCreated field of the QueryFilter value.
func (*QueryFilter) WithName ¶
func (qf *QueryFilter) WithName(name string)
WithName sets the Name field of the QueryFilter value.
func (*QueryFilter) WithStartDateCreated ¶
func (qf *QueryFilter) WithStartDateCreated(startDate time.Time)
WithStartDateCreated sets the DateCreated field of the QueryFilter value.
func (*QueryFilter) WithUserID ¶
func (qf *QueryFilter) WithUserID(userID uuid.UUID)
WithUserID sets the ID field of the QueryFilter value.
type Role ¶
type Role struct {
Name string
}
Role represents a role in the system.
func MustParseRole ¶
MustParseRole parses the string value and returns a role if one exists. If an error occurs the function panics.
func (Role) MarshalText ¶
MarshalText implement the marshal interface for JSON conversions.
func (*Role) UnmarshalText ¶
UnmarshalText implement the unmarshal interface for JSON conversions.
type Storer ¶
type Storer interface { Create(ctx context.Context, usr User) (User, error) Delete(ctx context.Context, usr User) error // Query(ctx context.Context, filter QueryFilter, orderBy order.By, pageNumber int, rowsPerPage int) ([]User, error) Count(ctx context.Context, filter QueryFilter) (int, error) QueryByID(ctx context.Context, userID string) (User, error) QueryByIDs(ctx context.Context, userID []string) ([]User, error) QueryByEmail(ctx context.Context, email mail.Address) (User, error) }
type User ¶
type User struct { ID primitive.ObjectID `json:"id,omitempty" bson:"_id,omitempty"` Name string `json:"name"` Email string `json:"email"` Roles []Role `json:"roles"` PasswordHash []byte `json:"password_hash"` AddressHex string `json:"address_hex"` PublicKey []byte `json:"public_key"` PrivateKey []byte `json:"private_key"` SecretKey []byte `json:"secret_key"` DateCreated time.Time `json:"date_created"` DateUpdated time.Time `json:"date_updated"` }