useradm

package
v0.0.0-...-e2863eb Latest Latest
Warning

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

Go to latest
Published: Apr 22, 2024 License: Apache-2.0 Imports: 14 Imported by: 0

Documentation

Index

Constants

View Source
const (
	TenantStatusSuspended = "suspended"
)

Variables

View Source
var (
	ErrUserNotFound           = store.ErrUserNotFound
	ErrDuplicateEmail         = store.ErrDuplicateEmail
	ErrETagMismatch           = errors.New("entity tag did not match any records")
	ErrUnauthorized           = errors.New("unauthorized")
	ErrAuthExpired            = errors.New("token expired")
	ErrAuthInvalid            = errors.New("token is invalid")
	ErrTenantAccountSuspended = errors.New("tenant account suspended")
	ErrInvalidTenantID        = errors.New("invalid tenant id")
	ErrTooManyTokens          = errors.New(
		"maximum number of personal acess tokens reached for this user")
	ErrDuplicateTokenName = errors.New(
		"Personal Access Token with a given name already exists")
	// password mismatch
	ErrCurrentPasswordMismatch = errors.New("current password mismatch")
	// modification of other user's password is not allowed
	ErrCannotModifyPassword = errors.New("password cannot be modified")
)

Functions

This section is empty.

Types

type ApiClientGetter

type ApiClientGetter func() apiclient.HttpRunner

type App

type App interface {
	HealthCheck(ctx context.Context) error
	// Login accepts email/password, returns JWT
	Login(ctx context.Context, email model.Email, pass string,
		options *LoginOptions) (*jwt.Token, error)
	Logout(ctx context.Context, token *jwt.Token) error
	CreateUser(ctx context.Context, u *model.User) error
	CreateUserInternal(ctx context.Context, u *model.UserInternal) error
	UpdateUser(ctx context.Context, id string, u *model.UserUpdate) error
	Verify(ctx context.Context, token *jwt.Token) error
	GetUsers(ctx context.Context, fltr model.UserFilter) ([]model.User, error)
	GetUser(ctx context.Context, id string) (*model.User, error)
	DeleteUser(ctx context.Context, id string) error
	SetPassword(ctx context.Context, u model.UserUpdate) error

	// SignToken generates a signed
	// token using configuration & method set up in UserAdmApp
	SignToken(ctx context.Context, t *jwt.Token) (string, error)
	DeleteToken(ctx context.Context, id string) error

	// IssuePersonalAccessToken issues Personal Access Token
	IssuePersonalAccessToken(ctx context.Context, tr *model.TokenRequest) (string, error)
	// GetPersonalAccessTokens returns list of Personal Access Tokens
	GetPersonalAccessTokens(ctx context.Context, userID string) ([]model.PersonalAccessToken, error)

	DeleteTokens(ctx context.Context, tenantId, userId string) error

	CreateTenant(ctx context.Context, tenant model.NewTenant) error
	GetPlans(ctx context.Context, skip, limit int) []model.Plan
	GetPlanBinding(ctx context.Context) (*model.PlanBindingDetails, error)
}

type Config

type Config struct {
	// token issuer
	Issuer string
	// token expiration time
	ExpirationTimeSeconds int64
	// maximum number of log in tokens per user
	// zero means no limit
	LimitSessionsPerUser int
	// maximum number of personal access tokens per user
	// zero means no limit
	LimitTokensPerUser int
	// how often we should update personal access token
	// with last used timestamp
	TokenLastUsedUpdateFreqMinutes int
	// path to the private key, used to generate kid header in JWT and to get all the keys
	PrivateKeyPath string
	// PrivateKeyFileNamePattern holds the regular expression used
	// to get the key id from a filename
	PrivateKeyFileNamePattern string
}

type LoginOptions

type LoginOptions struct {
	NoExpiry bool `json:"no_expiry,omitempty"`
}

type UserAdm

type UserAdm struct {
	// contains filtered or unexported fields
}

func NewUserAdm

func NewUserAdm(jwtHandlers map[int]jwt.Handler, db store.DataStore, config Config) *UserAdm

func (*UserAdm) CreateTenant

func (u *UserAdm) CreateTenant(ctx context.Context, tenant model.NewTenant) error

func (*UserAdm) CreateUser

func (ua *UserAdm) CreateUser(ctx context.Context, u *model.User) error

func (*UserAdm) CreateUserInternal

func (ua *UserAdm) CreateUserInternal(ctx context.Context, u *model.UserInternal) error

func (*UserAdm) DeleteToken

func (ua *UserAdm) DeleteToken(ctx context.Context, id string) error

func (*UserAdm) DeleteTokens

func (ua *UserAdm) DeleteTokens(ctx context.Context, tenantId, userId string) error

func (*UserAdm) DeleteUser

func (ua *UserAdm) DeleteUser(ctx context.Context, id string) error

func (*UserAdm) GetPersonalAccessTokens

func (ua *UserAdm) GetPersonalAccessTokens(
	ctx context.Context,
	userID string,
) ([]model.PersonalAccessToken, error)

func (*UserAdm) GetPlanBinding

func (ua *UserAdm) GetPlanBinding(ctx context.Context) (*model.PlanBindingDetails, error)

func (*UserAdm) GetPlans

func (ua *UserAdm) GetPlans(ctx context.Context, skip, limit int) []model.Plan

func (*UserAdm) GetUser

func (ua *UserAdm) GetUser(ctx context.Context, id string) (*model.User, error)

func (*UserAdm) GetUsers

func (ua *UserAdm) GetUsers(ctx context.Context, fltr model.UserFilter) ([]model.User, error)

func (*UserAdm) HealthCheck

func (u *UserAdm) HealthCheck(ctx context.Context) error

func (*UserAdm) IssuePersonalAccessToken

func (u *UserAdm) IssuePersonalAccessToken(
	ctx context.Context,
	tr *model.TokenRequest,
) (string, error)

func (*UserAdm) Login

func (u *UserAdm) Login(ctx context.Context, email model.Email, pass string,
	options *LoginOptions) (*jwt.Token, error)

func (*UserAdm) Logout

func (u *UserAdm) Logout(ctx context.Context, token *jwt.Token) error

func (*UserAdm) SetPassword

func (ua *UserAdm) SetPassword(ctx context.Context, uu model.UserUpdate) error

func (*UserAdm) SignToken

func (u *UserAdm) SignToken(ctx context.Context, t *jwt.Token) (string, error)

func (*UserAdm) UpdateUser

func (ua *UserAdm) UpdateUser(ctx context.Context, id string, userUpdate *model.UserUpdate) error

func (*UserAdm) Verify

func (ua *UserAdm) Verify(ctx context.Context, token *jwt.Token) error

func (*UserAdm) WithTenantVerification

func (u *UserAdm) WithTenantVerification(c tenant.ClientRunner) *UserAdm

WithTenantVerification produces a UserAdm instance which enforces tenant verification vs the tenantadm service upon /login.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL