users

package module
v0.0.0-...-4060db5 Latest Latest
Warning

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

Go to latest
Published: Jan 19, 2022 License: MIT Imports: 9 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type AccessLevel

type AccessLevel int

AccessLevel as abstraction of level of access for a user

const (
	// AdminLevel for admin privileges
	AdminLevel AccessLevel = iota
	// QueryLevel for query privileges
	QueryLevel
	// CarveLevel for carve privileges
	CarveLevel
	// EnvLevel for environment privileges
	EnvLevel
	// UserLevel for regula user privileges
	UserLevel
	// NoEnvironment to be explicit when used
	NoEnvironment = ""
)

type AdminUser

type AdminUser struct {
	gorm.Model
	Username      string `gorm:"index"`
	Email         string
	Fullname      string
	PassHash      string
	APIToken      string
	TokenExpire   time.Time
	Admin         bool
	DefaultEnv    string
	CSRFToken     string
	Permissions   postgres.Jsonb
	LastIPAddress string
	LastUserAgent string
	LastAccess    time.Time
	LastTokenUse  time.Time
}

AdminUser to hold all users

type EnvPermissions

type EnvPermissions map[string]bool

EnvPermissions to hold permissions for environments

type TokenClaims

type TokenClaims struct {
	Username string `json:"username"`
	jwt.StandardClaims
}

TokenClaims to hold user claims when using JWT

type UserManager

type UserManager struct {
	DB        *gorm.DB
	JWTConfig *types.JSONConfigurationJWT
}

UserManager have all users of the system

func CreateUserManager

func CreateUserManager(backend *gorm.DB, jwtconfig *types.JSONConfigurationJWT) *UserManager

CreateUserManager to initialize the users struct and tables

func (*UserManager) All

func (m *UserManager) All() ([]AdminUser, error)

All get all users

func (*UserManager) ChangeAdmin

func (m *UserManager) ChangeAdmin(username string, admin bool) error

ChangeAdmin to modify the admin setting for a user

func (*UserManager) ChangeDefaultEnv

func (m *UserManager) ChangeDefaultEnv(username, env string) error

ChangeDefaultEnv for user by username

func (*UserManager) ChangeEmail

func (m *UserManager) ChangeEmail(username, email string) error

ChangeEmail for user by username

func (*UserManager) ChangeFullname

func (m *UserManager) ChangeFullname(username, fullname string) error

ChangeFullname for user by username

func (*UserManager) ChangePassword

func (m *UserManager) ChangePassword(username, password string) error

ChangePassword for user by username

func (*UserManager) ChangePermissions

func (m *UserManager) ChangePermissions(username string, permissions UserPermissions) error

ChangePermissions for setting user permissions by username

func (*UserManager) CheckLoginCredentials

func (m *UserManager) CheckLoginCredentials(username, password string) (bool, AdminUser)

CheckLoginCredentials to check provided login credentials by matching hashes

func (*UserManager) CheckPermissions

func (m *UserManager) CheckPermissions(username string, level AccessLevel, environment string) bool

CheckPermissions to verify access for a username

func (*UserManager) CheckToken

func (m *UserManager) CheckToken(jwtSecret, tokenStr string) (TokenClaims, bool)

CheckToken to verify if a token used is valid

func (*UserManager) ConvertPermissions

func (m *UserManager) ConvertPermissions(raw json.RawMessage) (UserPermissions, error)

ConvertPermissions to convert from stored Jsonb to struct

func (*UserManager) Create

func (m *UserManager) Create(user AdminUser) error

Create new user

func (*UserManager) CreateToken

func (m *UserManager) CreateToken(username string) (string, time.Time, error)

CreateToken to create a new JWT token for a given user

func (*UserManager) Delete

func (m *UserManager) Delete(username string) error

Delete user by username

func (*UserManager) Exists

func (m *UserManager) Exists(username string) bool

Exists checks if user exists

func (*UserManager) ExistsGet

func (m *UserManager) ExistsGet(username string) (bool, AdminUser)

ExistsGet checks if user exists and returns the user

func (*UserManager) GenPermissions

func (m *UserManager) GenPermissions(environments []string, level AccessLevel) UserPermissions

GenPermissions to generate the struct with empty permissions

func (*UserManager) Get

func (m *UserManager) Get(username string) (AdminUser, error)

Get user by username

func (*UserManager) GetPermissions

func (m *UserManager) GetPermissions(username string) (UserPermissions, error)

GetPermissions to extract permissions by username

func (*UserManager) HashPasswordWithSalt

func (m *UserManager) HashPasswordWithSalt(password string) (string, error)

HashPasswordWithSalt to hash a password before store it

func (*UserManager) HashTextWithSalt

func (m *UserManager) HashTextWithSalt(text string) (string, error)

HashTextWithSalt to hash text before store it

func (*UserManager) IsAdmin

func (m *UserManager) IsAdmin(username string) bool

IsAdmin checks if user is an admin

func (*UserManager) New

func (m *UserManager) New(username, password, email, fullname, defaultEnv string, admin bool) (AdminUser, error)

New empty user

func (*UserManager) UpdateMetadata

func (m *UserManager) UpdateMetadata(ipaddress, useragent, username, csrftoken string) error

UpdateMetadata updates IP, User Agent and Last Access for a given user

func (*UserManager) UpdateToken

func (m *UserManager) UpdateToken(username, token string, exp time.Time) error

UpdateToken for user by username

func (*UserManager) UpdateTokenIPAddress

func (m *UserManager) UpdateTokenIPAddress(ipaddress, username string) error

UpdateTokenIPAddress updates IP and Last Access for a user's token

type UserPermissions

type UserPermissions struct {
	Environments EnvPermissions `json:"environments"`
	Query        bool           `json:"query"`
	Carve        bool           `json:"carve"`
}

UserPermissions to abstract the permissions for a user

Jump to

Keyboard shortcuts

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