users

package
v0.4.8 Latest Latest
Warning

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

Go to latest
Published: Nov 5, 2025 License: MIT Imports: 9 Imported by: 0

Documentation

Index

Constants

View Source
const (
	DefaultTokenIssuer = "osctrl"
	// ActionAdd as action to add a user
	ActionAdd string = "add"
	// ActionEdit as action to edit a user
	ActionEdit string = "edit"
	// ActionRemove as action to remove a user
	ActionRemove string = "remove"
)

Variables

This section is empty.

Functions

func SameAccess

func SameAccess(acc1, acc2 EnvAccess) bool

Helper to compare two set of permissions

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
	// UserLevel for regular 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 `json:"-"`
	APIToken      string `json:"-"`
	TokenExpire   time.Time
	Admin         bool
	Service       bool
	UUID          string
	CSRFToken     string `json:"-"`
	LastIPAddress string
	LastUserAgent string
	LastAccess    time.Time
	LastTokenUse  time.Time
	EnvironmentID uint
}

AdminUser to hold all users

type EnvAccess

type EnvAccess struct {
	User  bool `json:"user"`
	Query bool `json:"query"`
	Carve bool `json:"carve"`
	Admin bool `json:"admin"`
}

UserPermissions to abstract the permissions for a user

func GenEnvAccess

func GenEnvAccess(admin, carve, query, user bool) EnvAccess

Helper to convert received permissions into struct

type TokenClaims

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

TokenClaims to hold user claims when using JWT

type UserAccess

type UserAccess map[string]EnvAccess

UserAccess to provide an abstraction for user access between environment and permissions

type UserManager

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

UserManager have all users of the system

func CreateUserManager

func CreateUserManager(backend *gorm.DB, jwtconfig *config.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) AllNonService added in v0.4.5

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

AllNonService get all non-service users

func (*UserManager) AllService added in v0.4.5

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

AllService get all service users

func (*UserManager) ChangeAccess

func (m *UserManager) ChangeAccess(username, environment string, access EnvAccess) error

ChangeAccess for setting user access by username and environment

func (*UserManager) ChangeAdmin

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

ChangeAdmin to modify the admin setting for a user

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) ChangePermission

func (m *UserManager) ChangePermission(username, environment string, perm UserPermission) error

ChangePermissions for setting user permissions by username

func (*UserManager) ChangePermissions

func (m *UserManager) ChangePermissions(username, environment string, permissions []UserPermission) error

ChangePermissions for setting user permissions by username

func (*UserManager) ChangeService added in v0.4.5

func (m *UserManager) ChangeService(username string, service bool) error

ChangeService to modify the service setting for a user

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) Create

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

Create new user

func (*UserManager) CreatePermission

func (m *UserManager) CreatePermission(permission UserPermission) error

CreatePermission new permission

func (*UserManager) CreatePermissions

func (m *UserManager) CreatePermissions(permissions []UserPermission) error

CreatePermissions to iterate through a slice of permissions

func (*UserManager) CreateToken

func (m *UserManager) CreateToken(username, issuer string, expHours int) (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) DeleteAllPermissions

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

DeleteAllPermissions to delete all permissions by username

func (*UserManager) DeleteEnvPermissions

func (m *UserManager) DeleteEnvPermissions(username, environment string) error

DeleteEnvPermissions to delete all permissions by username and environment

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) GenEnvUserAccess

func (m *UserManager) GenEnvUserAccess(envs []string, user, query, carve, admin bool) UserAccess

GenEnvUserAccess to generate the struct with empty access

func (*UserManager) GenPermissions

func (m *UserManager) GenPermissions(username, granted string, access UserAccess) []UserPermission

GenPermission to generate the struct with empty permissions FIXME this probably can be implemented in a better way

func (*UserManager) GenUserAccess

func (m *UserManager) GenUserAccess(env environments.TLSEnvironment, envAccess EnvAccess) UserAccess

GenUserAccess to generate the struct with empty access

func (*UserManager) GenUserPermission

func (m *UserManager) GenUserPermission(username, granted, env string, aType int, aValue bool) UserPermission

GenUserPermission Helper to generate struct

func (*UserManager) GenericAllService added in v0.4.5

func (m *UserManager) GenericAllService(service bool) ([]AdminUser, error)

GenericAllService get all users with a specific service

func (*UserManager) Get

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

Get user by username including service users

func (*UserManager) GetAccess

func (m *UserManager) GetAccess(username string) (UserAccess, error)

GetAccess to extract all access by username

func (*UserManager) GetAllPermissions

func (m *UserManager) GetAllPermissions(username string) ([]UserPermission, error)

GetAllPermissions to extract permissions by username

func (*UserManager) GetByEnvID added in v0.4.6

func (m *UserManager) GetByEnvID(username string, envID uint) (AdminUser, error)

Get user by username and by environment ID, including service users

func (*UserManager) GetEnvAccess

func (m *UserManager) GetEnvAccess(username, env string) (EnvAccess, error)

GetEnvAccess to get the access for a user and a specific environment

func (*UserManager) GetEnvPermissions

func (m *UserManager) GetEnvPermissions(username, environment string) ([]UserPermission, error)

GetPermissions to extract permissions by username and environment

func (*UserManager) GetPermission

func (m *UserManager) GetPermission(username, environment string, aType AccessLevel) (UserPermission, error)

GetPermission to extract permission by username and environment

func (*UserManager) GetWithService added in v0.4.5

func (m *UserManager) GetWithService(username string, service bool) (AdminUser, error)

Get user by username and service

func (*UserManager) GetWithServiceByEnvID added in v0.4.6

func (m *UserManager) GetWithServiceByEnvID(username string, service bool, envID uint) (AdminUser, error)

Get user by username, service and environment ID

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 string, admin, service bool) (AdminUser, error)

New empty user

func (*UserManager) SetEnvAdmin

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

SetEnvAdmin to change the admin access for a user and environment

func (*UserManager) SetEnvCarve

func (m *UserManager) SetEnvCarve(username, environment string, carve bool) error

SetEnvCarve to change the carve access for a user and environment

func (*UserManager) SetEnvLevel

func (m *UserManager) SetEnvLevel(username, environment string, level AccessLevel, value bool) error

SetEnvLevel to change the access for a user

func (*UserManager) SetEnvQuery

func (m *UserManager) SetEnvQuery(username, environment string, query bool) error

SetEnvQuery to change the query access for a user and environment

func (*UserManager) SetEnvUser

func (m *UserManager) SetEnvUser(username, environment string, user bool) error

SetEnvUser to change the user access for a user and environment

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 UserPermission

type UserPermission struct {
	gorm.Model
	Username      string `gorm:"index"`
	AccessType    int
	AccessValue   bool
	Environment   string
	EnvironmentID uint
	GrantedBy     string
}

UserPermission to hold all permissions for users

Jump to

Keyboard shortcuts

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