mirror of
https://github.com/go-gitea/gitea.git
synced 2026-10-06 18:57:34 +02:00
#1070 Clearer error message for illegal characters
This commit is contained in:
1 parent
d76f11c6f1
commit
698b9e2acc
15 files changed
+275
-167
No files matched your search
@@ -157,9 +157,6 @@ org_name_been_taken = Organization name has been already taken.
|
|||||||
team_name_been_taken = Team name has been already taken.
|
team_name_been_taken = Team name has been already taken.
|
||||||
email_been_used = E-mail address has been already used.
|
email_been_used = E-mail address has been already used.
|
||||||
ssh_key_been_used = Public key name or content has been used.
|
ssh_key_been_used = Public key name or content has been used.
|
||||||
illegal_username = Your username contains illegal characters.
|
|
||||||
illegal_repo_name = Repository name contains illegal characters.
|
|
||||||
illegal_org_name = Organization name contains illegal characters.
|
|
||||||
illegal_team_name = Team name contains illegal characters.
|
illegal_team_name = Team name contains illegal characters.
|
||||||
username_password_incorrect = Username or password is not correct.
|
username_password_incorrect = Username or password is not correct.
|
||||||
enterred_invalid_repo_name = Please make sure that the repository name you entered is correct.
|
enterred_invalid_repo_name = Please make sure that the repository name you entered is correct.
|
||||||
@@ -190,6 +187,9 @@ followers = Followers
|
|||||||
starred = Starred
|
starred = Starred
|
||||||
following = Following
|
following = Following
|
||||||
|
|
||||||
|
form.name_reserved = Username '%s' is reserved.
|
||||||
|
form.name_pattern_not_allowed = Username pattern '%s' is not allowed.
|
||||||
|
|
||||||
[settings]
|
[settings]
|
||||||
profile = Profile
|
profile = Profile
|
||||||
password = Password
|
password = Password
|
||||||
@@ -290,6 +290,9 @@ create_repo = Create Repository
|
|||||||
default_branch = Default Branch
|
default_branch = Default Branch
|
||||||
mirror_interval = Mirror Interval (hour)
|
mirror_interval = Mirror Interval (hour)
|
||||||
|
|
||||||
|
form.name_reserved = Repository name '%s' is reserved.
|
||||||
|
form.name_pattern_not_allowed = Repository name pattern '%s' is not allowed.
|
||||||
|
|
||||||
need_auth = Need Authorization
|
need_auth = Need Authorization
|
||||||
migrate_type = Migration Type
|
migrate_type = Migration Type
|
||||||
migrate_type_helper = This repository will be a <span class="label label-blue label-radius">mirror</span>
|
migrate_type_helper = This repository will be a <span class="label label-blue label-radius">mirror</span>
|
||||||
@@ -440,6 +443,9 @@ team_name_helper = You'll use this name to mention this team in conversations.
|
|||||||
team_desc_helper = What is this team all about?
|
team_desc_helper = What is this team all about?
|
||||||
team_permission_desc = What permission level should this team have?
|
team_permission_desc = What permission level should this team have?
|
||||||
|
|
||||||
|
form.name_reserved = Organization name '%s' is reserved.
|
||||||
|
form.name_pattern_not_allowed = Organization name pattern '%s' is not allowed.
|
||||||
|
|
||||||
settings = Settings
|
settings = Settings
|
||||||
settings.options = Options
|
settings.options = Options
|
||||||
settings.full_name = Full Name
|
settings.full_name = Full Name
|
||||||
@@ -449,7 +455,7 @@ settings.update_settings = Update Settings
|
|||||||
settings.change_orgname = Organization Name Changed
|
settings.change_orgname = Organization Name Changed
|
||||||
settings.change_orgname_desc = Organization name has been changed. This will affect how links relate to the organization. Do you want to continue?
|
settings.change_orgname_desc = Organization name has been changed. This will affect how links relate to the organization. Do you want to continue?
|
||||||
settings.update_setting_success = Organization settings were successfully updated.
|
settings.update_setting_success = Organization settings were successfully updated.
|
||||||
settings.delete = Delete Organization
|
settings.delete = Delete Organization
|
||||||
settings.delete_account = Delete This Organization
|
settings.delete_account = Delete This Organization
|
||||||
settings.delete_prompt = The organization will be permanently removed, and this <strong>CANNOT</strong> be undone!
|
settings.delete_prompt = The organization will be permanently removed, and this <strong>CANNOT</strong> be undone!
|
||||||
settings.confirm_delete_account = Confirm Deletion
|
settings.confirm_delete_account = Confirm Deletion
|
||||||
|
|||||||
@@ -8,6 +8,32 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
type ErrNameReserved struct {
|
||||||
|
Name string
|
||||||
|
}
|
||||||
|
|
||||||
|
func IsErrNameReserved(err error) bool {
|
||||||
|
_, ok := err.(ErrNameReserved)
|
||||||
|
return ok
|
||||||
|
}
|
||||||
|
|
||||||
|
func (err ErrNameReserved) Error() string {
|
||||||
|
return fmt.Sprintf("name is reserved: [name: %s]", err.Name)
|
||||||
|
}
|
||||||
|
|
||||||
|
type ErrNamePatternNotAllowed struct {
|
||||||
|
Pattern string
|
||||||
|
}
|
||||||
|
|
||||||
|
func IsErrNamePatternNotAllowed(err error) bool {
|
||||||
|
_, ok := err.(ErrNamePatternNotAllowed)
|
||||||
|
return ok
|
||||||
|
}
|
||||||
|
|
||||||
|
func (err ErrNamePatternNotAllowed) Error() string {
|
||||||
|
return fmt.Sprintf("name pattern is not allowed: [pattern: %s]", err.Pattern)
|
||||||
|
}
|
||||||
|
|
||||||
// ____ ___
|
// ____ ___
|
||||||
// | | \______ ___________
|
// | | \______ ___________
|
||||||
// | | / ___// __ \_ __ \
|
// | | / ___// __ \_ __ \
|
||||||
@@ -15,6 +41,32 @@ import (
|
|||||||
// |______//____ >\___ >__|
|
// |______//____ >\___ >__|
|
||||||
// \/ \/
|
// \/ \/
|
||||||
|
|
||||||
|
type ErrUserAlreadyExist struct {
|
||||||
|
Name string
|
||||||
|
}
|
||||||
|
|
||||||
|
func IsErrUserAlreadyExist(err error) bool {
|
||||||
|
_, ok := err.(ErrUserAlreadyExist)
|
||||||
|
return ok
|
||||||
|
}
|
||||||
|
|
||||||
|
func (err ErrUserAlreadyExist) Error() string {
|
||||||
|
return fmt.Sprintf("user already exists: [name: %s]", err.Name)
|
||||||
|
}
|
||||||
|
|
||||||
|
type ErrEmailAlreadyUsed struct {
|
||||||
|
Email string
|
||||||
|
}
|
||||||
|
|
||||||
|
func IsErrEmailAlreadyUsed(err error) bool {
|
||||||
|
_, ok := err.(ErrEmailAlreadyUsed)
|
||||||
|
return ok
|
||||||
|
}
|
||||||
|
|
||||||
|
func (err ErrEmailAlreadyUsed) Error() string {
|
||||||
|
return fmt.Sprintf("e-mail has been used: [email: %s]", err.Email)
|
||||||
|
}
|
||||||
|
|
||||||
type ErrUserOwnRepos struct {
|
type ErrUserOwnRepos struct {
|
||||||
UID int64
|
UID int64
|
||||||
}
|
}
|
||||||
|
|||||||
+19
-19
@@ -105,23 +105,23 @@ func IsOrgEmailUsed(email string) (bool, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// CreateOrganization creates record of a new organization.
|
// CreateOrganization creates record of a new organization.
|
||||||
func CreateOrganization(org, owner *User) (*User, error) {
|
func CreateOrganization(org, owner *User) (err error) {
|
||||||
if !IsLegalName(org.Name) {
|
if err = IsUsableName(org.Name); err != nil {
|
||||||
return nil, ErrUserNameIllegal
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
isExist, err := IsUserExist(0, org.Name)
|
isExist, err := IsUserExist(0, org.Name)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return err
|
||||||
} else if isExist {
|
} else if isExist {
|
||||||
return nil, ErrUserAlreadyExist
|
return ErrUserAlreadyExist{org.Name}
|
||||||
}
|
}
|
||||||
|
|
||||||
isExist, err = IsOrgEmailUsed(org.Email)
|
isExist, err = IsOrgEmailUsed(org.Email)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return err
|
||||||
} else if isExist {
|
} else if isExist {
|
||||||
return nil, ErrEmailAlreadyUsed
|
return ErrEmailAlreadyUsed{org.Email}
|
||||||
}
|
}
|
||||||
|
|
||||||
org.LowerName = strings.ToLower(org.Name)
|
org.LowerName = strings.ToLower(org.Name)
|
||||||
@@ -135,11 +135,11 @@ func CreateOrganization(org, owner *User) (*User, error) {
|
|||||||
sess := x.NewSession()
|
sess := x.NewSession()
|
||||||
defer sessionRelease(sess)
|
defer sessionRelease(sess)
|
||||||
if err = sess.Begin(); err != nil {
|
if err = sess.Begin(); err != nil {
|
||||||
return nil, err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
if _, err = sess.Insert(org); err != nil {
|
if _, err = sess.Insert(org); err != nil {
|
||||||
return nil, err
|
return fmt.Errorf("insert organization: %v", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Create default owner team.
|
// Create default owner team.
|
||||||
@@ -151,7 +151,7 @@ func CreateOrganization(org, owner *User) (*User, error) {
|
|||||||
NumMembers: 1,
|
NumMembers: 1,
|
||||||
}
|
}
|
||||||
if _, err = sess.Insert(t); err != nil {
|
if _, err = sess.Insert(t); err != nil {
|
||||||
return nil, err
|
return fmt.Errorf("insert owner team: %v", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Add initial creator to organization and owner team.
|
// Add initial creator to organization and owner team.
|
||||||
@@ -162,7 +162,7 @@ func CreateOrganization(org, owner *User) (*User, error) {
|
|||||||
NumTeams: 1,
|
NumTeams: 1,
|
||||||
}
|
}
|
||||||
if _, err = sess.Insert(ou); err != nil {
|
if _, err = sess.Insert(ou); err != nil {
|
||||||
return nil, err
|
return fmt.Errorf("insert org-user relation: %v", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
tu := &TeamUser{
|
tu := &TeamUser{
|
||||||
@@ -171,14 +171,14 @@ func CreateOrganization(org, owner *User) (*User, error) {
|
|||||||
TeamID: t.ID,
|
TeamID: t.ID,
|
||||||
}
|
}
|
||||||
if _, err = sess.Insert(tu); err != nil {
|
if _, err = sess.Insert(tu); err != nil {
|
||||||
return nil, err
|
return fmt.Errorf("insert team-user relation: %v", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if err = os.MkdirAll(UserPath(org.Name), os.ModePerm); err != nil {
|
if err = os.MkdirAll(UserPath(org.Name), os.ModePerm); err != nil {
|
||||||
return nil, err
|
return fmt.Errorf("create directory: %v", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
return org, sess.Commit()
|
return sess.Commit()
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetOrgByName returns organization by given name.
|
// GetOrgByName returns organization by given name.
|
||||||
@@ -594,9 +594,9 @@ func (t *Team) RemoveRepository(repoID int64) error {
|
|||||||
|
|
||||||
// NewTeam creates a record of new team.
|
// NewTeam creates a record of new team.
|
||||||
// It's caller's responsibility to assign organization ID.
|
// It's caller's responsibility to assign organization ID.
|
||||||
func NewTeam(t *Team) error {
|
func NewTeam(t *Team) (err error) {
|
||||||
if !IsLegalName(t.Name) {
|
if err = IsUsableName(t.Name); err != nil {
|
||||||
return ErrTeamNameIllegal
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
has, err := x.Id(t.OrgID).Get(new(User))
|
has, err := x.Id(t.OrgID).Get(new(User))
|
||||||
@@ -670,8 +670,8 @@ func GetTeamById(teamId int64) (*Team, error) {
|
|||||||
|
|
||||||
// UpdateTeam updates information of team.
|
// UpdateTeam updates information of team.
|
||||||
func UpdateTeam(t *Team, authChanged bool) (err error) {
|
func UpdateTeam(t *Team, authChanged bool) (err error) {
|
||||||
if !IsLegalName(t.Name) {
|
if err = IsUsableName(t.Name); err != nil {
|
||||||
return ErrTeamNameIllegal
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
if len(t.Description) > 255 {
|
if len(t.Description) > 255 {
|
||||||
|
|||||||
+43
-26
@@ -37,7 +37,6 @@ const (
|
|||||||
var (
|
var (
|
||||||
ErrRepoAlreadyExist = errors.New("Repository already exist")
|
ErrRepoAlreadyExist = errors.New("Repository already exist")
|
||||||
ErrRepoFileNotExist = errors.New("Repository file does not exist")
|
ErrRepoFileNotExist = errors.New("Repository file does not exist")
|
||||||
ErrRepoNameIllegal = errors.New("Repository name contains illegal characters")
|
|
||||||
ErrRepoFileNotLoaded = errors.New("Repository file not loaded")
|
ErrRepoFileNotLoaded = errors.New("Repository file not loaded")
|
||||||
ErrMirrorNotExist = errors.New("Mirror does not exist")
|
ErrMirrorNotExist = errors.New("Mirror does not exist")
|
||||||
ErrInvalidReference = errors.New("Invalid reference specified")
|
ErrInvalidReference = errors.New("Invalid reference specified")
|
||||||
@@ -223,12 +222,12 @@ func (repo *Repository) DescriptionHtml() template.HTML {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// IsRepositoryExist returns true if the repository with given name under user has already existed.
|
// IsRepositoryExist returns true if the repository with given name under user has already existed.
|
||||||
func IsRepositoryExist(u *User, repoName string) bool {
|
func IsRepositoryExist(u *User, repoName string) (bool, error) {
|
||||||
has, _ := x.Get(&Repository{
|
has, err := x.Get(&Repository{
|
||||||
OwnerId: u.Id,
|
OwnerId: u.Id,
|
||||||
LowerName: strings.ToLower(repoName),
|
LowerName: strings.ToLower(repoName),
|
||||||
})
|
})
|
||||||
return has && com.IsDir(RepoPath(u.Name, repoName))
|
return has && com.IsDir(RepoPath(u.Name, repoName)), err
|
||||||
}
|
}
|
||||||
|
|
||||||
// CloneLink represents different types of clone URLs of repository.
|
// CloneLink represents different types of clone URLs of repository.
|
||||||
@@ -253,24 +252,27 @@ func (repo *Repository) CloneLink() (cl CloneLink, err error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
var (
|
var (
|
||||||
illegalEquals = []string{"debug", "raw", "install", "api", "avatar", "user", "org", "help", "stars", "issues", "pulls", "commits", "repo", "template", "admin", "new"}
|
reservedNames = []string{"debug", "raw", "install", "api", "avatar", "user", "org", "help", "stars", "issues", "pulls", "commits", "repo", "template", "admin", "new"}
|
||||||
illegalSuffixs = []string{".git", ".keys"}
|
reservedPatterns = []string{"*.git", "*.keys"}
|
||||||
)
|
)
|
||||||
|
|
||||||
// IsLegalName returns false if name contains illegal characters.
|
// IsUsableName checks if name is reserved or pattern of name is not allowed.
|
||||||
func IsLegalName(repoName string) bool {
|
func IsUsableName(name string) error {
|
||||||
repoName = strings.ToLower(repoName)
|
name = strings.ToLower(name)
|
||||||
for _, char := range illegalEquals {
|
for i := range reservedNames {
|
||||||
if repoName == char {
|
if name == reservedNames[i] {
|
||||||
return false
|
return ErrNameReserved{name}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for _, char := range illegalSuffixs {
|
|
||||||
if strings.HasSuffix(repoName, char) {
|
for _, pat := range reservedPatterns {
|
||||||
return false
|
if pat[0] == '*' && strings.HasSuffix(name, pat[1:]) ||
|
||||||
|
(pat[len(pat)-1] == '*' && strings.HasPrefix(name, pat[:len(pat)-1])) {
|
||||||
|
return ErrNamePatternNotAllowed{pat}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return true
|
|
||||||
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// Mirror represents a mirror information of repository.
|
// Mirror represents a mirror information of repository.
|
||||||
@@ -504,11 +506,14 @@ func initRepository(e Engine, repoPath string, u *User, repo *Repository, initRe
|
|||||||
|
|
||||||
// CreateRepository creates a repository for given user or organization.
|
// CreateRepository creates a repository for given user or organization.
|
||||||
func CreateRepository(u *User, name, desc, lang, license string, isPrivate, isMirror, initReadme bool) (_ *Repository, err error) {
|
func CreateRepository(u *User, name, desc, lang, license string, isPrivate, isMirror, initReadme bool) (_ *Repository, err error) {
|
||||||
if !IsLegalName(name) {
|
if err = IsUsableName(name); err != nil {
|
||||||
return nil, ErrRepoNameIllegal
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
if IsRepositoryExist(u, name) {
|
has, err := IsRepositoryExist(u, name)
|
||||||
|
if err != nil {
|
||||||
|
return nil, fmt.Errorf("IsRepositoryExist: %v", err)
|
||||||
|
} else if has {
|
||||||
return nil, ErrRepoAlreadyExist
|
return nil, ErrRepoAlreadyExist
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -619,7 +624,10 @@ func TransferOwnership(u *User, newOwnerName string, repo *Repository) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Check if new owner has repository with same name.
|
// Check if new owner has repository with same name.
|
||||||
if IsRepositoryExist(newOwner, repo.Name) {
|
has, err := IsRepositoryExist(newOwner, repo.Name)
|
||||||
|
if err != nil {
|
||||||
|
return fmt.Errorf("IsRepositoryExist: %v", err)
|
||||||
|
} else if has {
|
||||||
return ErrRepoAlreadyExist
|
return ErrRepoAlreadyExist
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -727,16 +735,22 @@ func TransferOwnership(u *User, newOwnerName string, repo *Repository) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// ChangeRepositoryName changes all corresponding setting from old repository name to new one.
|
// ChangeRepositoryName changes all corresponding setting from old repository name to new one.
|
||||||
func ChangeRepositoryName(userName, oldRepoName, newRepoName string) (err error) {
|
func ChangeRepositoryName(u *User, oldRepoName, newRepoName string) (err error) {
|
||||||
userName = strings.ToLower(userName)
|
|
||||||
oldRepoName = strings.ToLower(oldRepoName)
|
oldRepoName = strings.ToLower(oldRepoName)
|
||||||
newRepoName = strings.ToLower(newRepoName)
|
newRepoName = strings.ToLower(newRepoName)
|
||||||
if !IsLegalName(newRepoName) {
|
if err = IsUsableName(newRepoName); err != nil {
|
||||||
return ErrRepoNameIllegal
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
has, err := IsRepositoryExist(u, newRepoName)
|
||||||
|
if err != nil {
|
||||||
|
return fmt.Errorf("IsRepositoryExist: %v", err)
|
||||||
|
} else if has {
|
||||||
|
return ErrRepoAlreadyExist
|
||||||
}
|
}
|
||||||
|
|
||||||
// Change repository directory name.
|
// Change repository directory name.
|
||||||
return os.Rename(RepoPath(userName, oldRepoName), RepoPath(userName, newRepoName))
|
return os.Rename(RepoPath(u.LowerName, oldRepoName), RepoPath(u.LowerName, newRepoName))
|
||||||
}
|
}
|
||||||
|
|
||||||
func updateRepository(e Engine, repo *Repository, visibilityChanged bool) (err error) {
|
func updateRepository(e Engine, repo *Repository, visibilityChanged bool) (err error) {
|
||||||
@@ -1340,7 +1354,10 @@ func IsStaring(uid, repoId int64) bool {
|
|||||||
// \/ \/
|
// \/ \/
|
||||||
|
|
||||||
func ForkRepository(u *User, oldRepo *Repository, name, desc string) (_ *Repository, err error) {
|
func ForkRepository(u *User, oldRepo *Repository, name, desc string) (_ *Repository, err error) {
|
||||||
if IsRepositoryExist(u, name) {
|
has, err := IsRepositoryExist(u, name)
|
||||||
|
if err != nil {
|
||||||
|
return nil, fmt.Errorf("IsRepositoryExist: %v", err)
|
||||||
|
} else if has {
|
||||||
return nil, ErrRepoAlreadyExist
|
return nil, ErrRepoAlreadyExist
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+16
-11
@@ -36,10 +36,8 @@ const (
|
|||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
ErrUserAlreadyExist = errors.New("User already exist")
|
|
||||||
ErrUserNotExist = errors.New("User does not exist")
|
ErrUserNotExist = errors.New("User does not exist")
|
||||||
ErrUserNotKeyOwner = errors.New("User does not the owner of public key")
|
ErrUserNotKeyOwner = errors.New("User does not the owner of public key")
|
||||||
ErrEmailAlreadyUsed = errors.New("E-mail already used")
|
|
||||||
ErrEmailNotExist = errors.New("E-mail does not exist")
|
ErrEmailNotExist = errors.New("E-mail does not exist")
|
||||||
ErrEmailNotActivated = errors.New("E-mail address has not been activated")
|
ErrEmailNotActivated = errors.New("E-mail address has not been activated")
|
||||||
ErrUserNameIllegal = errors.New("User name contains illegal characters")
|
ErrUserNameIllegal = errors.New("User name contains illegal characters")
|
||||||
@@ -273,23 +271,23 @@ func GetUserSalt() string {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// CreateUser creates record of a new user.
|
// CreateUser creates record of a new user.
|
||||||
func CreateUser(u *User) error {
|
func CreateUser(u *User) (err error) {
|
||||||
if !IsLegalName(u.Name) {
|
if err = IsUsableName(u.Name); err != nil {
|
||||||
return ErrUserNameIllegal
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
isExist, err := IsUserExist(0, u.Name)
|
isExist, err := IsUserExist(0, u.Name)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
} else if isExist {
|
} else if isExist {
|
||||||
return ErrUserAlreadyExist
|
return ErrUserAlreadyExist{u.Name}
|
||||||
}
|
}
|
||||||
|
|
||||||
isExist, err = IsEmailUsed(u.Email)
|
isExist, err = IsEmailUsed(u.Email)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
} else if isExist {
|
} else if isExist {
|
||||||
return ErrEmailAlreadyUsed
|
return ErrEmailAlreadyUsed{u.Email}
|
||||||
}
|
}
|
||||||
|
|
||||||
u.LowerName = strings.ToLower(u.Name)
|
u.LowerName = strings.ToLower(u.Name)
|
||||||
@@ -392,8 +390,15 @@ func VerifyActiveEmailCode(code, email string) *EmailAddress {
|
|||||||
|
|
||||||
// ChangeUserName changes all corresponding setting from old user name to new one.
|
// ChangeUserName changes all corresponding setting from old user name to new one.
|
||||||
func ChangeUserName(u *User, newUserName string) (err error) {
|
func ChangeUserName(u *User, newUserName string) (err error) {
|
||||||
if !IsLegalName(newUserName) {
|
if err = IsUsableName(newUserName); err != nil {
|
||||||
return ErrUserNameIllegal
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
isExist, err := IsUserExist(0, newUserName)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
} else if isExist {
|
||||||
|
return ErrUserAlreadyExist{newUserName}
|
||||||
}
|
}
|
||||||
|
|
||||||
return os.Rename(UserPath(u.LowerName), UserPath(newUserName))
|
return os.Rename(UserPath(u.LowerName), UserPath(newUserName))
|
||||||
@@ -405,7 +410,7 @@ func UpdateUser(u *User) error {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
} else if has {
|
} else if has {
|
||||||
return ErrEmailAlreadyUsed
|
return ErrEmailAlreadyUsed{u.Email}
|
||||||
}
|
}
|
||||||
|
|
||||||
u.LowerName = strings.ToLower(u.Name)
|
u.LowerName = strings.ToLower(u.Name)
|
||||||
@@ -641,7 +646,7 @@ func AddEmailAddress(email *EmailAddress) error {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
} else if used {
|
} else if used {
|
||||||
return ErrEmailAlreadyUsed
|
return ErrEmailAlreadyUsed{email.Email}
|
||||||
}
|
}
|
||||||
|
|
||||||
_, err = x.Insert(email)
|
_, err = x.Insert(email)
|
||||||
|
|||||||
+38
-38
@@ -76,7 +76,7 @@ func conf_app_ini() (*asset, error) {
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindata_file_info{name: "conf/app.ini", size: 8720, mode: os.FileMode(420), modTime: time.Unix(1427288024, 0)}
|
info := bindata_file_info{name: "conf/app.ini", size: 8720, mode: os.FileMode(420), modTime: time.Unix(1427400843, 0)}
|
||||||
a := &asset{bytes: bytes, info: info}
|
a := &asset{bytes: bytes, info: info}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
@@ -96,7 +96,7 @@ func conf_gitignore_android() (*asset, error) {
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindata_file_info{name: "conf/gitignore/Android", size: 270, mode: os.FileMode(420), modTime: time.Unix(1424928463, 0)}
|
info := bindata_file_info{name: "conf/gitignore/Android", size: 270, mode: os.FileMode(420), modTime: time.Unix(1398226579, 0)}
|
||||||
a := &asset{bytes: bytes, info: info}
|
a := &asset{bytes: bytes, info: info}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
@@ -116,7 +116,7 @@ func conf_gitignore_c() (*asset, error) {
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindata_file_info{name: "conf/gitignore/C", size: 143, mode: os.FileMode(420), modTime: time.Unix(1424928463, 0)}
|
info := bindata_file_info{name: "conf/gitignore/C", size: 143, mode: os.FileMode(420), modTime: time.Unix(1398226579, 0)}
|
||||||
a := &asset{bytes: bytes, info: info}
|
a := &asset{bytes: bytes, info: info}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
@@ -136,7 +136,7 @@ func conf_gitignore_c_sharp() (*asset, error) {
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindata_file_info{name: "conf/gitignore/C Sharp", size: 1520, mode: os.FileMode(420), modTime: time.Unix(1424928463, 0)}
|
info := bindata_file_info{name: "conf/gitignore/C Sharp", size: 1520, mode: os.FileMode(420), modTime: time.Unix(1409469215, 0)}
|
||||||
a := &asset{bytes: bytes, info: info}
|
a := &asset{bytes: bytes, info: info}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
@@ -156,7 +156,7 @@ func conf_gitignore_c_() (*asset, error) {
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindata_file_info{name: "conf/gitignore/C++", size: 126, mode: os.FileMode(420), modTime: time.Unix(1424928463, 0)}
|
info := bindata_file_info{name: "conf/gitignore/C++", size: 126, mode: os.FileMode(420), modTime: time.Unix(1398226579, 0)}
|
||||||
a := &asset{bytes: bytes, info: info}
|
a := &asset{bytes: bytes, info: info}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
@@ -176,7 +176,7 @@ func conf_gitignore_google_go() (*asset, error) {
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindata_file_info{name: "conf/gitignore/Google Go", size: 251, mode: os.FileMode(420), modTime: time.Unix(1424928463, 0)}
|
info := bindata_file_info{name: "conf/gitignore/Google Go", size: 251, mode: os.FileMode(420), modTime: time.Unix(1398226579, 0)}
|
||||||
a := &asset{bytes: bytes, info: info}
|
a := &asset{bytes: bytes, info: info}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
@@ -196,7 +196,7 @@ func conf_gitignore_java() (*asset, error) {
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindata_file_info{name: "conf/gitignore/Java", size: 188, mode: os.FileMode(420), modTime: time.Unix(1424928463, 0)}
|
info := bindata_file_info{name: "conf/gitignore/Java", size: 188, mode: os.FileMode(420), modTime: time.Unix(1398226579, 0)}
|
||||||
a := &asset{bytes: bytes, info: info}
|
a := &asset{bytes: bytes, info: info}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
@@ -216,7 +216,7 @@ func conf_gitignore_objective_c() (*asset, error) {
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindata_file_info{name: "conf/gitignore/Objective-C", size: 280, mode: os.FileMode(420), modTime: time.Unix(1424928463, 0)}
|
info := bindata_file_info{name: "conf/gitignore/Objective-C", size: 280, mode: os.FileMode(420), modTime: time.Unix(1398226579, 0)}
|
||||||
a := &asset{bytes: bytes, info: info}
|
a := &asset{bytes: bytes, info: info}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
@@ -236,7 +236,7 @@ func conf_gitignore_python() (*asset, error) {
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindata_file_info{name: "conf/gitignore/Python", size: 314, mode: os.FileMode(420), modTime: time.Unix(1424928463, 0)}
|
info := bindata_file_info{name: "conf/gitignore/Python", size: 314, mode: os.FileMode(420), modTime: time.Unix(1398226579, 0)}
|
||||||
a := &asset{bytes: bytes, info: info}
|
a := &asset{bytes: bytes, info: info}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
@@ -256,7 +256,7 @@ func conf_gitignore_ruby() (*asset, error) {
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindata_file_info{name: "conf/gitignore/Ruby", size: 158, mode: os.FileMode(420), modTime: time.Unix(1424928463, 0)}
|
info := bindata_file_info{name: "conf/gitignore/Ruby", size: 158, mode: os.FileMode(420), modTime: time.Unix(1398226579, 0)}
|
||||||
a := &asset{bytes: bytes, info: info}
|
a := &asset{bytes: bytes, info: info}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
@@ -276,7 +276,7 @@ func conf_license_affero_gpl() (*asset, error) {
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindata_file_info{name: "conf/license/Affero GPL", size: 34499, mode: os.FileMode(420), modTime: time.Unix(1424928463, 0)}
|
info := bindata_file_info{name: "conf/license/Affero GPL", size: 34499, mode: os.FileMode(420), modTime: time.Unix(1398226579, 0)}
|
||||||
a := &asset{bytes: bytes, info: info}
|
a := &asset{bytes: bytes, info: info}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
@@ -296,7 +296,7 @@ func conf_license_apache_v2_license() (*asset, error) {
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindata_file_info{name: "conf/license/Apache v2 License", size: 11323, mode: os.FileMode(420), modTime: time.Unix(1424928463, 0)}
|
info := bindata_file_info{name: "conf/license/Apache v2 License", size: 11323, mode: os.FileMode(420), modTime: time.Unix(1398226579, 0)}
|
||||||
a := &asset{bytes: bytes, info: info}
|
a := &asset{bytes: bytes, info: info}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
@@ -316,7 +316,7 @@ func conf_license_artistic_license_2_0() (*asset, error) {
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindata_file_info{name: "conf/license/Artistic License 2.0", size: 8887, mode: os.FileMode(420), modTime: time.Unix(1424928463, 0)}
|
info := bindata_file_info{name: "conf/license/Artistic License 2.0", size: 8887, mode: os.FileMode(420), modTime: time.Unix(1398226579, 0)}
|
||||||
a := &asset{bytes: bytes, info: info}
|
a := &asset{bytes: bytes, info: info}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
@@ -336,7 +336,7 @@ func conf_license_bsd_3_clause_license() (*asset, error) {
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindata_file_info{name: "conf/license/BSD (3-Clause) License", size: 1473, mode: os.FileMode(420), modTime: time.Unix(1424928463, 0)}
|
info := bindata_file_info{name: "conf/license/BSD (3-Clause) License", size: 1473, mode: os.FileMode(420), modTime: time.Unix(1398226579, 0)}
|
||||||
a := &asset{bytes: bytes, info: info}
|
a := &asset{bytes: bytes, info: info}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
@@ -356,7 +356,7 @@ func conf_license_bsd_license() (*asset, error) {
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindata_file_info{name: "conf/license/BSD license", size: 1280, mode: os.FileMode(420), modTime: time.Unix(1424928463, 0)}
|
info := bindata_file_info{name: "conf/license/BSD license", size: 1280, mode: os.FileMode(420), modTime: time.Unix(1409469215, 0)}
|
||||||
a := &asset{bytes: bytes, info: info}
|
a := &asset{bytes: bytes, info: info}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
@@ -376,7 +376,7 @@ func conf_license_cc0_1_0_universal() (*asset, error) {
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindata_file_info{name: "conf/license/CC0 1.0 Universal", size: 6554, mode: os.FileMode(420), modTime: time.Unix(1424928463, 0)}
|
info := bindata_file_info{name: "conf/license/CC0 1.0 Universal", size: 6554, mode: os.FileMode(420), modTime: time.Unix(1409469215, 0)}
|
||||||
a := &asset{bytes: bytes, info: info}
|
a := &asset{bytes: bytes, info: info}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
@@ -396,7 +396,7 @@ func conf_license_eclipse_public_license_v1_0() (*asset, error) {
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindata_file_info{name: "conf/license/Eclipse Public License v1.0", size: 11513, mode: os.FileMode(420), modTime: time.Unix(1424928463, 0)}
|
info := bindata_file_info{name: "conf/license/Eclipse Public License v1.0", size: 11513, mode: os.FileMode(420), modTime: time.Unix(1409469215, 0)}
|
||||||
a := &asset{bytes: bytes, info: info}
|
a := &asset{bytes: bytes, info: info}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
@@ -416,7 +416,7 @@ func conf_license_gpl_v2() (*asset, error) {
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindata_file_info{name: "conf/license/GPL v2", size: 18025, mode: os.FileMode(420), modTime: time.Unix(1424928463, 0)}
|
info := bindata_file_info{name: "conf/license/GPL v2", size: 18025, mode: os.FileMode(420), modTime: time.Unix(1398226579, 0)}
|
||||||
a := &asset{bytes: bytes, info: info}
|
a := &asset{bytes: bytes, info: info}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
@@ -436,7 +436,7 @@ func conf_license_gpl_v3() (*asset, error) {
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindata_file_info{name: "conf/license/GPL v3", size: 35120, mode: os.FileMode(420), modTime: time.Unix(1424928463, 0)}
|
info := bindata_file_info{name: "conf/license/GPL v3", size: 35120, mode: os.FileMode(420), modTime: time.Unix(1409469215, 0)}
|
||||||
a := &asset{bytes: bytes, info: info}
|
a := &asset{bytes: bytes, info: info}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
@@ -456,7 +456,7 @@ func conf_license_isc_license() (*asset, error) {
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindata_file_info{name: "conf/license/ISC license", size: 716, mode: os.FileMode(420), modTime: time.Unix(1424928463, 0)}
|
info := bindata_file_info{name: "conf/license/ISC license", size: 716, mode: os.FileMode(420), modTime: time.Unix(1409469215, 0)}
|
||||||
a := &asset{bytes: bytes, info: info}
|
a := &asset{bytes: bytes, info: info}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
@@ -476,7 +476,7 @@ func conf_license_lgpl_v2_1() (*asset, error) {
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindata_file_info{name: "conf/license/LGPL v2.1", size: 26442, mode: os.FileMode(420), modTime: time.Unix(1424928463, 0)}
|
info := bindata_file_info{name: "conf/license/LGPL v2.1", size: 26442, mode: os.FileMode(420), modTime: time.Unix(1409469215, 0)}
|
||||||
a := &asset{bytes: bytes, info: info}
|
a := &asset{bytes: bytes, info: info}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
@@ -496,7 +496,7 @@ func conf_license_lgpl_v3() (*asset, error) {
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindata_file_info{name: "conf/license/LGPL v3", size: 7631, mode: os.FileMode(420), modTime: time.Unix(1424928463, 0)}
|
info := bindata_file_info{name: "conf/license/LGPL v3", size: 7631, mode: os.FileMode(420), modTime: time.Unix(1409469215, 0)}
|
||||||
a := &asset{bytes: bytes, info: info}
|
a := &asset{bytes: bytes, info: info}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
@@ -516,7 +516,7 @@ func conf_license_mit_license() (*asset, error) {
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindata_file_info{name: "conf/license/MIT License", size: 1065, mode: os.FileMode(420), modTime: time.Unix(1424928463, 0)}
|
info := bindata_file_info{name: "conf/license/MIT License", size: 1065, mode: os.FileMode(420), modTime: time.Unix(1398226579, 0)}
|
||||||
a := &asset{bytes: bytes, info: info}
|
a := &asset{bytes: bytes, info: info}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
@@ -536,7 +536,7 @@ func conf_license_mozilla_public_license_version_2_0() (*asset, error) {
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindata_file_info{name: "conf/license/Mozilla Public License Version 2.0", size: 15920, mode: os.FileMode(420), modTime: time.Unix(1424928463, 0)}
|
info := bindata_file_info{name: "conf/license/Mozilla Public License Version 2.0", size: 15920, mode: os.FileMode(420), modTime: time.Unix(1409469215, 0)}
|
||||||
a := &asset{bytes: bytes, info: info}
|
a := &asset{bytes: bytes, info: info}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
@@ -556,7 +556,7 @@ func conf_locale_translators() (*asset, error) {
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindata_file_info{name: "conf/locale/TRANSLATORS", size: 443, mode: os.FileMode(420), modTime: time.Unix(1426831108, 0)}
|
info := bindata_file_info{name: "conf/locale/TRANSLATORS", size: 443, mode: os.FileMode(420), modTime: time.Unix(1427400843, 0)}
|
||||||
a := &asset{bytes: bytes, info: info}
|
a := &asset{bytes: bytes, info: info}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
@@ -576,12 +576,12 @@ func conf_locale_locale_de_de_ini() (*asset, error) {
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindata_file_info{name: "conf/locale/locale_de-DE.ini", size: 33066, mode: os.FileMode(493), modTime: time.Unix(1427079994, 0)}
|
info := bindata_file_info{name: "conf/locale/locale_de-DE.ini", size: 33066, mode: os.FileMode(493), modTime: time.Unix(1427400843, 0)}
|
||||||
a := &asset{bytes: bytes, info: info}
|
a := &asset{bytes: bytes, info: info}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
var _conf_locale_locale_en_us_ini = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\xc4\x7d\xef\x92\xdb\xb8\xae\xe7\x77\x3d\x85\x66\xb6\xb2\xc9\x54\x75\x9c\x9a\x73\xaa\xb6\xb6\xa6\x92\x4c\xf5\x74\x26\x7f\xce\x4d\xa7\xfb\xa6\x3b\xe7\xec\xdd\x54\x4a\x47\xb6\x64\x5b\xb7\x6d\xc9\x47\x92\xdb\xe3\xf3\x69\x5f\x63\x5f\x6f\x9f\x64\x81\x1f\x00\xfe\x91\xe4\x4e\x66\xee\xd6\xde\x2f\xdd\x14\x09\x92\x20\x08\x82\x00\x08\xd2\xf9\x6e\x97\x15\x65\xb7\x48\x5f\xa4\xe7\xe9\x2e\xaf\xea\x4d\xd9\x75\x69\x57\x6e\x96\x4f\xd7\x4d\xd7\x97\x45\xfa\xa6\xea\xe9\xbb\xbd\xaf\x16\x65\x92\xac\x9b\x6d\x49\xa0\x6f\xe9\x5f\x52\xe4\xdd\x7a\xde\xe4\x6d\x41\x19\xaf\x2c\x9d\x94\xbf\xed\x36\x4d\xcb\x40\xbf\x4a\x2a\x59\x97\x9b\x1d\xd7\xa1\x7f\x49\x57\xad\xea\xac\xaa\xe9\xf3\x86\x52\xe9\xbb\x3a\xe9\x9a\x45\x95\x6f\xb2\xa0\x00\x19\x56\xfe\x53\xfa\xa7\xba\x48\x6f\xfa\x72\x97\x3e\xef\xb6\xf9\x66\xf3\x32\xef\x50\xa5\x2f\xd3\x7c\xb1\x68\xf6\x75\xff\xfc\x99\x14\x48\xe3\xcd\xbe\xb7\xd6\xaf\xf6\xbd\xe4\xed\x77\x96\xf5\x69\x97\xb4\xe5\xaa\xa2\x81\xb5\x94\xf5\x51\x93\xc9\xa1\x9c\x77\x55\xcf\x48\xff\x4d\x52\xc9\x7d\xd9\x76\x55\xc3\xf8\xfc\x55\x52\xc9\x2e\x5f\x31\xc0\x35\xfd\x4b\xfa\x72\xbb\xdb\xe4\xa8\x70\xab\xc9\x64\x93\xd7\xab\xbd\xc0\xbc\xd7\x64\x92\xec\x89\x72\x75\x0e\x9a\x7d\xd2\x64\x52\x6e\xf3\x6a\xc3\xf4\x79\xca\x09\x6a\xb7\xeb\x0e\x0d\xa8\x78\xad\x49\xc2\x31\xeb\x8f\xbb\x12\x28\x3e\xbd\xa5\x54\xb2\xc8\x77\xfd\x62\x9d\x53\xce\x85\xa4\x12\x02\xda\x35\x84\x6b\xd3\x1e\x01\x67\x1f\x49\xd3\xae\xf2\xba\xfa\x67\xde\x0b\xfe\x57\xc1\x67\xb2\xad\xda\xb6\xe1\xa1\x5f\x22\x91\xd4\xe5\x21\xe3\x76\x28\xe7\x43\x79\x08\x5b\xe1\x92\x6d\xb5\x6a\x65\x94\x5c\x78\x89\x2f\x6e\x85\xcb\x96\x4d\x7b\xa7\x05\xaf\x39\x39\xa8\x4a\x48\x68\x69\xdc\x7f\x5e\x13\x5d\xb4\xf4\x12\x1f\x11\x40\x97\xe4\xc5\xb6\xaa\xb3\x5d\x5e\x97\x4c\xa3\x73\xfe\x22\xba\xd0\x57\xa2\xd3\x9d\x75\x65\xdf\x57\xf5\xaa\xe3\x62\xc9\x4a\x6f\x34\x2b\x09\xca\x5c\x1e\xe3\xd3\x65\xcb\xb2\x2c\x04\xa3\x2e\x7d\x4d\xe9\x64\xb7\xdf\x6c\x68\xec\xff\xd8\x97\x5d\xcf\xf0\xd7\xf4\x4d\xa3\x90\xef\xa4\xea\x3a\x4a\x50\xf6\x3b\x24\x12\x9a\x80\x7a\x01\x94\x2e\x90\x48\x92\xcf\x5d\x99\xb7\x8b\xf5\x97\x44\xfe\xa3\x47\x4e\xcc\x66\xb3\x93\x53\xc3\xec\xa0\xac\x20\x3d\x58\x07\xc9\xa2\x29\xf8\xe3\x82\xfe\x51\xd3\x55\xdd\xf5\xc4\xd2\x5f\x12\x4d\x30\x98\xa4\x84\x8c\x7d\xd5\x6f\x4a\x9f\x89\xf5\xd1\xf1\x3c\xa4\xaf\xab\xb6\xeb\x9f\xf6\x15\xb1\xdc\xc7\x7d\x9d\xf0\xf8\x88\x9d\xb3\x62\x6e\xab\xfc\x4d\x43\xd4\x41\x76\x4b\xe3\xbb\x3c\xde\xfc\xeb\xfb\xb3\xf4\x9a\x96\xfa\xaa\x2d\x29\x9d\x52\x1b\xf4\x8f\xea\xfc\x79\x96\x50\x2d\x65\xc3\x57\x79\x9f\xcf\xf3\xae\x4c\xc1\x8c\x2c\x19\x20\x05\xba\x3e\x1a\xd2\x14\x2b\x53\x1b\xba\x00\x5c\x1b\x1f\x78\x15\x50\x3e\x0b\x06\x54\xbe\xde\x94\x9c\x4f\x4d\xa5\xef\x3e\x7c\xb8\x7a\xf5\x4b\x5a\xd6\xab\xaa\x2e\xd3\x43\xd5\xaf\xd3\x7d\xbf\xfc\xef\xd9\xaa\xac\xcb\x96\xe4\xc4\xa2\x4a\x89\xf9\x5b\x9a\xe7\x94\x38\x50\xf0\x9f\x25\x5d\xb7\xc9\xb6\x42\xc1\x9b\x9b\xf7\xe9\x25\x53\x71\x97\xf7\x6b\x20\xd2\xaf\x93\xee\x1f\x1b\xa6\x82\xeb\xf0\x76\x5d\xa6\xcb\x8a\x48\x08\xa0\x66\x69\x43\x4e\x0b\xc5\x71\x96\x58\x87\x46\xea\x37\xf2\xed\xd8\x8a\x6b\x31\x2d\x31\xd7\x99\x76\xe6\xa7\x3a\xfd\xd8\x34\xbd\x74\xee\x00\x7c\xff\xe7\x34\x67\x2c\x57\xdb\x72\xdb\xd0\xfa\x72\xec\x52\xd1\x94\x1c\x2a\x2a\x9c\x97\x69\x97\xdf\x13\xc7\xf6\x4d\xda\xaf\xab\x2e\x2d\x68\xba\x16\xdc\x30\x31\xd7\x9e\x24\x9a\x50\x9d\xa6\x58\x28\x6f\x79\xf1\x10\x01\xb5\xdd\xd3\x64\xad\xa9\x31\x96\x97\x2c\xdc\xa9\xc9\x29\x3c\xd3\x9c\x04\x2d\xb5\x83\x51\xd1\xdc\x37\x24\x9d\x58\x7e\xbc\x42\x42\xbf\xc3\xf6\x09\xab\x7c\xb9\x24\xac\x3a\x22\xfa\xdb\x74\xb1\x69\x68\xc6\x3e\x7d\x7c\x4f\x95\xd7\x7d\xbf\xcb\x76\x4d\x0b\x2e\xb9\xbd\xbd\x26\x06\x6b\x7b\x9f\x1b\xcc\x3c\xc3\xd4\xfb\xed\x9c\xbe\x0e\xeb\x8a\x96\x11\x6d\x48\x9b\x6a\x21\xc2\x0b\xa4\xd8\xb0\x88\xae\xd3\xa6\x9e\x25\xbc\x59\xed\x5b\xc8\x85\x00\x8a\xba\xb4\x92\x13\xe8\x31\x0a\xcf\xf8\xcf\x8d\xc7\x12\xc3\xed\x68\x1f\x3b\xac\x4b\xda\xae\x68\xa8\x25\xe4\xf1\x4c\xe4\xb3\x9b\x77\x91\xd2\x34\xed\xd8\x01\xfd\xf4\x3f\xb9\xda\x71\xef\xf9\xe6\x87\xa4\xdb\xd2\xb8\x74\x4d\xdc\x5c\xd2\x68\xb1\x30\xb8\x1a\x4d\x88\xce\xd4\x4d\x59\x17\x94\x50\x99\xaf\x65\xc1\x7a\xd1\x72\xb7\x6c\xea\xa6\xaf\x96\x47\x87\xc5\x07\xfe\xb4\x01\x4f\xe1\x60\xbb\x5a\xb6\x68\xea\x65\xd5\x6e\x19\xf3\x3a\x9f\x53\x65\xdb\xe4\x48\xb6\xa0\xc4\x04\x31\x8d\x51\x3a\xf1\xa0\x97\x3c\xd2\xb0\x2b\x95\xc6\x86\x85\x48\xe3\x91\xd0\x15\xa0\xe1\x36\x67\x82\x7c\x2c\x12\x14\xc5\xb0\x4c\x71\xf3\x30\x52\x7b\xb0\x55\xaa\x34\xcc\x56\x0d\x24\xbc\x49\x3f\x2c\xc3\x9e\xc4\x76\xb6\xaa\xfa\x6c\xc9\xb4\xe5\x36\x5f\x73\x5d\x5e\x3f\x54\x92\x3e\xa6\xa2\xc7\xe9\xa2\xd9\xd2\x0e\x54\xfc\x94\x3e\xba\x57\x99\xf0\x67\x26\x42\x96\xdf\x13\x2c\x48\xf0\x22\xfd\xb7\x66\xdf\xd2\x8a\x14\x91\x64\x6a\x40\xd1\xd0\xca\x24\xc8\xb4\xdb\xef\xc0\xd7\x2a\x30\xce\xd2\x9d\x00\x16\xcd\xa1\xde\x34\x39\x2d\x58\x5a\x77\xcd\x92\x08\xc8\x4a\xcc\xbc\xaa\x73\x5a\x63\xd6\xca\xb2\x6d\xb6\xe9\xa3\xee\x2c\xfd\x70\x75\x0b\xc0\x55\x33\xdf\x57\x9b\xc2\x00\x66\x34\xc2\xfb\x7c\x53\x15\x2c\xaf\x75\x2b\x0b\x05\xa7\x65\x55\x82\xcb\xa2\x69\x59\x28\x60\x34\x56\xfLine truncated
|
var _conf_locale_locale_en_us_ini = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\xc4\x7d\xdd\x92\xdb\x38\xb2\xe6\x3d\x9f\x82\xdd\x1b\x5e\xbb\x23\xca\x72\xcc\x4c\xc4\xc6\x46\x87\xed\x8e\xea\x72\xfb\x67\x8e\xcb\x55\xc7\x55\x9e\xd9\xb3\x0e\x07\x87\x12\x29\x89\xa7\x24\x52\x43\x52\xa5\xd6\x5c\xed\x6b\xec\xeb\xed\x93\x6c\x7e\xf9\x83\x1f\x92\x2a\xdb\x73\x36\xf6\xdc\x54\x81\x40\x02\x48\x24\x12\x89\xcc\x44\x02\xca\x77\xbb\xac\x28\xbb\x45\xfa\x22\x3d\x4f\x77\x79\x55\x6f\xca\xae\x4b\xbb\x72\xb3\x7c\xba\x6e\xba\xbe\x2c\xd2\x37\x55\x4f\xdf\xed\x7d\xb5\x28\x93\x64\xdd\x6c\x4b\x02\x7d\x4b\xff\x92\x22\xef\xd6\xf3\x26\x6f\x0b\xca\x78\x65\xe9\xa4\xfc\x7d\xb7\x69\x5a\x00\xfd\x26\xa9\x64\x5d\x6e\x76\xa8\x43\xff\x92\xae\x5a\xd5\x59\x55\xd3\xe7\x0d\xa5\xd2\x77\x75\xd2\x35\x8b\x2a\xdf\x64\x41\x01\x67\x58\xf9\xcf\xe9\x1f\xeb\x22\xbd\xe9\xcb\x5d\xfa\xbc\xdb\xe6\x9b\xcd\xcb\xbc\xe3\x2a\x7d\x99\xe6\x8b\x45\xb3\xaf\xfb\xe7\xcf\xa4\x40\x1a\x6f\xf6\xbd\xb5\x7e\xb5\xef\x25\x6f\xbf\xb3\xac\x4f\xbb\xa4\x2d\x57\x15\x0d\xac\xa5\xac\x8f\x9a\x4c\x0e\xe5\xbc\xab\x7a\x20\xfd\x57\x49\x25\xf7\x65\xdb\x55\x0d\xf0\xf9\x8b\xa4\x92\x5d\xbe\x02\xc0\x35\xfd\x4b\xfa\x72\xbb\xdb\xe4\x5c\xe1\x56\x93\xc9\x26\xaf\x57\x7b\x81\x79\xaf\xc9\x24\xd9\x13\xe5\xea\x9c\x69\xf6\x49\x93\x49\xb9\xcd\xab\x0d\xe8\xf3\x14\x09\x6a\xb7\xeb\x0e\x0d\x53\xf1\x5a\x93\x84\x63\xd6\x1f\x77\x25\xa3\xf8\xf4\x96\x52\xc9\x22\xdf\xf5\x8b\x75\x4e\x39\x17\x92\x4a\x08\x68\xd7\x10\xae\x4d\x7b\x64\x38\xfb\x48\x9a\x76\x95\xd7\xd5\x3f\xf2\x5e\xf0\xbf\x0a\x3e\x93\x6d\xd5\xb6\x0d\x86\x7e\xc9\x89\xa4\x2e\x0f\x19\xda\xa1\x9c\x0f\xe5\x21\x6c\x05\x25\xdb\x6a\xd5\xca\x28\x51\x78\xc9\x5f\x68\x05\x65\xcb\xa6\xbd\xd3\x82\xd7\x48\x0e\xaa\x12\x12\x5a\x1a\xf7\x9f\xd7\x44\x17\x2d\xbd\xe4\x8f\x08\xa0\x4b\xf2\x62\x5b\xd5\xd9\x2e\xaf\x4b\xd0\xe8\x1c\x5f\x44\x17\xfa\x4a\x74\xba\xb3\xae\xec\xfb\xaa\x5e\x75\x28\x96\xac\xf4\x46\xb3\x92\xa0\xcc\xe5\x01\x9f\x2e\x5b\x96\x65\x21\x18\x75\xe9\x6b\x4a\x27\xbb\xfd\x66\x43\x63\xff\xfb\xbe\xec\x7a\xc0\x5f\xd3\x37\x8d\x42\xbe\x93\xaa\xeb\x28\x41\xd9\xef\x38\x91\xd0\x04\xd4\x0b\x46\xe9\x82\x13\x49\xf2\xb9\x2b\xf3\x76\xb1\xfe\x92\xc8\x7f\xee\x11\x89\xd9\x6c\x76\x72\x6a\xc0\x0e\xca\x0a\xd2\x83\x75\x90\x2c\x9a\x02\x1f\x17\xf4\x8f\x9a\xae\xea\xae\x27\x96\xfe\x92\x68\x02\x60\x92\x12\x32\xf6\x55\xbf\x29\x7d\x26\xaf\x8f\x0e\xf3\x90\xbe\xae\xda\xae\x7f\xda\x57\xc4\x72\x1f\xf7\x75\x82\xf1\x11\x3b\x67\xc5\xdc\x56\xf9\x9b\x86\xa8\xc3\xd9\x2d\x8d\xef\xf2\x78\xf3\xaf\xef\xcf\xd2\x6b\x5a\xea\xab\xb6\xa4\x74\x4a\x6d\xd0\x3f\xaa\xf3\xa7\x59\x42\xb5\x94\x0d\x5f\xe5\x7d\x3e\xcf\xbb\x32\x65\x66\x84\x64\x60\x29\xd0\xf5\xd1\x90\xa6\x58\x99\xda\xd0\x05\xe0\xda\xf8\x80\x55\x40\xf9\x10\x0c\x5c\xf9\x7a\x53\x22\x9f\x9a\x4a\xdf\x7d\xf8\x70\xf5\xea\xd7\xb4\xac\x57\x55\x5d\xa6\x87\xaa\x5f\xa7\xfb\x7e\xf9\xdf\xb3\x55\x59\x97\x2d\xc9\x89\x45\x95\x12\xf3\xb7\x34\xcf\x29\x71\xa0\xe0\x3f\x4b\xba\x6e\x93\x6d\x85\x82\x37\x37\xef\xd3\x4b\x50\x71\x97\xf7\x6b\x46\xa4\x5f\x27\xdd\xdf\x37\xa0\x82\xeb\xf0\x76\x5d\xa6\xcb\x8a\x48\xc8\x40\xcd\xd2\x86\x9c\x16\x8a\xe3\x2c\xb1\x0e\x8d\xd4\x6f\xe4\xdb\xb1\x15\x6a\x81\x96\x3c\xd7\x99\x76\xe6\xa7\x3a\xfd\xd8\x34\xbd\x74\xee\x00\x7c\xff\xe7\x34\x67\x90\xab\x6d\xb9\x6d\x68\x7d\x39\x76\xa9\x68\x4a\x0e\x15\x15\xce\xcb\xb4\xcb\xef\x89\x63\xfb\x26\xed\xd7\x55\x97\x16\x34\x5d\x0b\x34\x4c\xcc\xb5\x27\x89\x26\x54\xa7\x29\x16\xca\x5b\x5e\x3c\x44\x86\xda\xee\x69\xb2\xd6\xd4\x18\xe4\x25\x84\x3b\x35\x39\x85\x67\x9a\x93\xa0\xa5\x76\x78\x54\x34\xf7\x0d\x49\x27\xc8\x8f\x57\x9c\xd0\xef\xb0\x7d\xc2\x2a\x5f\x2e\x09\xab\x8e\x88\xfe\x36\x5d\x6c\x1a\x9a\xb1\x4f\x1f\xdf\x53\xe5\x75\xdf\xef\xb2\x5d\xd3\x32\x97\xdc\xde\x5e\x13\x83\xb5\xbd\xcf\x0d\x66\x1e\x30\xf5\x7e\x3b\xa7\xaf\xc3\xba\xa2\x65\x44\x1b\xd2\xa6\x5a\x88\xf0\x62\x52\x6c\x20\xa2\xeb\xb4\xa9\x67\x09\x36\xab\x7d\xcb\x72\x21\x80\xa2\x2e\xad\xe4\x04\x7a\x40\xe1\x19\xfe\xdc\x78\x2c\x79\xb8\x1d\xed\x63\x87\x75\x49\xdb\x15\x0d\xb5\x64\x79\x3c\x13\xf9\xec\xe6\x5d\xa4\x34\x4d\x3b\xef\x80\x7e\xfa\x9f\x5c\xed\xd0\x7b\xbe\xf9\x29\xe9\xb6\x34\x2e\x5d\x13\x37\x97\x34\x5a\x5e\x18\xa8\x46\x13\xa2\x33\x75\x53\xd6\x05\x25\x54\xe6\x6b\x59\xb0\x5e\xb4\xdc\x2d\x9b\xba\xe9\xab\xe5\xd1\x61\xf1\x01\x9f\x36\xe0\x29\x1c\x6c\x57\xcb\x16\x4d\xbd\xac\xda\x2d\x30\xaf\xf3\x39\x55\xb6\x4d\x8e\x64\x0b\x97\x98\x20\xa6\x31\x4a\x27\x1e\xf4\x12\x23\x0d\xbb\x52\x69\x6c\x58\x88\x34\x1e\x09\x5d\x01\x1a\x6e\x73\x26\xc8\xc7\x22\x41\x51\x0c\xcb\x14\x37\x0f\x23\xb5\x07\x5b\xa5\x4a\xc3\x6c\xd5\xb0\x84\x37\xe9\xc7\xcb\xb0\x27\xb1\x9d\xad\xaa\x3e\x5b\x82\xb6\x68\xf3\x35\xea\x62\xfd\x50\x49\xfa\x98\x8a\x1e\xa7\x8b\x66\x4b\x3b\x50\xf1\x73\xfa\xe8\x5e\x65\xc2\x9f\x40\x84\x2c\xbf\x27\x58\x26\xc1\x8b\xf4\xdf\x9a\x7d\x4b\x2b\x52\x44\x92\xa9\x01\x45\x43\x2b\x93\x20\xd3\x6e\xbf\x63\xbe\x56\x81\x71\x96\xee\x04\xb0\x68\x0e\xf5\xa6\xc9\x69\xc1\xd2\xba\x6b\x96\x44\x40\x28\x31\xf3\xaa\xce\x69\x8d\x59\x2b\xcb\xb6\xd9\xa6\x8f\xba\xb3\xf4\xc3\xd5\x2d\x03\xae\x9a\xf9\xbe\xda\x14\x06\x30\xa3\x11\xde\xe7\x9b\xaa\x80\xbc\xd6\xad\x2c\x14\x9c\x96\x55\x09\x2e\x8b\xa6\x85\x50\xe0\xd1\x58\xc5\x13\xd2\xaLine truncated
|
||||||
|
|
||||||
func conf_locale_locale_en_us_ini_bytes() ([]byte, error) {
|
func conf_locale_locale_en_us_ini_bytes() ([]byte, error) {
|
||||||
return bindata_read(
|
return bindata_read(
|
||||||
@@ -596,7 +596,7 @@ func conf_locale_locale_en_us_ini() (*asset, error) {
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindata_file_info{name: "conf/locale/locale_en-US.ini", size: 31507, mode: os.FileMode(420), modTime: time.Unix(1427066374, 0)}
|
info := bindata_file_info{name: "conf/locale/locale_en-US.ini", size: 31702, mode: os.FileMode(420), modTime: time.Unix(1427404087, 0)}
|
||||||
a := &asset{bytes: bytes, info: info}
|
a := &asset{bytes: bytes, info: info}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
@@ -616,7 +616,7 @@ func conf_locale_locale_es_es_ini() (*asset, error) {
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindata_file_info{name: "conf/locale/locale_es-ES.ini", size: 34685, mode: os.FileMode(493), modTime: time.Unix(1427079994, 0)}
|
info := bindata_file_info{name: "conf/locale/locale_es-ES.ini", size: 34685, mode: os.FileMode(493), modTime: time.Unix(1427400843, 0)}
|
||||||
a := &asset{bytes: bytes, info: info}
|
a := &asset{bytes: bytes, info: info}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
@@ -636,7 +636,7 @@ func conf_locale_locale_fr_fr_ini() (*asset, error) {
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindata_file_info{name: "conf/locale/locale_fr-FR.ini", size: 34129, mode: os.FileMode(493), modTime: time.Unix(1427079994, 0)}
|
info := bindata_file_info{name: "conf/locale/locale_fr-FR.ini", size: 34129, mode: os.FileMode(493), modTime: time.Unix(1427400843, 0)}
|
||||||
a := &asset{bytes: bytes, info: info}
|
a := &asset{bytes: bytes, info: info}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
@@ -656,7 +656,7 @@ func conf_locale_locale_ja_jp_ini() (*asset, error) {
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindata_file_info{name: "conf/locale/locale_ja-JP.ini", size: 38282, mode: os.FileMode(493), modTime: time.Unix(1427079994, 0)}
|
info := bindata_file_info{name: "conf/locale/locale_ja-JP.ini", size: 38282, mode: os.FileMode(493), modTime: time.Unix(1427400843, 0)}
|
||||||
a := &asset{bytes: bytes, info: info}
|
a := &asset{bytes: bytes, info: info}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
@@ -676,7 +676,7 @@ func conf_locale_locale_lv_lv_ini() (*asset, error) {
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindata_file_info{name: "conf/locale/locale_lv-LV.ini", size: 34671, mode: os.FileMode(493), modTime: time.Unix(1427079994, 0)}
|
info := bindata_file_info{name: "conf/locale/locale_lv-LV.ini", size: 34671, mode: os.FileMode(493), modTime: time.Unix(1427400843, 0)}
|
||||||
a := &asset{bytes: bytes, info: info}
|
a := &asset{bytes: bytes, info: info}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
@@ -696,7 +696,7 @@ func conf_locale_locale_nl_nl_ini() (*asset, error) {
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindata_file_info{name: "conf/locale/locale_nl-NL.ini", size: 32429, mode: os.FileMode(493), modTime: time.Unix(1427079994, 0)}
|
info := bindata_file_info{name: "conf/locale/locale_nl-NL.ini", size: 32429, mode: os.FileMode(493), modTime: time.Unix(1427400843, 0)}
|
||||||
a := &asset{bytes: bytes, info: info}
|
a := &asset{bytes: bytes, info: info}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
@@ -716,7 +716,7 @@ func conf_locale_locale_pl_pl_ini() (*asset, error) {
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindata_file_info{name: "conf/locale/locale_pl-PL.ini", size: 32928, mode: os.FileMode(493), modTime: time.Unix(1427079994, 0)}
|
info := bindata_file_info{name: "conf/locale/locale_pl-PL.ini", size: 32928, mode: os.FileMode(493), modTime: time.Unix(1427400843, 0)}
|
||||||
a := &asset{bytes: bytes, info: info}
|
a := &asset{bytes: bytes, info: info}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
@@ -736,7 +736,7 @@ func conf_locale_locale_pt_br_ini() (*asset, error) {
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindata_file_info{name: "conf/locale/locale_pt-BR.ini", size: 33298, mode: os.FileMode(493), modTime: time.Unix(1427079994, 0)}
|
info := bindata_file_info{name: "conf/locale/locale_pt-BR.ini", size: 33298, mode: os.FileMode(493), modTime: time.Unix(1427400843, 0)}
|
||||||
a := &asset{bytes: bytes, info: info}
|
a := &asset{bytes: bytes, info: info}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
@@ -756,7 +756,7 @@ func conf_locale_locale_ru_ru_ini() (*asset, error) {
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindata_file_info{name: "conf/locale/locale_ru-RU.ini", size: 45970, mode: os.FileMode(493), modTime: time.Unix(1427079994, 0)}
|
info := bindata_file_info{name: "conf/locale/locale_ru-RU.ini", size: 45970, mode: os.FileMode(493), modTime: time.Unix(1427400843, 0)}
|
||||||
a := &asset{bytes: bytes, info: info}
|
a := &asset{bytes: bytes, info: info}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
@@ -776,7 +776,7 @@ func conf_locale_locale_zh_cn_ini() (*asset, error) {
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindata_file_info{name: "conf/locale/locale_zh-CN.ini", size: 30612, mode: os.FileMode(493), modTime: time.Unix(1427079994, 0)}
|
info := bindata_file_info{name: "conf/locale/locale_zh-CN.ini", size: 30612, mode: os.FileMode(493), modTime: time.Unix(1427400843, 0)}
|
||||||
a := &asset{bytes: bytes, info: info}
|
a := &asset{bytes: bytes, info: info}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
@@ -796,7 +796,7 @@ func conf_locale_locale_zh_hk_ini() (*asset, error) {
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindata_file_info{name: "conf/locale/locale_zh-HK.ini", size: 30792, mode: os.FileMode(493), modTime: time.Unix(1427079994, 0)}
|
info := bindata_file_info{name: "conf/locale/locale_zh-HK.ini", size: 30792, mode: os.FileMode(493), modTime: time.Unix(1427400843, 0)}
|
||||||
a := &asset{bytes: bytes, info: info}
|
a := &asset{bytes: bytes, info: info}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -106,16 +106,19 @@ func NewUserPost(ctx *middleware.Context, form auth.RegisterForm) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if err := models.CreateUser(u); err != nil {
|
if err := models.CreateUser(u); err != nil {
|
||||||
switch err {
|
switch {
|
||||||
case models.ErrUserAlreadyExist:
|
case models.IsErrUserAlreadyExist(err):
|
||||||
ctx.Data["Err_UserName"] = true
|
ctx.Data["Err_UserName"] = true
|
||||||
ctx.RenderWithErr(ctx.Tr("form.username_been_taken"), USER_NEW, &form)
|
ctx.RenderWithErr(ctx.Tr("form.username_been_taken"), USER_NEW, &form)
|
||||||
case models.ErrEmailAlreadyUsed:
|
case models.IsErrEmailAlreadyUsed(err):
|
||||||
ctx.Data["Err_Email"] = true
|
ctx.Data["Err_Email"] = true
|
||||||
ctx.RenderWithErr(ctx.Tr("form.email_been_used"), USER_NEW, &form)
|
ctx.RenderWithErr(ctx.Tr("form.email_been_used"), USER_NEW, &form)
|
||||||
case models.ErrUserNameIllegal:
|
case models.IsErrNameReserved(err):
|
||||||
ctx.Data["Err_UserName"] = true
|
ctx.Data["Err_UserName"] = true
|
||||||
ctx.RenderWithErr(ctx.Tr("form.illegal_username"), USER_NEW, &form)
|
ctx.RenderWithErr(ctx.Tr("user.form.name_reserved", err.(models.ErrNameReserved).Name), USER_NEW, &form)
|
||||||
|
case models.IsErrNamePatternNotAllowed(err):
|
||||||
|
ctx.Data["Err_UserName"] = true
|
||||||
|
ctx.RenderWithErr(ctx.Tr("user.form.name_pattern_not_allowed", err.(models.ErrNamePatternNotAllowed).Pattern), USER_NEW, &form)
|
||||||
default:
|
default:
|
||||||
ctx.Handle(500, "CreateUser", err)
|
ctx.Handle(500, "CreateUser", err)
|
||||||
}
|
}
|
||||||
@@ -195,7 +198,7 @@ func EditUserPost(ctx *middleware.Context, form auth.AdminEditUserForm) {
|
|||||||
u.AllowGitHook = form.AllowGitHook
|
u.AllowGitHook = form.AllowGitHook
|
||||||
|
|
||||||
if err := models.UpdateUser(u); err != nil {
|
if err := models.UpdateUser(u); err != nil {
|
||||||
if err == models.ErrEmailAlreadyUsed {
|
if models.IsErrEmailAlreadyUsed(err) {
|
||||||
ctx.Data["Err_Email"] = true
|
ctx.Data["Err_Email"] = true
|
||||||
ctx.RenderWithErr(ctx.Tr("form.email_been_used"), USER_EDIT, &form)
|
ctx.RenderWithErr(ctx.Tr("form.email_been_used"), USER_EDIT, &form)
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -105,7 +105,8 @@ func createRepo(ctx *middleware.Context, owner *models.User, opt api.CreateRepoO
|
|||||||
opt.Gitignore, opt.License, opt.Private, false, opt.AutoInit)
|
opt.Gitignore, opt.License, opt.Private, false, opt.AutoInit)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if err == models.ErrRepoAlreadyExist ||
|
if err == models.ErrRepoAlreadyExist ||
|
||||||
err == models.ErrRepoNameIllegal {
|
models.IsErrNameReserved(err) ||
|
||||||
|
models.IsErrNamePatternNotAllowed(err) {
|
||||||
ctx.JSON(422, &base.ApiJsonErr{err.Error(), base.DOC_URL})
|
ctx.JSON(422, &base.ApiJsonErr{err.Error(), base.DOC_URL})
|
||||||
} else {
|
} else {
|
||||||
log.Error(4, "CreateRepository: %v", err)
|
log.Error(4, "CreateRepository: %v", err)
|
||||||
|
|||||||
+1
-1
@@ -239,7 +239,7 @@ func InstallPost(ctx *middleware.Context, form auth.InstallForm) {
|
|||||||
// Create admin account.
|
// Create admin account.
|
||||||
if err := models.CreateUser(&models.User{Name: form.AdminName, Email: form.AdminEmail, Passwd: form.AdminPasswd,
|
if err := models.CreateUser(&models.User{Name: form.AdminName, Email: form.AdminEmail, Passwd: form.AdminPasswd,
|
||||||
IsAdmin: true, IsActive: true}); err != nil {
|
IsAdmin: true, IsActive: true}); err != nil {
|
||||||
if err != models.ErrUserAlreadyExist {
|
if !models.IsErrUserAlreadyExist(err) {
|
||||||
setting.InstallLock = false
|
setting.InstallLock = false
|
||||||
ctx.Data["Err_AdminName"] = true
|
ctx.Data["Err_AdminName"] = true
|
||||||
ctx.Data["Err_AdminEmail"] = true
|
ctx.Data["Err_AdminEmail"] = true
|
||||||
|
|||||||
+10
-7
@@ -65,19 +65,22 @@ func CreatePost(ctx *middleware.Context, form auth.CreateOrgForm) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
var err error
|
var err error
|
||||||
if org, err = models.CreateOrganization(org, ctx.User); err != nil {
|
if err = models.CreateOrganization(org, ctx.User); err != nil {
|
||||||
switch err {
|
switch {
|
||||||
case models.ErrUserAlreadyExist:
|
case models.IsErrUserAlreadyExist(err):
|
||||||
ctx.Data["Err_OrgName"] = true
|
ctx.Data["Err_OrgName"] = true
|
||||||
ctx.RenderWithErr(ctx.Tr("form.org_name_been_taken"), CREATE, &form)
|
ctx.RenderWithErr(ctx.Tr("form.org_name_been_taken"), CREATE, &form)
|
||||||
case models.ErrEmailAlreadyUsed:
|
case models.IsErrEmailAlreadyUsed(err):
|
||||||
ctx.Data["Err_Email"] = true
|
ctx.Data["Err_Email"] = true
|
||||||
ctx.RenderWithErr(ctx.Tr("form.email_been_used"), CREATE, &form)
|
ctx.RenderWithErr(ctx.Tr("form.email_been_used"), CREATE, &form)
|
||||||
case models.ErrUserNameIllegal:
|
case models.IsErrNameReserved(err):
|
||||||
ctx.Data["Err_OrgName"] = true
|
ctx.Data["Err_OrgName"] = true
|
||||||
ctx.RenderWithErr(ctx.Tr("form.illegal_org_name"), CREATE, &form)
|
ctx.RenderWithErr(ctx.Tr("org.form.name_reserved", err.(models.ErrNameReserved).Name), CREATE, &form)
|
||||||
|
case models.IsErrNamePatternNotAllowed(err):
|
||||||
|
ctx.Data["Err_OrgName"] = true
|
||||||
|
ctx.RenderWithErr(ctx.Tr("org.form.name_pattern_not_allowed", err.(models.ErrNamePatternNotAllowed).Pattern), CREATE, &form)
|
||||||
default:
|
default:
|
||||||
ctx.Handle(500, "CreateUser", err)
|
ctx.Handle(500, "CreateOrganization", err)
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -68,7 +68,7 @@ func SettingsPost(ctx *middleware.Context, form auth.UpdateOrgSettingForm) {
|
|||||||
org.Avatar = base.EncodeMd5(form.Avatar)
|
org.Avatar = base.EncodeMd5(form.Avatar)
|
||||||
org.AvatarEmail = form.Avatar
|
org.AvatarEmail = form.Avatar
|
||||||
if err := models.UpdateUser(org); err != nil {
|
if err := models.UpdateUser(org); err != nil {
|
||||||
if err == models.ErrEmailAlreadyUsed {
|
if models.IsErrEmailAlreadyUsed(err) {
|
||||||
ctx.Data["Err_Email"] = true
|
ctx.Data["Err_Email"] = true
|
||||||
ctx.RenderWithErr(ctx.Tr("form.email_been_used"), SETTINGS_OPTIONS, &form)
|
ctx.RenderWithErr(ctx.Tr("form.email_been_used"), SETTINGS_OPTIONS, &form)
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
+43
-27
@@ -110,14 +110,6 @@ func CreatePost(ctx *middleware.Context, form auth.CreateRepoForm) {
|
|||||||
log.Trace("Repository created: %s/%s", ctxUser.Name, repo.Name)
|
log.Trace("Repository created: %s/%s", ctxUser.Name, repo.Name)
|
||||||
ctx.Redirect(setting.AppSubUrl + "/" + ctxUser.Name + "/" + repo.Name)
|
ctx.Redirect(setting.AppSubUrl + "/" + ctxUser.Name + "/" + repo.Name)
|
||||||
return
|
return
|
||||||
} else if err == models.ErrRepoAlreadyExist {
|
|
||||||
ctx.Data["Err_RepoName"] = true
|
|
||||||
ctx.RenderWithErr(ctx.Tr("form.repo_name_been_taken"), CREATE, &form)
|
|
||||||
return
|
|
||||||
} else if err == models.ErrRepoNameIllegal {
|
|
||||||
ctx.Data["Err_RepoName"] = true
|
|
||||||
ctx.RenderWithErr(ctx.Tr("form.illegal_repo_name"), CREATE, &form)
|
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if repo != nil {
|
if repo != nil {
|
||||||
@@ -125,7 +117,20 @@ func CreatePost(ctx *middleware.Context, form auth.CreateRepoForm) {
|
|||||||
log.Error(4, "DeleteRepository: %v", errDelete)
|
log.Error(4, "DeleteRepository: %v", errDelete)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
ctx.Handle(500, "CreatePost", err)
|
|
||||||
|
switch {
|
||||||
|
case err == models.ErrRepoAlreadyExist:
|
||||||
|
ctx.Data["Err_RepoName"] = true
|
||||||
|
ctx.RenderWithErr(ctx.Tr("form.repo_name_been_taken"), CREATE, &form)
|
||||||
|
case models.IsErrNameReserved(err):
|
||||||
|
ctx.Data["Err_RepoName"] = true
|
||||||
|
ctx.RenderWithErr(ctx.Tr("repo.form.name_reserved", err.(models.ErrNameReserved).Name), CREATE, &form)
|
||||||
|
case models.IsErrNamePatternNotAllowed(err):
|
||||||
|
ctx.Data["Err_RepoName"] = true
|
||||||
|
ctx.RenderWithErr(ctx.Tr("repo.form.name_pattern_not_allowed", err.(models.ErrNamePatternNotAllowed).Pattern), CREATE, &form)
|
||||||
|
default:
|
||||||
|
ctx.Handle(500, "CreatePost", err)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func Migrate(ctx *middleware.Context) {
|
func Migrate(ctx *middleware.Context) {
|
||||||
@@ -209,14 +214,6 @@ func MigratePost(ctx *middleware.Context, form auth.MigrateRepoForm) {
|
|||||||
log.Trace("Repository migrated: %s/%s", ctxUser.Name, form.RepoName)
|
log.Trace("Repository migrated: %s/%s", ctxUser.Name, form.RepoName)
|
||||||
ctx.Redirect(setting.AppSubUrl + "/" + ctxUser.Name + "/" + form.RepoName)
|
ctx.Redirect(setting.AppSubUrl + "/" + ctxUser.Name + "/" + form.RepoName)
|
||||||
return
|
return
|
||||||
} else if err == models.ErrRepoAlreadyExist {
|
|
||||||
ctx.Data["Err_RepoName"] = true
|
|
||||||
ctx.RenderWithErr(ctx.Tr("form.repo_name_been_taken"), MIGRATE, &form)
|
|
||||||
return
|
|
||||||
} else if err == models.ErrRepoNameIllegal {
|
|
||||||
ctx.Data["Err_RepoName"] = true
|
|
||||||
ctx.RenderWithErr(ctx.Tr("form.illegal_repo_name"), MIGRATE, &form)
|
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if repo != nil {
|
if repo != nil {
|
||||||
@@ -230,7 +227,20 @@ func MigratePost(ctx *middleware.Context, form auth.MigrateRepoForm) {
|
|||||||
ctx.RenderWithErr(ctx.Tr("form.auth_failed", err), MIGRATE, &form)
|
ctx.RenderWithErr(ctx.Tr("form.auth_failed", err), MIGRATE, &form)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
ctx.Handle(500, "MigratePost", err)
|
|
||||||
|
switch {
|
||||||
|
case err == models.ErrRepoAlreadyExist:
|
||||||
|
ctx.Data["Err_RepoName"] = true
|
||||||
|
ctx.RenderWithErr(ctx.Tr("form.repo_name_been_taken"), MIGRATE, &form)
|
||||||
|
case models.IsErrNameReserved(err):
|
||||||
|
ctx.Data["Err_RepoName"] = true
|
||||||
|
ctx.RenderWithErr(ctx.Tr("repo.form.name_reserved", err.(models.ErrNameReserved).Name), MIGRATE, &form)
|
||||||
|
case models.IsErrNamePatternNotAllowed(err):
|
||||||
|
ctx.Data["Err_RepoName"] = true
|
||||||
|
ctx.RenderWithErr(ctx.Tr("repo.form.name_pattern_not_allowed", err.(models.ErrNamePatternNotAllowed).Pattern), MIGRATE, &form)
|
||||||
|
default:
|
||||||
|
ctx.Handle(500, "MigratePost", err)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func getForkRepository(ctx *middleware.Context) (*models.Repository, error) {
|
func getForkRepository(ctx *middleware.Context) (*models.Repository, error) {
|
||||||
@@ -323,14 +333,6 @@ func ForkPost(ctx *middleware.Context, form auth.CreateRepoForm) {
|
|||||||
log.Trace("Repository forked: %s/%s", ctxUser.Name, repo.Name)
|
log.Trace("Repository forked: %s/%s", ctxUser.Name, repo.Name)
|
||||||
ctx.Redirect(setting.AppSubUrl + "/" + ctxUser.Name + "/" + repo.Name)
|
ctx.Redirect(setting.AppSubUrl + "/" + ctxUser.Name + "/" + repo.Name)
|
||||||
return
|
return
|
||||||
} else if err == models.ErrRepoAlreadyExist {
|
|
||||||
ctx.Data["Err_RepoName"] = true
|
|
||||||
ctx.RenderWithErr(ctx.Tr("form.repo_name_been_taken"), FORK, &form)
|
|
||||||
return
|
|
||||||
} else if err == models.ErrRepoNameIllegal {
|
|
||||||
ctx.Data["Err_RepoName"] = true
|
|
||||||
ctx.RenderWithErr(ctx.Tr("form.illegal_repo_name"), CREATE, &form)
|
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if repo != nil {
|
if repo != nil {
|
||||||
@@ -338,7 +340,21 @@ func ForkPost(ctx *middleware.Context, form auth.CreateRepoForm) {
|
|||||||
log.Error(4, "DeleteRepository: %v", errDelete)
|
log.Error(4, "DeleteRepository: %v", errDelete)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
ctx.Handle(500, "ForkPost", err)
|
|
||||||
|
// FIXME: merge this with other 2 error handling in to one.
|
||||||
|
switch {
|
||||||
|
case err == models.ErrRepoAlreadyExist:
|
||||||
|
ctx.Data["Err_RepoName"] = true
|
||||||
|
ctx.RenderWithErr(ctx.Tr("form.repo_name_been_taken"), FORK, &form)
|
||||||
|
case models.IsErrNameReserved(err):
|
||||||
|
ctx.Data["Err_RepoName"] = true
|
||||||
|
ctx.RenderWithErr(ctx.Tr("repo.form.name_reserved", err.(models.ErrNameReserved).Name), FORK, &form)
|
||||||
|
case models.IsErrNamePatternNotAllowed(err):
|
||||||
|
ctx.Data["Err_RepoName"] = true
|
||||||
|
ctx.RenderWithErr(ctx.Tr("repo.form.name_pattern_not_allowed", err.(models.ErrNamePatternNotAllowed).Pattern), FORK, &form)
|
||||||
|
default:
|
||||||
|
ctx.Handle(500, "ForkPost", err)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func Action(ctx *middleware.Context) {
|
func Action(ctx *middleware.Context) {
|
||||||
|
|||||||
+11
-8
@@ -53,15 +53,18 @@ func SettingsPost(ctx *middleware.Context, form auth.RepoSettingForm) {
|
|||||||
newRepoName := form.RepoName
|
newRepoName := form.RepoName
|
||||||
// Check if repository name has been changed.
|
// Check if repository name has been changed.
|
||||||
if ctx.Repo.Repository.Name != newRepoName {
|
if ctx.Repo.Repository.Name != newRepoName {
|
||||||
if models.IsRepositoryExist(ctx.Repo.Owner, newRepoName) {
|
if err := models.ChangeRepositoryName(ctx.Repo.Owner, ctx.Repo.Repository.Name, newRepoName); err != nil {
|
||||||
ctx.Data["Err_RepoName"] = true
|
switch {
|
||||||
ctx.RenderWithErr(ctx.Tr("form.repo_name_been_taken"), SETTINGS_OPTIONS, nil)
|
case err == models.ErrRepoAlreadyExist:
|
||||||
return
|
|
||||||
} else if err := models.ChangeRepositoryName(ctx.Repo.Owner.Name, ctx.Repo.Repository.Name, newRepoName); err != nil {
|
|
||||||
if err == models.ErrRepoNameIllegal {
|
|
||||||
ctx.Data["Err_RepoName"] = true
|
ctx.Data["Err_RepoName"] = true
|
||||||
ctx.RenderWithErr(ctx.Tr("form.illegal_repo_name"), SETTINGS_OPTIONS, nil)
|
ctx.RenderWithErr(ctx.Tr("form.repo_name_been_taken"), SETTINGS_OPTIONS, &form)
|
||||||
} else {
|
case models.IsErrNameReserved(err):
|
||||||
|
ctx.Data["Err_RepoName"] = true
|
||||||
|
ctx.RenderWithErr(ctx.Tr("repo.form.name_reserved", err.(models.ErrNameReserved).Name), SETTINGS_OPTIONS, &form)
|
||||||
|
case models.IsErrNamePatternNotAllowed(err):
|
||||||
|
ctx.Data["Err_RepoName"] = true
|
||||||
|
ctx.RenderWithErr(ctx.Tr("repo.form.name_pattern_not_allowed", err.(models.ErrNamePatternNotAllowed).Pattern), SETTINGS_OPTIONS, &form)
|
||||||
|
default:
|
||||||
ctx.Handle(500, "ChangeRepositoryName", err)
|
ctx.Handle(500, "ChangeRepositoryName", err)
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
|
|||||||
@@ -249,16 +249,19 @@ func SignUpPost(ctx *middleware.Context, cpt *captcha.Captcha, form auth.Registe
|
|||||||
}
|
}
|
||||||
|
|
||||||
if err := models.CreateUser(u); err != nil {
|
if err := models.CreateUser(u); err != nil {
|
||||||
switch err {
|
switch {
|
||||||
case models.ErrUserAlreadyExist:
|
case models.IsErrUserAlreadyExist(err):
|
||||||
ctx.Data["Err_UserName"] = true
|
ctx.Data["Err_UserName"] = true
|
||||||
ctx.RenderWithErr(ctx.Tr("form.username_been_taken"), SIGNUP, &form)
|
ctx.RenderWithErr(ctx.Tr("form.username_been_taken"), SIGNUP, &form)
|
||||||
case models.ErrEmailAlreadyUsed:
|
case models.IsErrEmailAlreadyUsed(err):
|
||||||
ctx.Data["Err_Email"] = true
|
ctx.Data["Err_Email"] = true
|
||||||
ctx.RenderWithErr(ctx.Tr("form.email_been_used"), SIGNUP, &form)
|
ctx.RenderWithErr(ctx.Tr("form.email_been_used"), SIGNUP, &form)
|
||||||
case models.ErrUserNameIllegal:
|
case models.IsErrNameReserved(err):
|
||||||
ctx.Data["Err_UserName"] = true
|
ctx.Data["Err_UserName"] = true
|
||||||
ctx.RenderWithErr(ctx.Tr("form.illegal_username"), SIGNUP, &form)
|
ctx.RenderWithErr(ctx.Tr("user.form.name_reserved", err.(models.ErrNameReserved).Name), SIGNUP, &form)
|
||||||
|
case models.IsErrNamePatternNotAllowed(err):
|
||||||
|
ctx.Data["Err_UserName"] = true
|
||||||
|
ctx.RenderWithErr(ctx.Tr("user.form.name_pattern_not_allowed", err.(models.ErrNamePatternNotAllowed).Pattern), SIGNUP, &form)
|
||||||
default:
|
default:
|
||||||
ctx.Handle(500, "CreateUser", err)
|
ctx.Handle(500, "CreateUser", err)
|
||||||
}
|
}
|
||||||
|
|||||||
+12
-13
@@ -50,21 +50,20 @@ func SettingsPost(ctx *middleware.Context, form auth.UpdateProfileForm) {
|
|||||||
|
|
||||||
// Check if user name has been changed.
|
// Check if user name has been changed.
|
||||||
if ctx.User.Name != form.UserName {
|
if ctx.User.Name != form.UserName {
|
||||||
isExist, err := models.IsUserExist(ctx.User.Id, form.UserName)
|
if err := models.ChangeUserName(ctx.User, form.UserName); err != nil {
|
||||||
if err != nil {
|
switch {
|
||||||
ctx.Handle(500, "IsUserExist", err)
|
case models.IsErrUserAlreadyExist(err):
|
||||||
return
|
ctx.Flash.Error(ctx.Tr("form.username_been_taken"))
|
||||||
} else if isExist {
|
|
||||||
ctx.RenderWithErr(ctx.Tr("form.username_been_taken"), SETTINGS_PROFILE, &form)
|
|
||||||
return
|
|
||||||
} else if err = models.ChangeUserName(ctx.User, form.UserName); err != nil {
|
|
||||||
switch err {
|
|
||||||
case models.ErrUserNameIllegal:
|
|
||||||
ctx.Flash.Error(ctx.Tr("form.illegal_username"))
|
|
||||||
ctx.Redirect(setting.AppSubUrl + "/user/settings")
|
ctx.Redirect(setting.AppSubUrl + "/user/settings")
|
||||||
case models.ErrEmailAlreadyUsed:
|
case models.IsErrEmailAlreadyUsed(err):
|
||||||
ctx.Flash.Error(ctx.Tr("form.email_been_used"))
|
ctx.Flash.Error(ctx.Tr("form.email_been_used"))
|
||||||
ctx.Redirect(setting.AppSubUrl + "/user/settings")
|
ctx.Redirect(setting.AppSubUrl + "/user/settings")
|
||||||
|
case models.IsErrNameReserved(err):
|
||||||
|
ctx.Flash.Error(ctx.Tr("user.form.name_reserved"))
|
||||||
|
ctx.Redirect(setting.AppSubUrl + "/user/settings")
|
||||||
|
case models.IsErrNamePatternNotAllowed(err):
|
||||||
|
ctx.Flash.Error(ctx.Tr("user.form.name_pattern_not_allowed"))
|
||||||
|
ctx.Redirect(setting.AppSubUrl + "/user/settings")
|
||||||
default:
|
default:
|
||||||
ctx.Handle(500, "ChangeUserName", err)
|
ctx.Handle(500, "ChangeUserName", err)
|
||||||
}
|
}
|
||||||
@@ -204,7 +203,7 @@ func SettingsEmailPost(ctx *middleware.Context, form auth.AddEmailForm) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if err := models.AddEmailAddress(e); err != nil {
|
if err := models.AddEmailAddress(e); err != nil {
|
||||||
if err == models.ErrEmailAlreadyUsed {
|
if models.IsErrEmailAlreadyUsed(err) {
|
||||||
ctx.RenderWithErr(ctx.Tr("form.email_been_used"), SETTINGS_EMAILS, &form)
|
ctx.RenderWithErr(ctx.Tr("form.email_been_used"), SETTINGS_EMAILS, &form)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in new issue
Block a user