user

package
Version: v0.5.3 Latest Latest
Warning

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

Go to latest
Published: Aug 27, 2017 License: BSD-3-Clause Imports: 2 Imported by: 5

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrUnauthorized                 = errors.New("unauthorized")
	ErrUserNotFound                 = errors.New("user not found")
	ErrSaltNotFound                 = errors.New("salt not found")
	ErrPasswordUsed                 = errors.New("password already used")
	ErrUsernameMissing              = errors.New("username missing")
	ErrUsernameInvalid              = errors.New("username invalid")
	ErrUsernameExists               = errors.New("username exists")
	ErrEmailMissing                 = errors.New("email missing")
	ErrEmailInvalid                 = errors.New("email invalid")
	ErrEmailExists                  = errors.New("email exists")
	ErrEmailChangeEmailNotAvaliable = errors.New("email not available for change")
	ErrEmailValidateTokenNotFound   = errors.New("email validation token not found")
	ErrEmailValidateTokenInvalid    = errors.New("email validation token invalid")
	ErrEmailValidateTokenExpired    = errors.New("email validation token expired")
	ErrPasswordResetTokenNotFound   = errors.New("password reset token not found")
	ErrPasswordResetTokenExpired    = errors.New("password reset token expired")
)

Errors that are related to the User Service.

Functions

This section is empty.

Types

type Authenticator

type Authenticator interface {
	// Authenticate validates a password of an existing User.
	Authenticate(ref, password string) (u *User, err error)
}

Authenticator authenticates a User by a reference and password.

type EmailService

type EmailService interface {
	// RequestEmailChange starts a process of changing an email by
	// returning a token that must be used in ChangeEmail to authorize
	// email change.
	RequestEmailChange(ref, email string, validationDeadline time.Time) (token string, err error)
	// ChangeEmail changes an email of an existing User only if
	// provided token is valid.
	ChangeEmail(ref, token string) (*User, error)
	// EmailChangeToken retrieves a token to change an email if it exists.
	EmailChangeToken(ref, email string) (token string, err error)
}

EmailService handles e-mail changes.

type ManagementService

type ManagementService interface {
	// User retrieves a User instance.
	User(ref string) (*User, error)
	// UserByID retrieves a User instance only by it's ID.
	UserByID(id string) (*User, error)
	// UserByID retrieves a User instance only by it's Email.
	UserByEmail(email string) (*User, error)
	// UserByID retrieves a User instance only by it's Username.
	UserByUsername(username string) (*User, error)
	// Create user creates a new user interface.
	CreateUser(o *Options) (*User, error)
	// UpdateUser changes data of an existing User.
	UpdateUser(ref string, o *Options) (*User, error)
	// SetPassword changes a password of an existing User.
	SetPassword(ref string, password string) error
	// DeleteUser deletes an existing User.
	DeleteUser(ref string) (*User, error)

	// UsersByID retrieves a paginated list of User instances ordered by
	// ID values.
	UsersByID(startID string, limit int) (*UsersPage, error)
	// UsersByEmail retrieves a paginated list of User instances ordered by
	// Email values.
	UsersByEmail(startEmail string, limit int) (*UsersPage, error)
	// UsersByUsername retrieves a paginated list of User instances ordered by
	// Username values.
	UsersByUsername(startUsername string, limit int) (*UsersPage, error)
}

ManagementService defines most basic functionality for user management.

type Options

type Options struct {
	Email                 *string `json:"email,omitempty"`
	Username              *string `json:"username,omitempty"`
	Name                  *string `json:"name,omitempty"`
	Admin                 *bool   `json:"admin,omitempty"`
	NotificationsDisabled *bool   `json:"notifications-disabled,omitempty"`
	EmailUnvalidated      *bool   `json:"email-unvalidated,omitempty"`
	Disabled              *bool   `json:"disabled,omitempty"`
}

Options is a structure with parameters as pointers to set user data. If a parameter is nil, the corresponding User parameter will not be changed.

type PasswordResetService

type PasswordResetService interface {
	// RequestPasswordReset starts a process of reseting a password by
	// providing a token that must be used in ResetPassword to authorize
	// password reset.
	RequestPasswordReset(ref string) (token string, err error)
	// ResetPassword changes a password of an existing User only if
	// provided token is valid.
	ResetPassword(token, password string) error
}

PasswordResetService handles password changes.

type RegisterService

type RegisterService interface {
	// RegisterUser is a method for adding new users.
	RegisterUser(o *Options, password string, emailValidationDeadline time.Time) (u *User, emailValidationToken string, err error)
}

RegisterService defines user registration interface.

type Service

Service defines functions that User provider must have. Argument ref in some functions can be a string that is uniquely defined for a user: ID, Username or Email.

type User

type User struct {
	ID                    string `json:"id"`
	Email                 string `json:"email"`
	Username              string `json:"username,omitempty"`
	Name                  string `json:"name,omitempty"`
	Admin                 bool   `json:"admin,omitempty"`
	NotificationsDisabled bool   `json:"notifications-disabled,omitempty"`
	EmailUnvalidated      bool   `json:"email-unvalidated,omitempty"`
	Disabled              bool   `json:"disabled,omitempty"`
}

User holds user account related data.

func (User) String

func (u User) String() string

type UsersPage

type UsersPage struct {
	Users []User `json:"users"`
	// Previous is an reference that
	// can be used to retrieve previous page.
	Previous string `json:"previous"`
	// Previous is an reference that
	// can be used to retrieve next page.
	Next string `json:"next"`
	// Count is a number of User instances in this UserPage.
	Count int `json:"count"`
}

UsersPage is a paginated list of User instances.

Source Files

Directories

Path Synopsis
Package boltUser provides a Service that is using local BoltDB database to store User data.
Package boltUser provides a Service that is using local BoltDB database to store User data.
Package httpUser provides a HTTP client to an external user service that can respond to HTTP requests defined here.
Package httpUser provides a HTTP client to an external user service that can respond to HTTP requests defined here.
Package ldapUser provides a Service that uses LDAP for user authentication.
Package ldapUser provides a Service that uses LDAP for user authentication.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
t or T : Toggle theme light dark auto
y or Y : Canonical URL