sh3lly/auth/privs.go

37 rindas
914 B
Go

package auth
import "encoding/json"
// PrivLevel represents a user account's privilege level.
type PrivLevel uint8
const (
// LevelBanned represents a user that is forbidden to login.
LevelBanned PrivLevel = iota
// Default represents a normal user.
Default
// Operator represents a moderator with extra privileges.
Operator
// Admin represents a user with all possible privileges.
Admin
)
// SetPrivLevel sets the privilege level of a user.
func (users *UserDB) SetPrivLevel(user *RegisteredUser, level PrivLevel) error {
users.mu.Lock()
defer users.mu.Unlock()
user.Privs = level
userJSON, err := json.Marshal(user)
if err != nil {
return err
}
return users.DB.Put(uint32ToBytes(user.ID), userJSON)
}
// GetPrivs retrieves the privilege level of the given user
func (users *UserDB) GetPrivs(user *RegisteredUser) PrivLevel {
users.mu.RLock()
defer users.mu.RUnlock()
return user.Privs
}