Documentation
¶
Index ¶
Constants ¶
View Source
const ( EnabledStatusKey = "enabled" DisabledStatusKey = "disabled" AllStatusKey = "all" )
Variables ¶
View Source
var ( // ErrRecoveryToken indicates error in generating password recovery token. ErrRecoveryToken = errors.New("failed to generate password recovery token") // ErrPasswordFormat indicates weak password. ErrPasswordFormat = errors.New("password does not meet the requirements") // ErrAlreadyEnabledUser indicates the user is already enabled. ErrAlreadyEnabledUser = errors.New("the user is already enabled") // ErrAlreadyDisabledUser indicates the user is already disabled. ErrAlreadyDisabledUser = errors.New("the user is already disabled") )
Functions ¶
This section is empty.
Types ¶
type Hasher ¶
type Hasher interface {
// Hash generates the hashed string from plain-text.
Hash(string) (string, error)
// Compare compares plain-text version to the hashed one. An error should
// indicate failed comparison.
Compare(string, string) error
}
Hasher specifies an API for generating hashes of an arbitrary textual content.
type Metadata ¶
type Metadata map[string]interface{}
Metadata to be used for Mainflux thing or profile for customized describing of particular thing or profile.
type PageMetadata ¶
type PageMetadata struct {
Total uint64
Offset uint64
Limit uint64
Email string
Status string
Metadata Metadata
}
PageMetadata contains page metadata that helps navigation.
type Service ¶
type Service interface {
// Register creates new user account. In case of the failed registration, a
// non-nil error value is returned. The user registration is only allowed
// for admin.
SelfRegister(ctx context.Context, user User) (string, error)
// Register creates new user account. In case of the failed registration, a
// non-nil error value is returned. The user registration is only allowed
// for admin.
Register(ctx context.Context, token string, user User) (string, error)
// RegisterAdmin creates new root admin account. In case of the failed registration, a
// non-nil error value is returned. The user registration is only allowed
// for root admin.
RegisterAdmin(ctx context.Context, user User) error
// Login authenticates the user given its credentials. Successful
// authentication generates new access token. Failed invocations are
// identified by the non-nil error values in the response.
Login(ctx context.Context, user User) (string, error)
// ViewUser retrieves user info for a given user ID and an authorized token.
ViewUser(ctx context.Context, token, id string) (User, error)
// ViewProfile retrieves user info for a given token.
ViewProfile(ctx context.Context, token string) (User, error)
// ListUsers retrieves users list for a valid admin token.
ListUsers(ctx context.Context, token string, pm PageMetadata) (UserPage, error)
// ListUsersByIDs retrieves users list for the given IDs.
ListUsersByIDs(ctx context.Context, ids []string) (UserPage, error)
// ListUsersByEmails retrieves users list for the given emails.
ListUsersByEmails(ctx context.Context, emails []string) ([]User, error)
// UpdateUser updates the user metadata.
UpdateUser(ctx context.Context, token string, user User) error
// GenerateResetToken email where mail will be sent.
// host is used for generating reset link.
GenerateResetToken(ctx context.Context, email, host string) error
// ChangePassword change users password for authenticated user.
ChangePassword(ctx context.Context, token, email, password, oldPassword string) error
// ResetPassword change users password in reset flow.
// token can be authentication token or password reset token.
ResetPassword(ctx context.Context, resetToken, password string) error
// SendPasswordReset sends reset password link to email.
SendPasswordReset(ctx context.Context, host, email, token string) error
// EnableUser logically enableds the user identified with the provided ID
EnableUser(ctx context.Context, token, id string) error
// DisableUser logically disables the user identified with the provided ID
DisableUser(ctx context.Context, token, id string) error
// Backup returns admin and all users. Only accessible by admin.
Backup(ctx context.Context, token string) (User, []User, error)
// Restore restores users from backup. Only accessible by admin.
Restore(ctx context.Context, token string, admin User, users []User) error
}
Service specifies an API that must be fullfiled by the domain service implementation, and all of its decorators (e.g. logging & metrics).
func New ¶
func New(users UserRepository, hasher Hasher, auth protomfx.AuthServiceClient, e Emailer, idp uuid.IDProvider, passRegex *regexp.Regexp) Service
New instantiates the users service implementation
type User ¶
type User struct {
ID string
Email string
Password string
Metadata Metadata
Status string
Role string
}
User represents a Mainflux user account. Each user is identified given its email and password.
type UserPage ¶
type UserPage struct {
PageMetadata
Users []User
}
UserPage contains a page of users.
type UserRepository ¶
type UserRepository interface {
// Save persists the user account. A non-nil error is returned to indicate
// operation failure.
Save(ctx context.Context, u User) (string, error)
// UpdateUser updates the user metadata.
UpdateUser(ctx context.Context, u User) error
// RetrieveByEmail retrieves user by its unique identifier (i.e. email).
RetrieveByEmail(ctx context.Context, email string) (User, error)
// RetrieveByID retrieves user by its unique identifier ID.
RetrieveByID(ctx context.Context, id string) (User, error)
// RetrieveByIDs retrieves all users for given array of userIDs.
RetrieveByIDs(ctx context.Context, userIDs []string, pm PageMetadata) (UserPage, error)
// UpdatePassword updates password for user with given email
UpdatePassword(ctx context.Context, email, password string) error
// ChangeStatus changes users status to enabled or disabled
ChangeStatus(ctx context.Context, id, status string) error
// RetrieveAll retrieves all users.
RetrieveAll(ctx context.Context) ([]User, error)
}
UserRepository specifies an account persistence API.
Directories
¶
| Path | Synopsis |
|---|---|
|
api
|
|
|
grpc
Package grpc contains implementation of users service gRPC API.
|
Package grpc contains implementation of users service gRPC API. |
|
http
Package api contains API-related concerns: endpoint definitions, middlewares and all resource representations.
|
Package api contains API-related concerns: endpoint definitions, middlewares and all resource representations. |
|
Package bcrypt provides a hasher implementation utilizing bcrypt.
|
Package bcrypt provides a hasher implementation utilizing bcrypt. |
|
Package postgres contains repository implementations using PostgreSQL as the underlying database.
|
Package postgres contains repository implementations using PostgreSQL as the underlying database. |
|
Package tracing contains middlewares that will add spans to existing traces.
|
Package tracing contains middlewares that will add spans to existing traces. |
Click to show internal directories.
Click to hide internal directories.