[feature] Add support for profile fields (#1483)

* Add go-playground/form pkg

* [feature] Add support for profile fields

* Add field attributes test

* Validate profile fields form

* Add profile field validation tests

* Add Field Attributes definition to swagger

---------

Co-authored-by: tobi <31960611+tsmethurst@users.noreply.github.com>
This commit is contained in:
zowhoey
2023-03-06 09:30:19 +00:00
committed by GitHub
parent 24f6a447f3
commit f518f649f8
21 changed files with 2399 additions and 2 deletions

View File

@ -43,6 +43,8 @@ const (
maximumUsernameLength = 64
maximumCustomCSSLength = 5000
maximumEmojiCategoryLength = 64
maximumProfileFieldLength = 255
maximumProfileFields = 4
)
// NewPassword returns an error if the given password is not sufficiently strong, or nil if it's ok.
@ -231,3 +233,20 @@ func SiteTerms(t string) error {
func ULID(i string) bool {
return regexes.ULID.MatchString(i)
}
func ProfileFieldsCount(fields []apimodel.UpdateField) error {
if length := len(fields); length > maximumProfileFields {
return fmt.Errorf("cannot have more than %d profile fields", maximumProfileFields)
}
return nil
}
func ProfileField(f *string) string {
s := []rune(*f)
if len(s) > maximumProfileFieldLength {
return string(s[:maximumProfileFieldLength]) // trim profile field to maximum allowed length
}
return string(*f)
}