Index: state/user.go |
=== modified file 'state/user.go' |
--- state/user.go 2014-01-14 13:29:26 +0000 |
+++ state/user.go 2014-02-12 18:03:05 +0000 |
@@ -4,12 +4,12 @@ |
package state |
import ( |
- "fmt" |
"regexp" |
"labix.org/v2/mgo" |
"labix.org/v2/mgo/txn" |
+ errgo "launchpad.net/errgo/errors" |
"launchpad.net/juju-core/errors" |
"launchpad.net/juju-core/names" |
"launchpad.net/juju-core/utils" |
@@ -21,7 +21,7 @@ |
var count int |
var err error |
if count, err = st.users.FindId(name).Count(); err != nil { |
- return false, err |
+ return false, wrap(err) |
} |
return count > 0, nil |
} |
@@ -29,11 +29,11 @@ |
// AddUser adds a user to the state. |
func (st *State) AddUser(name, password string) (*User, error) { |
if !validUser.MatchString(name) { |
- return nil, fmt.Errorf("invalid user name %q", name) |
+ return nil, errgo.Newf("invalid user name %q", name) |
} |
salt, err := utils.RandomSalt() |
if err != nil { |
- return nil, err |
+ return nil, wrap(err) |
} |
u := &User{ |
st: st, |
@@ -50,11 +50,11 @@ |
Insert: &u.doc, |
}} |
err = st.runTransaction(ops) |
- if err == txn.ErrAborted { |
- err = fmt.Errorf("user already exists") |
+ if errgo.Diagnosis(err) == txn.ErrAborted { |
+ err = errgo.Newf("user already exists") |
} |
if err != nil { |
- return nil, err |
+ return nil, wrap(err) |
} |
return u, nil |
} |
@@ -63,7 +63,7 @@ |
// given name into the provided userDoc. |
func (st *State) getUser(name string, udoc *userDoc) error { |
err := st.users.Find(D{{"_id", name}}).One(udoc) |
- if err == mgo.ErrNotFound { |
+ if errgo.Diagnosis(err) == mgo.ErrNotFound { |
err = errors.NotFoundf("user %q", name) |
} |
return err |
@@ -73,7 +73,7 @@ |
func (st *State) User(name string) (*User, error) { |
u := &User{st: st} |
if err := st.getUser(name, &u.doc); err != nil { |
- return nil, err |
+ return nil, wrap(err, errors.IsNotFoundError) |
} |
return u, nil |
} |
@@ -105,7 +105,7 @@ |
func (u *User) SetPassword(password string) error { |
salt, err := utils.RandomSalt() |
if err != nil { |
- return err |
+ return wrap(err) |
} |
return u.SetPasswordHash(utils.UserPasswordHash(password, salt), salt) |
} |
@@ -121,7 +121,7 @@ |
Update: D{{"$set", D{{"passwordhash", pwHash}, {"passwordsalt", pwSalt}}}}, |
}} |
if err := u.st.runTransaction(ops); err != nil { |
- return fmt.Errorf("cannot set password of user %q: %v", u.Name(), err) |
+ return errgo.Wrapf(err, "cannot set password of user %q", u.Name()) |
} |
u.doc.PasswordHash = pwHash |
u.doc.PasswordSalt = pwSalt |
@@ -157,7 +157,7 @@ |
func (u *User) Refresh() error { |
var udoc userDoc |
if err := u.st.getUser(u.Name(), &udoc); err != nil { |
- return err |
+ return wrap(err) |
} |
u.doc = udoc |
return nil |