package
0.23.2
Repository: https://github.com/mainfluxlabs/mainflux.git
Documentation: pkg.go.dev

# README

Users service

Users service provides an HTTP API for managing users. Through this API clients are able to do the following actions:

  • register new accounts
  • obtain access tokens
  • verify access tokens

For in-depth explanation of the aforementioned scenarios, as well as thorough understanding of Mainflux, please check out the official documentation.

Configuration

The service is configured using the environment variables presented in the following table. Note that any unset variables will be replaced with their default values.

VariableDescriptionDefault
MF_USERS_LOG_LEVELLog level for Users (debug, info, warn, error)error
MF_USERS_DB_HOSTDatabase host addresslocalhost
MF_USERS_DB_PORTDatabase host port5432
MF_USERS_DB_USERDatabase usermainflux
MF_USERS_DB_PASSWORDDatabase passwordmainflux
MF_USERS_DBName of the database used by the serviceusers
MF_USERS_DB_SSL_MODEDatabase connection SSL mode (disable, require, verify-ca, verify-full)disable
MF_USERS_DB_SSL_CERTPath to the PEM encoded certificate file
MF_USERS_DB_SSL_KEYPath to the PEM encoded key file
MF_USERS_DB_SSL_ROOT_CERTPath to the PEM encoded root certificate file
MF_USERS_HTTP_PORTUsers service HTTP port8180
MF_USERS_SERVER_CERTPath to server certificate in pem format
MF_USERS_SERVER_KEYPath to server key in pem format
MF_USERS_ADMIN_EMAILDefault user, created on startup
MF_USERS_ADMIN_PASSWORDDefault user password, created on startup
MF_JAEGER_URLJaeger server URLlocalhost:6831
MF_EMAIL_HOSTMail server hostlocalhost
MF_EMAIL_PORTMail server port25
MF_EMAIL_USERNAMEMail server username
MF_EMAIL_PASSWORDMail server password
MF_EMAIL_FROM_ADDRESSEmail "from" address
MF_EMAIL_FROM_NAMEEmail "from" name
MF_EMAIL_TEMPLATEEmail template for sending emails with password reset linkemail.tmpl
MF_TOKEN_RESET_ENDPOINTPassword request reset endpoint, for constructing link/reset-request

Deployment

The service itself is distributed as Docker container. Check the users service section in docker-compose to see how service is deployed.

To start the service outside of the container, execute the following shell script:

# download the latest version of the service
git clone https://github.com/MainfluxLabs/mainflux

cd mainflux

# compile the service
make users

# copy binary to bin
make install

# set the environment variables and run the service
MF_USERS_LOG_LEVEL=[Users log level] \
MF_USERS_DB_HOST=[Database host address] \
MF_USERS_DB_PORT=[Database host port] \
MF_USERS_DB_USER=[Database user] \
MF_USERS_DB_PASS=[Database password] \
MF_USERS_DB=[Name of the database used by the service] \
MF_USERS_DB_SSL_MODE=[SSL mode to connect to the database with] \
MF_USERS_DB_SSL_CERT=[Path to the PEM encoded certificate file] \
MF_USERS_DB_SSL_KEY=[Path to the PEM encoded key file] \
MF_USERS_DB_SSL_ROOT_CERT=[Path to the PEM encoded root certificate file] \
MF_USERS_HTTP_PORT=[Service HTTP port] \
MF_USERS_SERVER_CERT=[Path to server certificate] \
MF_USERS_SERVER_KEY=[Path to server key] \
MF_JAEGER_URL=[Jaeger server URL] \
MF_EMAIL_HOST=[Mail server host] \
MF_EMAIL_PORT=[Mail server port] \
MF_EMAIL_USERNAME=[Mail server username] \
MF_EMAIL_PASSWORD=[Mail server password] \
MF_EMAIL_FROM_ADDRESS=[Email from address] \
MF_EMAIL_FROM_NAME=[Email from name] \
MF_EMAIL_TEMPLATE=[Email template file] \
MF_TOKEN_RESET_ENDPOINT=[Password reset token endpoint] \
$GOBIN/mainfluxlabs-users

If MF_EMAIL_TEMPLATE doesn't point to any file service will function but password reset functionality will not work.

Usage

For more information about service capabilities and its usage, please check out the API documentation.

# Packages

No description provided by the author
Package bcrypt provides a hasher implementation utilizing bcrypt.
Copyright (c) Mainflux SPDX-License-Identifier: Apache-2.0.
No description provided by the author
Package postgres contains repository implementations using PostgreSQL as the underlying database.
Package tracing contains middlewares that will add spans to existing traces.

# Functions

New instantiates the users service implementation.

# Constants

No description provided by the author
No description provided by the author
No description provided by the author

# Variables

ErrAlreadyDisabledUser indicates the user is already disabled.
ErrAlreadyEnabledUser indicates the user is already enabled.
ErrPasswordFormat indicates weak password.
ErrRecoveryToken indicates error in generating password recovery token.

# Structs

PageMetadata contains page metadata that helps navigation.
User represents a Mainflux user account.
UserPage contains a page of users.

# Interfaces

Emailer wrapper around the email.
Hasher specifies an API for generating hashes of an arbitrary textual content.
Service specifies an API that must be fullfiled by the domain service implementation, and all of its decorators (e.g.
UserRepository specifies an account persistence API.

# Type aliases

Metadata to be used for Mainflux thing or channel for customized describing of particular thing or channel.