wisski-cloud-distillery/internal/models/user.go
2023-01-17 12:25:23 +01:00

46 lines
1.1 KiB
Go

package models
// UserTable is the name of the table the [`User`] model is stored in.
const UserTable = "users"
// User represents a distillery user
type User struct {
Pk uint `gorm:"column:pk;primaryKey"`
User string `gorm:"column:user;not null;unique"` // name of the user
PasswordHash []byte `gorm:"column:password"` // password of the user, hashed
TOTPEnabled *bool `gorm:"column:totpenabled"` // is totp enabled for the user
TOTPURL string `gorm:"column:totp"` // the totp of the user
Enabled *bool `gorm:"enabled;not null"`
Admin *bool `gorm:"column:admin;not null"`
}
func (user *User) HasPassword() bool {
return len(user.PasswordHash) != 0
}
func (user *User) IsAdmin() bool {
return user.Admin != nil && *user.Admin
}
func (user *User) SetAdmin(v bool) {
user.Admin = &v
}
func (user *User) IsEnabled() bool {
return user.Enabled != nil && *user.Enabled
}
func (user *User) SetEnabled(v bool) {
user.Enabled = &v
}
func (user *User) IsTOTPEnabled() bool {
return user.TOTPEnabled != nil && *user.TOTPEnabled
}
func (user *User) SetTOTPEnabled(v bool) {
user.TOTPEnabled = &v
}