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, authToken, 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.