first working version
This commit is contained in:
parent
261ebed165
commit
c9dfecc519
21 changed files with 296 additions and 178 deletions
10
pkg/db/db.go
10
pkg/db/db.go
|
|
@ -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
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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 {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue