mirror of
https://github.com/nikdoof/pocket-id.git
synced 2025-12-14 07:12:19 +00:00
feat: add support for more username formats
This commit is contained in:
@@ -23,8 +23,3 @@ type OneTimeAccessTokenCreateDto struct {
|
|||||||
UserID string `json:"userId" binding:"required"`
|
UserID string `json:"userId" binding:"required"`
|
||||||
ExpiresAt time.Time `json:"expiresAt" binding:"required"`
|
ExpiresAt time.Time `json:"expiresAt" binding:"required"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type LoginUserDto struct {
|
|
||||||
Username string `json:"username" binding:"required"`
|
|
||||||
Password string `json:"password" binding:"required"`
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -20,7 +20,10 @@ var validateUrlList validator.Func = func(fl validator.FieldLevel) bool {
|
|||||||
}
|
}
|
||||||
|
|
||||||
var validateUsername validator.Func = func(fl validator.FieldLevel) bool {
|
var validateUsername validator.Func = func(fl validator.FieldLevel) bool {
|
||||||
regex := "^[a-z0-9_]*$"
|
// [a-zA-Z0-9] : The username must start with an alphanumeric character
|
||||||
|
// [a-zA-Z0-9_.@-]* : The rest of the username can contain alphanumeric characters, dots, underscores, hyphens, and "@" symbols
|
||||||
|
// [a-zA-Z0-9]$ : The username must end with an alphanumeric character
|
||||||
|
regex := "^[a-zA-Z0-9][a-zA-Z0-9_.@-]*[a-zA-Z0-9]$"
|
||||||
matched, _ := regexp.MatchString(regex, fl.Field().String())
|
matched, _ := regexp.MatchString(regex, fl.Field().String())
|
||||||
return matched
|
return matched
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -46,7 +46,7 @@ func handleValidationError(validationErrors validator.ValidationErrors) string {
|
|||||||
case "email":
|
case "email":
|
||||||
errorMessage = fmt.Sprintf("%s must be a valid email address", fieldName)
|
errorMessage = fmt.Sprintf("%s must be a valid email address", fieldName)
|
||||||
case "username":
|
case "username":
|
||||||
errorMessage = fmt.Sprintf("%s must contain only lowercase letters, numbers, and underscores", fieldName)
|
errorMessage = fmt.Sprintf("%s must only contain lowercase letters, numbers, underscores, dots, hyphens, and '@' symbols and not start or end with a special character", fieldName)
|
||||||
case "url":
|
case "url":
|
||||||
errorMessage = fmt.Sprintf("%s must be a valid URL", fieldName)
|
errorMessage = fmt.Sprintf("%s must be a valid URL", fieldName)
|
||||||
case "min":
|
case "min":
|
||||||
|
|||||||
@@ -32,7 +32,10 @@
|
|||||||
.string()
|
.string()
|
||||||
.min(2)
|
.min(2)
|
||||||
.max(30)
|
.max(30)
|
||||||
.regex(/^[a-z0-9_]+$/, 'Only lowercase letters, numbers, and underscores are allowed'),
|
.regex(
|
||||||
|
/^[a-z0-9_@.-]+$/,
|
||||||
|
"Username can only contain lowercase letters, numbers, underscores, dots, hyphens, and '@' symbols"
|
||||||
|
),
|
||||||
email: z.string().email(),
|
email: z.string().email(),
|
||||||
isAdmin: z.boolean()
|
isAdmin: z.boolean()
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user