added prefix scan and fixed logout issue
This commit is contained in:
parent
4812a60367
commit
8143e484cd
12 changed files with 99 additions and 77 deletions
|
|
@ -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 {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue