aboutsummaryrefslogtreecommitdiff
path: root/models/user.go
diff options
context:
space:
mode:
authorLunny Xiao <xiaolunwen@gmail.com>2014-04-05 15:30:49 +0800
committerLunny Xiao <xiaolunwen@gmail.com>2014-04-05 15:30:49 +0800
commita92826a8feee904440d86fd851ac4ecce35520fd (patch)
treee813b36b2b6db0807e02abd61a4f220a971cc84e /models/user.go
parent493b0c5ac212a28f46938cf8dfb2efb79f658548 (diff)
parente41ab839c7dbbdffc60a4e02775f24add9d126d9 (diff)
Merge branch 'dev' of github.com:gogits/gogs into dev
Conflicts: routers/repo/repo.go
Diffstat (limited to 'models/user.go')
-rw-r--r--models/user.go24
1 files changed, 21 insertions, 3 deletions
diff --git a/models/user.go b/models/user.go
index c5e46b48..1ec3b295 100644
--- a/models/user.go
+++ b/models/user.go
@@ -105,11 +105,17 @@ type Member struct {
// IsUserExist checks if given user name exist,
// the user name should be noncased unique.
func IsUserExist(name string) (bool, error) {
+ if len(name) == 0 {
+ return false, nil
+ }
return orm.Get(&User{LowerName: strings.ToLower(name)})
}
// IsEmailUsed returns true if the e-mail has been used.
func IsEmailUsed(email string) (bool, error) {
+ if len(email) == 0 {
+ return false, nil
+ }
return orm.Get(&User{Email: email})
}
@@ -212,11 +218,18 @@ func ChangeUserName(user *User, newUserName string) (err error) {
if err = orm.Find(&accesses, &Access{UserName: user.LowerName}); err != nil {
return err
}
+
+ sess := orm.NewSession()
+ defer sess.Close()
+ if err = sess.Begin(); err != nil {
+ return err
+ }
+
for i := range accesses {
accesses[i].UserName = newUserName
if strings.HasPrefix(accesses[i].RepoName, user.LowerName+"/") {
accesses[i].RepoName = strings.Replace(accesses[i].RepoName, user.LowerName, newUserName, 1)
- if err = UpdateAccess(&accesses[i]); err != nil {
+ if err = UpdateAccessWithSession(sess, &accesses[i]); err != nil {
return err
}
}
@@ -235,14 +248,19 @@ func ChangeUserName(user *User, newUserName string) (err error) {
for j := range accesses {
accesses[j].RepoName = newUserName + "/" + repos[i].LowerName
- if err = UpdateAccess(&accesses[j]); err != nil {
+ if err = UpdateAccessWithSession(sess, &accesses[j]); err != nil {
return err
}
}
}
// Change user directory name.
- return os.Rename(UserPath(user.LowerName), UserPath(newUserName))
+ if err = os.Rename(UserPath(user.LowerName), UserPath(newUserName)); err != nil {
+ sess.Rollback()
+ return err
+ }
+
+ return sess.Commit()
}
// UpdateUser updates user's information.