#2497 incorrect error handle for team name
This commit is contained in:
		
							parent
							
								
									ee814bf8d6
								
							
						
					
					
						commit
						112a7cab31
					
				
					 9 changed files with 65 additions and 44 deletions
				
			
		|  | @ -3,7 +3,7 @@ Gogs - Go Git Service [ | ||||
| 
 | ||||
| ##### Current version: 0.8.24 | ||||
| ##### Current version: 0.8.25 | ||||
| 
 | ||||
| | Web | UI  | Preview  | | ||||
| |:-------------:|:-------:|:-------:| | ||||
|  |  | |||
|  | @ -203,7 +203,6 @@ repo_name_been_taken = Repository name has already been taken. | |||
| org_name_been_taken = Organization name has already been taken. | ||||
| team_name_been_taken = Team name has already been taken. | ||||
| email_been_used = Email address has already been used. | ||||
| illegal_team_name = Team name contains illegal characters. | ||||
| 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_owner_name = Please make sure that the owner name you entered is correct. | ||||
|  |  | |||
							
								
								
									
										2
									
								
								gogs.go
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								gogs.go
									
									
									
									
									
								
							|  | @ -17,7 +17,7 @@ import ( | |||
| 	"github.com/gogits/gogs/modules/setting" | ||||
| ) | ||||
| 
 | ||||
| const APP_VER = "0.8.24.0129" | ||||
| const APP_VER = "0.8.25.0129" | ||||
| 
 | ||||
| func init() { | ||||
| 	runtime.GOMAXPROCS(runtime.NumCPU()) | ||||
|  |  | |||
|  | @ -559,5 +559,26 @@ func IsErrAuthenticationNotExist(err error) bool { | |||
| } | ||||
| 
 | ||||
| func (err ErrAuthenticationNotExist) Error() string { | ||||
| 	return fmt.Sprintf("Authentication does not exist [id: %d]", err.ID) | ||||
| 	return fmt.Sprintf("authentication does not exist [id: %d]", err.ID) | ||||
| } | ||||
| 
 | ||||
| // ___________
 | ||||
| // \__    ___/___ _____    _____
 | ||||
| //   |    |_/ __ \\__  \  /     \
 | ||||
| //   |    |\  ___/ / __ \|  Y Y  \
 | ||||
| //   |____| \___  >____  /__|_|  /
 | ||||
| //              \/     \/      \/
 | ||||
| 
 | ||||
| type ErrTeamAlreadyExist struct { | ||||
| 	OrgID int64 | ||||
| 	Name  string | ||||
| } | ||||
| 
 | ||||
| func IsErrTeamAlreadyExist(err error) bool { | ||||
| 	_, ok := err.(ErrTeamAlreadyExist) | ||||
| 	return ok | ||||
| } | ||||
| 
 | ||||
| func (err ErrTeamAlreadyExist) Error() string { | ||||
| 	return fmt.Sprintf("team already exists [org_id: %d, name: %s]", err.OrgID, err.Name) | ||||
| } | ||||
|  |  | |||
|  | @ -14,10 +14,8 @@ import ( | |||
| ) | ||||
| 
 | ||||
| var ( | ||||
| 	ErrOrgNotExist      = errors.New("Organization does not exist") | ||||
| 	ErrTeamAlreadyExist = errors.New("Team already exist") | ||||
| 	ErrTeamNotExist     = errors.New("Team does not exist") | ||||
| 	ErrTeamNameIllegal  = errors.New("Team name contains illegal characters") | ||||
| 	ErrOrgNotExist  = errors.New("Organization does not exist") | ||||
| 	ErrTeamNotExist = errors.New("Team does not exist") | ||||
| ) | ||||
| 
 | ||||
| // IsOwnedBy returns true if given user is in the owner team.
 | ||||
|  | @ -598,9 +596,9 @@ func (t *Team) RemoveRepository(repoID int64) error { | |||
| 
 | ||||
| // NewTeam creates a record of new team.
 | ||||
| // It's caller's responsibility to assign organization ID.
 | ||||
| func NewTeam(t *Team) (err error) { | ||||
| 	if err = IsUsableName(t.Name); err != nil { | ||||
| 		return err | ||||
| func NewTeam(t *Team) error { | ||||
| 	if len(t.Name) == 0 { | ||||
| 		return errors.New("empty team name") | ||||
| 	} | ||||
| 
 | ||||
| 	has, err := x.Id(t.OrgID).Get(new(User)) | ||||
|  | @ -615,7 +613,7 @@ func NewTeam(t *Team) (err error) { | |||
| 	if err != nil { | ||||
| 		return err | ||||
| 	} else if has { | ||||
| 		return ErrTeamAlreadyExist | ||||
| 		return ErrTeamAlreadyExist{t.OrgID, t.LowerName} | ||||
| 	} | ||||
| 
 | ||||
| 	sess := x.NewSession() | ||||
|  | @ -674,8 +672,8 @@ func GetTeamById(teamId int64) (*Team, error) { | |||
| 
 | ||||
| // UpdateTeam updates information of team.
 | ||||
| func UpdateTeam(t *Team, authChanged bool) (err error) { | ||||
| 	if err = IsUsableName(t.Name); err != nil { | ||||
| 		return err | ||||
| 	if len(t.Name) == 0 { | ||||
| 		return errors.New("empty team name") | ||||
| 	} | ||||
| 
 | ||||
| 	if len(t.Description) > 255 { | ||||
|  | @ -689,6 +687,13 @@ func UpdateTeam(t *Team, authChanged bool) (err error) { | |||
| 	} | ||||
| 
 | ||||
| 	t.LowerName = strings.ToLower(t.Name) | ||||
| 	has, err := x.Where("org_id=?", t.OrgID).And("lower_name=?", t.LowerName).And("id!=?", t.ID).Get(new(Team)) | ||||
| 	if err != nil { | ||||
| 		return err | ||||
| 	} else if has { | ||||
| 		return ErrTeamAlreadyExist{t.OrgID, t.LowerName} | ||||
| 	} | ||||
| 
 | ||||
| 	if _, err = sess.Id(t.ID).AllCols().Update(t); err != nil { | ||||
| 		return fmt.Errorf("update: %v", err) | ||||
| 	} | ||||
|  |  | |||
|  | @ -45,9 +45,9 @@ func (f *UpdateOrgSettingForm) Validate(ctx *macaron.Context, errs binding.Error | |||
| //              \/     \/      \/
 | ||||
| 
 | ||||
| type CreateTeamForm struct { | ||||
| 	TeamName    string `form:"team_name" binding:"Required;AlphaDashDot;MaxSize(30)"` | ||||
| 	Description string `form:"desc" binding:"MaxSize(255)"` | ||||
| 	Permission  string `form:"permission"` | ||||
| 	TeamName    string `binding:"Required;AlphaDashDot;MaxSize(30)"` | ||||
| 	Description string `binding:"MaxSize(255)"` | ||||
| 	Permission  string | ||||
| } | ||||
| 
 | ||||
| func (f *CreateTeamForm) Validate(ctx *macaron.Context, errs binding.Errors) binding.Errors { | ||||
|  |  | |||
|  | @ -157,12 +157,6 @@ func NewTeamPost(ctx *middleware.Context, form auth.CreateTeamForm) { | |||
| 	ctx.Data["Title"] = ctx.Org.Organization.FullName | ||||
| 	ctx.Data["PageIsOrgTeams"] = true | ||||
| 	ctx.Data["PageIsOrgTeamsNew"] = true | ||||
| 	ctx.Data["Team"] = &models.Team{} | ||||
| 
 | ||||
| 	if ctx.HasError() { | ||||
| 		ctx.HTML(200, TEAM_NEW) | ||||
| 		return | ||||
| 	} | ||||
| 
 | ||||
| 	// Validate permission level.
 | ||||
| 	var auth models.AccessMode | ||||
|  | @ -178,28 +172,30 @@ func NewTeamPost(ctx *middleware.Context, form auth.CreateTeamForm) { | |||
| 		return | ||||
| 	} | ||||
| 
 | ||||
| 	org := ctx.Org.Organization | ||||
| 
 | ||||
| 	t := &models.Team{ | ||||
| 		OrgID:       org.Id, | ||||
| 		OrgID:       ctx.Org.Organization.Id, | ||||
| 		Name:        form.TeamName, | ||||
| 		Description: form.Description, | ||||
| 		Authorize:   auth, | ||||
| 	} | ||||
| 	ctx.Data["Team"] = t | ||||
| 
 | ||||
| 	if ctx.HasError() { | ||||
| 		ctx.HTML(200, TEAM_NEW) | ||||
| 		return | ||||
| 	} | ||||
| 
 | ||||
| 	if err := models.NewTeam(t); err != nil { | ||||
| 		switch err { | ||||
| 		case models.ErrTeamNameIllegal: | ||||
| 			ctx.Data["Err_TeamName"] = true | ||||
| 			ctx.RenderWithErr(ctx.Tr("form.illegal_team_name"), TEAM_NEW, &form) | ||||
| 		case models.ErrTeamAlreadyExist: | ||||
| 			ctx.Data["Err_TeamName"] = true | ||||
| 		ctx.Data["Err_TeamName"] = true | ||||
| 		switch { | ||||
| 		case models.IsErrTeamAlreadyExist(err): | ||||
| 			ctx.RenderWithErr(ctx.Tr("form.team_name_been_taken"), TEAM_NEW, &form) | ||||
| 		default: | ||||
| 			ctx.Handle(500, "NewTeam", err) | ||||
| 		} | ||||
| 		return | ||||
| 	} | ||||
| 	log.Trace("Team created: %s/%s", org.Name, t.Name) | ||||
| 	log.Trace("Team created: %s/%s", ctx.Org.Organization.Name, t.Name) | ||||
| 	ctx.Redirect(ctx.Org.OrgLink + "/teams/" + t.LowerName) | ||||
| } | ||||
| 
 | ||||
|  | @ -235,8 +231,7 @@ func EditTeamPost(ctx *middleware.Context, form auth.CreateTeamForm) { | |||
| 	t := ctx.Org.Team | ||||
| 	ctx.Data["Title"] = ctx.Org.Organization.FullName | ||||
| 	ctx.Data["PageIsOrgTeams"] = true | ||||
| 	ctx.Data["team_name"] = t.Name | ||||
| 	ctx.Data["desc"] = t.Description | ||||
| 	ctx.Data["Team"] = t | ||||
| 
 | ||||
| 	if ctx.HasError() { | ||||
| 		ctx.HTML(200, TEAM_NEW) | ||||
|  | @ -267,10 +262,11 @@ func EditTeamPost(ctx *middleware.Context, form auth.CreateTeamForm) { | |||
| 	} | ||||
| 	t.Description = form.Description | ||||
| 	if err := models.UpdateTeam(t, isAuthChanged); err != nil { | ||||
| 		if err == models.ErrTeamNameIllegal { | ||||
| 			ctx.Data["Err_TeamName"] = true | ||||
| 			ctx.RenderWithErr(ctx.Tr("form.illegal_team_name"), TEAM_NEW, &form) | ||||
| 		} else { | ||||
| 		ctx.Data["Err_TeamName"] = true | ||||
| 		switch { | ||||
| 		case models.IsErrTeamAlreadyExist(err): | ||||
| 			ctx.RenderWithErr(ctx.Tr("form.team_name_been_taken"), TEAM_NEW, &form) | ||||
| 		default: | ||||
| 			ctx.Handle(500, "UpdateTeam", err) | ||||
| 		} | ||||
| 		return | ||||
|  |  | |||
|  | @ -1 +1 @@ | |||
| 0.8.24.0129 | ||||
| 0.8.25.0129 | ||||
|  | @ -13,14 +13,14 @@ | |||
| 					<div class="required field {{if .Err_TeamName}}error{{end}}"> | ||||
| 						<label for="team_name">{{.i18n.Tr "org.team_name"}}</label> | ||||
| 						{{if eq .Team.LowerName "owners"}} | ||||
| 							<input type="hidden" name="team_name" value="{{.team_name}}"> | ||||
| 							<input type="hidden" name="team_name" value="{{.Team.Name}}"> | ||||
| 						{{end}} | ||||
| 						<input id="team_name" name="team_name" value="{{.team_name}}" required {{if eq .Team.LowerName "owners"}}disabled{{end}} autofocus> | ||||
| 						<input id="team_name" name="team_name" value="{{.Team.Name}}" required {{if eq .Team.LowerName "owners"}}disabled{{end}} autofocus> | ||||
| 						<span class="help">{{.i18n.Tr "org.team_name_helper"}}</span> | ||||
| 					</div> | ||||
| 					<div class="field {{if .Err_Description}}error{{end}}"> | ||||
| 						<label for="desc">{{.i18n.Tr "org.team_desc"}}</label> | ||||
| 						<input id="desc" name="desc" value="{{.desc}}"> | ||||
| 						<label for="description">{{.i18n.Tr "org.team_desc"}}</label> | ||||
| 						<input id="description" name="description" value="{{.Team.Description}}"> | ||||
| 						<span class="help">{{.i18n.Tr "org.team_desc_helper"}}</span> | ||||
| 					</div> | ||||
| 					{{if not (eq .Team.LowerName "owners")}} | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue