diff options
author | Steve <nilslice@gmail.com> | 2016-12-06 15:24:36 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-12-06 15:24:36 -0800 |
commit | f39c1519ab382a343c05163f00f38c83bff3583d (patch) | |
tree | 254f75834f2cb787179f7880b0063e667d8ad234 /system/db/user.go | |
parent | 5527117e706114c1188afaa10188d96170874047 (diff) | |
parent | 64050ef8065bccdef0aab1748040995c637fe9ed (diff) |
Merge pull request #19 from bosssauce/ponzu-dev
[core] Added account recovery process and content pagination in admin UI
Diffstat (limited to 'system/db/user.go')
-rw-r--r-- | system/db/user.go | 25 |
1 files changed, 15 insertions, 10 deletions
diff --git a/system/db/user.go b/system/db/user.go index 3386dc2..b92a62a 100644 --- a/system/db/user.go +++ b/system/db/user.go @@ -24,7 +24,7 @@ var ErrNoUserExists = errors.New("Error. No user exists.") func SetUser(usr *user.User) (int, error) { err := store.Update(func(tx *bolt.Tx) error { email := []byte(usr.Email) - users := tx.Bucket([]byte("_users")) + users := tx.Bucket([]byte("__users")) // check if user is found by email, fail if nil exists := users.Get(email) @@ -61,8 +61,13 @@ func SetUser(usr *user.User) (int, error) { // UpdateUser sets key:value pairs in the db for existing user settings func UpdateUser(usr, updatedUsr *user.User) error { + // ensure user ID remains the same + if updatedUsr.ID != usr.ID { + updatedUsr.ID = usr.ID + } + err := store.Update(func(tx *bolt.Tx) error { - users := tx.Bucket([]byte("_users")) + users := tx.Bucket([]byte("__users")) // check if user is found by email, fail if nil exists := users.Get([]byte(usr.Email)) @@ -103,7 +108,7 @@ func UpdateUser(usr, updatedUsr *user.User) error { // DeleteUser deletes a user from the db by email func DeleteUser(email string) error { err := store.Update(func(tx *bolt.Tx) error { - b := tx.Bucket([]byte("_users")) + b := tx.Bucket([]byte("__users")) err := b.Delete([]byte(email)) if err != nil { return err @@ -122,7 +127,7 @@ func DeleteUser(email string) error { func User(email string) ([]byte, error) { val := &bytes.Buffer{} err := store.View(func(tx *bolt.Tx) error { - b := tx.Bucket([]byte("_users")) + b := tx.Bucket([]byte("__users")) usr := b.Get([]byte(email)) _, err := val.Write(usr) @@ -147,7 +152,7 @@ func User(email string) ([]byte, error) { func UserAll() ([][]byte, error) { var users [][]byte err := store.View(func(tx *bolt.Tx) error { - b := tx.Bucket([]byte("_users")) + b := tx.Bucket([]byte("__users")) err := b.ForEach(func(k, v []byte) error { users = append(users, v) return nil @@ -196,7 +201,7 @@ func SetRecoveryKey(email string) (string, error) { key := fmt.Sprintf("%d", rand.Int63()) err := store.Update(func(tx *bolt.Tx) error { - b, err := tx.CreateBucketIfNotExists([]byte("_recoveryKeys")) + b, err := tx.CreateBucketIfNotExists([]byte("__recoveryKeys")) if err != nil { return err } @@ -215,18 +220,18 @@ func SetRecoveryKey(email string) (string, error) { return key, nil } -// RecoveryKey generates and saves a random secret key to verify an email -// address submitted in order to recover/reset an account password +// RecoveryKey gets a previously set recovery key to verify an email address +// submitted in order to recover/reset an account password func RecoveryKey(email string) (string, error) { key := &bytes.Buffer{} err := store.View(func(tx *bolt.Tx) error { - b := tx.Bucket([]byte("_recoveryKeys")) + b := tx.Bucket([]byte("__recoveryKeys")) if b == nil { return errors.New("No database found for checking keys.") } - _, err := key.Write(b.Get([]byte("email"))) + _, err := key.Write(b.Get([]byte(email))) if err != nil { return err } |