Skip to content

Commit f2b5744

Browse files
committed
Remove form validation for json request and fix some other bugs
1 parent 265d57b commit f2b5744

File tree

7 files changed

+38
-23
lines changed

7 files changed

+38
-23
lines changed

models/db/name.go

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,25 @@ func (err ErrNameCharsNotAllowed) Unwrap() error {
7272
return util.ErrInvalidArgument
7373
}
7474

75+
type ErrNameTooLong struct {
76+
Name string
77+
MaxLength int
78+
}
79+
80+
func (err ErrNameTooLong) Error() string {
81+
return fmt.Sprintf("name is too long [name: %s, max length: %d]", err.Name, err.MaxLength)
82+
}
83+
84+
// Unwrap unwraps this as a ErrInvalid err
85+
func (err ErrNameTooLong) Unwrap() error {
86+
return util.ErrInvalidArgument
87+
}
88+
89+
func IsErrNameTooLong(err error) bool {
90+
_, ok := err.(ErrNameTooLong)
91+
return ok
92+
}
93+
7594
// IsUsableName checks if name is reserved or pattern of name is not allowed
7695
// based on given reserved names and patterns.
7796
// Names are exact match, patterns can be a prefix or suffix match with placeholder '*'.

models/user/user.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -618,8 +618,13 @@ var (
618618
reservedUserPatterns = []string{"*.keys", "*.gpg", "*.rss", "*.atom", "*.png"}
619619
)
620620

621+
const MaxUsableUsernameLength = 40
622+
621623
// IsUsableUsername returns an error when a username is reserved
622624
func IsUsableUsername(name string) error {
625+
if len(name) > MaxUsableUsernameLength {
626+
return db.ErrNameTooLong{Name: name, MaxLength: MaxUsableUsernameLength}
627+
}
623628
// Validate username make sure it satisfies requirement.
624629
if !validation.IsValidUsername(name) {
625630
// Note: usually this error is normally caught up earlier in the UI

options/locale/locale_en-US.ini

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2812,8 +2812,10 @@ team_permission_desc = Permission
28122812
team_unit_desc = Allow Access to Repository Sections
28132813
team_unit_disabled = (Disabled)
28142814

2815+
form.username_been_taken = The organization name "%s" has already been taken.
28152816
form.name_reserved = The organization name "%s" is reserved.
28162817
form.name_pattern_not_allowed = The pattern "%s" is not allowed in an organization name.
2818+
form.name_too_long = The organization name "%[1]s" is too long, max size is %[2]d
28172819
form.create_org_not_allowed = You are not allowed to create an organization.
28182820

28192821
settings = Settings

routers/web/org/setting.go

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -220,30 +220,31 @@ func Labels(ctx *context.Context) {
220220

221221
// SettingsRename response for renaming organization
222222
func SettingsRename(ctx *context.Context) {
223-
form := web.GetForm(ctx).(*forms.RenameOrgForm)
224223
org := ctx.Org.Organization
224+
oldOrgName := ctx.FormString("org_name")
225+
newOrgName := ctx.FormString("new_org_name")
225226

226-
if org.Name != form.OrgName {
227+
if org.Name != oldOrgName {
227228
ctx.Flash.Error(ctx.Tr("form.enterred_invalid_org_name"))
228229
ctx.JSONRedirect(ctx.Org.OrgLink + "/settings")
229230
return
230231
}
231232

232-
if org.Name == form.NewOrgName {
233+
if org.Name == newOrgName {
233234
ctx.Flash.Error(ctx.Tr("org.settings.rename_no_change"))
234235
ctx.JSONRedirect(ctx.Org.OrgLink + "/settings")
235236
return
236237
}
237238

238-
oldOrgName := org.Name
239-
240-
if err := user_service.RenameUser(ctx, org.AsUser(), form.NewOrgName); err != nil {
239+
if err := user_service.RenameUser(ctx, org.AsUser(), newOrgName); err != nil {
241240
if user_model.IsErrUserAlreadyExist(err) {
242-
ctx.Flash.Error(ctx.Tr("form.username_been_taken"))
241+
ctx.Flash.Error(ctx.Tr("org.form.username_been_taken", newOrgName))
243242
} else if db.IsErrNameReserved(err) {
244-
ctx.Flash.Error(ctx.Tr("repo.form.name_reserved"))
243+
ctx.Flash.Error(ctx.Tr("org.form.name_reserved", newOrgName))
245244
} else if db.IsErrNamePatternNotAllowed(err) {
246-
ctx.Flash.Error(ctx.Tr("repo.form.name_pattern_not_allowed"))
245+
ctx.Flash.Error(ctx.Tr("org.form.name_pattern_not_allowed", newOrgName))
246+
} else if db.IsErrNameTooLong(err) {
247+
ctx.Flash.Error(ctx.Tr("org.form.name_too_long", newOrgName, user_model.MaxUsableUsernameLength))
247248
} else {
248249
log.Error("RenameOrganization: %v", err)
249250
ctx.Flash.Error(util.Iif(ctx.Doer.IsAdmin, err.Error(), string(ctx.Tr("org.settings.rename_failed"))))

routers/web/web.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -964,7 +964,7 @@ func registerWebRoutes(m *web.Router) {
964964
addSettingsVariablesRoutes()
965965
}, actions.MustEnableActions)
966966

967-
m.Post("/rename", web.Bind(forms.RenameOrgForm{}), org.SettingsRename)
967+
m.Post("/rename", org.SettingsRename)
968968
m.Post("/delete", org.SettingsDelete)
969969

970970
m.Group("/packages", func() {

services/forms/org.go

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -52,18 +52,6 @@ func (f *UpdateOrgSettingForm) Validate(req *http.Request, errs binding.Errors)
5252
return middleware.Validate(errs, ctx.Data, f, ctx.Locale)
5353
}
5454

55-
type RenameOrgForm struct {
56-
OrgName string `binding:"Required;Username;MaxSize(40)"`
57-
NewOrgName string `binding:"Required;Username;MaxSize(40)"`
58-
}
59-
60-
// ___________
61-
// \__ ___/___ _____ _____
62-
// | |_/ __ \\__ \ / \
63-
// | |\ ___/ / __ \| Y Y \
64-
// |____| \___ >____ /__|_| /
65-
// \/ \/ \/
66-
6755
// CreateTeamForm form for creating team
6856
type CreateTeamForm struct {
6957
TeamName string `binding:"Required;AlphaDashDot;MaxSize(255)"`

services/forms/user_form.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ type InstallForm struct {
6262

6363
PasswordAlgorithm string
6464

65-
AdminName string `binding:"OmitEmpty;Username;MaxSize(30)" locale:"install.admin_name"`
65+
AdminName string `binding:"OmitEmpty;Username;MaxSize(40)" locale:"install.admin_name"`
6666
AdminPasswd string `binding:"OmitEmpty;MaxSize(255)" locale:"install.admin_password"`
6767
AdminConfirmPasswd string
6868
AdminEmail string `binding:"OmitEmpty;MinSize(3);MaxSize(254);Include(@)" locale:"install.admin_email"`

0 commit comments

Comments
 (0)