aboutsummaryrefslogtreecommitdiff
path: root/models/user.go
diff options
context:
space:
mode:
authorUnknown <joe2010xtmf@163.com>2014-03-06 11:10:35 -0500
committerUnknown <joe2010xtmf@163.com>2014-03-06 11:10:35 -0500
commit1249392c8390d9e348c388c0ad6e80fce208cd95 (patch)
tree56d04a67feca2c88bb46249e2aec848a0715ead3 /models/user.go
parent4b912b9ae6e087271c0c98b6e444384555ea3e84 (diff)
Finish register user
Diffstat (limited to 'models/user.go')
-rw-r--r--models/user.go30
1 files changed, 25 insertions, 5 deletions
diff --git a/models/user.go b/models/user.go
index d8469251..912b04a3 100644
--- a/models/user.go
+++ b/models/user.go
@@ -17,6 +17,12 @@ import (
"github.com/gogits/gogs/utils"
)
+var UserPasswdSalt string
+
+func init() {
+ UserPasswdSalt = utils.Cfg.MustValue("security", "USER_PASSWD_SALT")
+}
+
// User types.
const (
UT_INDIVIDUAL = iota + 1
@@ -33,9 +39,9 @@ const (
type User struct {
Id int64
LowerName string `xorm:"unique not null"`
- Name string `xorm:"unique not null" valid:"AlphaDash;MinSize(5);MaxSize(30)"`
- Email string `xorm:"unique not null" valid:"Email"`
- Passwd string `xorm:"not null" valid:"MinSize(8)"`
+ Name string `xorm:"unique not null"`
+ Email string `xorm:"unique not null"`
+ Passwd string `xorm:"not null"`
LoginType int
Type int
NumFollowers int
@@ -79,6 +85,7 @@ var (
ErrUserOwnRepos = errors.New("User still have ownership of repositories")
ErrUserAlreadyExist = errors.New("User already exist")
ErrUserNotExist = errors.New("User does not exist")
+ ErrEmailAlreadyUsed = errors.New("E-mail already used")
)
// IsUserExist checks if given user name exist,
@@ -87,6 +94,10 @@ func IsUserExist(name string) (bool, error) {
return orm.Get(&User{LowerName: strings.ToLower(name)})
}
+func IsEmailUsed(email string) (bool, error) {
+ return orm.Get(&User{Email: email})
+}
+
// RegisterUser creates record of a new user.
func RegisterUser(user *User) (err error) {
isExist, err := IsUserExist(user.Name)
@@ -96,9 +107,18 @@ func RegisterUser(user *User) (err error) {
return ErrUserAlreadyExist
}
+ isExist, err = IsEmailUsed(user.Email)
+ if err != nil {
+ return err
+ } else if isExist {
+ return ErrEmailAlreadyUsed
+ }
+
user.LowerName = strings.ToLower(user.Name)
user.Avatar = utils.EncodeMd5(user.Email)
- user.EncodePasswd()
+ if err = user.EncodePasswd(); err != nil {
+ return err
+ }
if _, err = orm.Insert(user); err != nil {
return err
}
@@ -136,7 +156,7 @@ func DeleteUser(user *User) error {
// EncodePasswd encodes password to safe format.
func (user *User) EncodePasswd() error {
- newPasswd, err := scrypt.Key([]byte(user.Passwd), []byte("!#@FDEWREWR&*("), 16384, 8, 1, 64)
+ newPasswd, err := scrypt.Key([]byte(user.Passwd), []byte(UserPasswdSalt), 16384, 8, 1, 64)
user.Passwd = fmt.Sprintf("%x", newPasswd)
return err
}