diff --git a/models/org.go b/models/org.go index 3232bf2a..90e5a1f3 100644 --- a/models/org.go +++ b/models/org.go @@ -77,6 +77,17 @@ func (org *User) RemoveMember(uid int64) error { return RemoveOrgUser(org.Id, uid) } +// IsOrgEmailUsed returns true if the e-mail has been used in organization account. +func IsOrgEmailUsed(email string) (bool, error) { + if len(email) == 0 { + return false, nil + } + return x.Get(&User{ + Email: email, + Type: ORGANIZATION, + }) +} + // CreateOrganization creates record of a new organization. func CreateOrganization(org, owner *User) (*User, error) { if !IsLegalName(org.Name) { @@ -90,7 +101,7 @@ func CreateOrganization(org, owner *User) (*User, error) { return nil, ErrUserAlreadyExist } - isExist, err = IsEmailUsed(org.Email) + isExist, err = IsOrgEmailUsed(org.Email) if err != nil { return nil, err } else if isExist { diff --git a/models/user.go b/models/user.go index c68ae310..b0cc2ae1 100644 --- a/models/user.go +++ b/models/user.go @@ -53,12 +53,12 @@ type User struct { LowerName string `xorm:"UNIQUE NOT NULL"` Name string `xorm:"UNIQUE NOT NULL"` FullName string - Email string `xorm:"UNIQUE NOT NULL"` + Email string `xorm:"UNIQUE(s) NOT NULL"` Passwd string `xorm:"NOT NULL"` LoginType LoginType LoginSource int64 `xorm:"NOT NULL DEFAULT 0"` LoginName string - Type UserType + Type UserType `xorm:"UNIQUE(s)"` Orgs []*User `xorm:"-"` Repos []*Repository `xorm:"-"` Location string