first working version

This commit is contained in:
ston1th 2022-07-10 15:51:31 +02:00
commit c9dfecc519
21 changed files with 296 additions and 178 deletions

View file

@ -21,12 +21,11 @@ const (
type DB struct {
log logr.Logger
admin bool
store store.Store
}
func NewPlain(log logr.Logger, cfg *core.Config) (db *DB, err error) {
db = &DB{log: log, admin: cfg.Admin}
db = &DB{log: log}
dbFile := filepath.Join(cfg.DataDir, storeFile)
//err = godrop.Unveil(dbFile, "rwc")
//if err != nil {
@ -42,7 +41,12 @@ func New(log logr.Logger, cfg *core.Config) (db *DB, err error) {
return
}
if db.UserExists(defUser) != nil {
err = db.CreateUser(defUser, defEmail, defPassword, true)
err = db.CreateUser(defUser, defEmail, defPassword, true, cfg.AdminDisabled)
if err != nil {
return
}
} else {
err = db.AdminUpdateUser(defUser, "", true, cfg.AdminDisabled)
if err != nil {
return
}

View file

@ -62,7 +62,7 @@ func (db *DB) UserExists(username string) error {
return db.store.Get(userPrefix+username, nil)
}
func (db *DB) CreateUser(username, email, password string, admin bool) error {
func (db *DB) CreateUser(username, email, password string, admin, disabled bool) error {
username = userRe.ReplaceAllString(username, "")
if err := db.UserExists(username); err == nil {
return errUserExists
@ -77,18 +77,19 @@ func (db *DB) CreateUser(username, email, password string, admin bool) error {
Password: string(hash),
Created: strconv.Itoa(int(jwt.Now())),
Admin: admin,
Disabled: disabled,
})
}
func (db *DB) Login(username, password string) (u *core.User, err error) {
if username == defUser && !db.admin {
err = errors.New("db: user disabled")
return
}
u, err = db.GetUser(username)
if err != nil {
return
}
if u.Disabled {
err = errors.New("db: user disabled")
return
}
if u.Locked == 3 {
err = errUserLocked
return
@ -185,7 +186,7 @@ func (db *DB) ResetAdmin() error {
return db.UpdateUserPassword(defUser, defPassword)
}
func (db *DB) AdminUpdateUser(username, password string, admin bool) error {
func (db *DB) AdminUpdateUser(username, password string, admin, disabled bool) error {
if username == defUser && !admin {
return errors.New("user '" + defUser + "' cannot lose admin privileges")
}
@ -194,6 +195,7 @@ func (db *DB) AdminUpdateUser(username, password string, admin bool) error {
return err
}
u.Admin = admin
u.Disabled = disabled
if password != "" {
hash, err := bcrypt.GenerateFromPassword(validatePassword(password), bcryptCost)
if err != nil {