added prefix scan and fixed logout issue

This commit is contained in:
ston1th 2019-07-06 11:31:12 +02:00
commit 8143e484cd
12 changed files with 99 additions and 77 deletions

View file

@ -16,6 +16,9 @@ import (
const userPrefix = "user/"
var (
errUserLocked = errors.New("db: user locked")
errUserLogin = errors.New("db: wrong login")
errUserPin = errors.New("db: wrong pin")
errUserNotFound = errors.New("db: user not found")
errUserExists = errors.New("db: user already exist")
errNameReserved = errors.New("db: name is reserved")
@ -24,13 +27,11 @@ var (
)
func (db *DB) GetUsers() (users core.Users, err error) {
err = db.store.ForEach(func(k string, _ []byte) error {
if trim, ok := hasTrimPrefix(k, userPrefix); ok {
u, err := db.GetUser(trim)
u.Password = ""
if err == nil {
users = append(users, u)
}
err = db.store.ForEachPrefix(userPrefix, func(k string, _ []byte) error {
u, err := db.GetUser(k)
u.Password = ""
if err == nil {
users = append(users, u)
}
return nil
})
@ -94,7 +95,7 @@ func (db *DB) Login(username, password string) (u core.User, err error) {
return
}
if u.Locked == 3 {
err = errors.New("db: user locked")
err = errUserLocked
return
}
if err = bcrypt.CompareHashAndPassword([]byte(u.Password), validatePassword(password)); err != nil {
@ -103,7 +104,7 @@ func (db *DB) Login(username, password string) (u core.User, err error) {
if err != nil {
return
}
err = errors.New("db: wrong login")
err = errUserLogin
return
}
if u.Locked > 0 {
@ -122,7 +123,7 @@ func (db *DB) Totp(username, pin string) (u core.User, err error) {
return
}
if u.Locked == 3 {
err = errors.New("db: user locked")
err = errUserLocked
return
}
if !otp.Validate(pin, u.Secret) {
@ -131,7 +132,7 @@ func (db *DB) Totp(username, pin string) (u core.User, err error) {
if err != nil {
return
}
err = errors.New("db: wrong pin")
err = errUserPin
return
}
if u.Locked > 0 {