mirror of https://github.com/halo-dev/halo
chore: restrict username and password length during user registration (#6808)
#### What type of PR is this? /kind improvement /area core /milestone 2.20.x #### What this PR does / why we need it: 为注册用户增加用户名和密码长度校验 #### Does this PR introduce a user-facing change? ```release-note None ```pull/6816/head
parent
605d52a86e
commit
fbe40c28fc
|
@ -16495,7 +16495,7 @@
|
|||
"description": "Old password."
|
||||
},
|
||||
"password": {
|
||||
"minLength": 6,
|
||||
"minLength": 5,
|
||||
"type": "string",
|
||||
"description": "New password."
|
||||
}
|
||||
|
@ -16508,7 +16508,7 @@
|
|||
"type": "object",
|
||||
"properties": {
|
||||
"password": {
|
||||
"minLength": 6,
|
||||
"minLength": 5,
|
||||
"type": "string",
|
||||
"description": "New password."
|
||||
}
|
||||
|
@ -20691,12 +20691,12 @@
|
|||
},
|
||||
"visible": {
|
||||
"type": "string",
|
||||
"default": "PUBLIC",
|
||||
"enum": [
|
||||
"PUBLIC",
|
||||
"INTERNAL",
|
||||
"PRIVATE"
|
||||
],
|
||||
"default": "PUBLIC"
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -22536,12 +22536,12 @@
|
|||
},
|
||||
"visible": {
|
||||
"type": "string",
|
||||
"default": "PUBLIC",
|
||||
"enum": [
|
||||
"PUBLIC",
|
||||
"INTERNAL",
|
||||
"PRIVATE"
|
||||
],
|
||||
"default": "PUBLIC"
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
|
|
|
@ -3758,7 +3758,7 @@
|
|||
"description": "Old password."
|
||||
},
|
||||
"password": {
|
||||
"minLength": 6,
|
||||
"minLength": 5,
|
||||
"type": "string",
|
||||
"description": "New password."
|
||||
}
|
||||
|
@ -3771,7 +3771,7 @@
|
|||
"type": "object",
|
||||
"properties": {
|
||||
"password": {
|
||||
"minLength": 6,
|
||||
"minLength": 5,
|
||||
"type": "string",
|
||||
"description": "New password."
|
||||
}
|
||||
|
@ -5420,12 +5420,12 @@
|
|||
},
|
||||
"visible": {
|
||||
"type": "string",
|
||||
"default": "PUBLIC",
|
||||
"enum": [
|
||||
"PUBLIC",
|
||||
"INTERNAL",
|
||||
"PRIVATE"
|
||||
],
|
||||
"default": "PUBLIC"
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -5949,12 +5949,12 @@
|
|||
},
|
||||
"visible": {
|
||||
"type": "string",
|
||||
"default": "PUBLIC",
|
||||
"enum": [
|
||||
"PUBLIC",
|
||||
"INTERNAL",
|
||||
"PRIVATE"
|
||||
],
|
||||
"default": "PUBLIC"
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
|
|
|
@ -11300,12 +11300,12 @@
|
|||
},
|
||||
"visible": {
|
||||
"type": "string",
|
||||
"default": "PUBLIC",
|
||||
"enum": [
|
||||
"PUBLIC",
|
||||
"INTERNAL",
|
||||
"PRIVATE"
|
||||
],
|
||||
"default": "PUBLIC"
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -12484,12 +12484,12 @@
|
|||
},
|
||||
"visible": {
|
||||
"type": "string",
|
||||
"default": "PUBLIC",
|
||||
"enum": [
|
||||
"PUBLIC",
|
||||
"INTERNAL",
|
||||
"PRIVATE"
|
||||
],
|
||||
"default": "PUBLIC"
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
|
|
|
@ -1888,12 +1888,12 @@
|
|||
},
|
||||
"visible": {
|
||||
"type": "string",
|
||||
"default": "PUBLIC",
|
||||
"enum": [
|
||||
"PUBLIC",
|
||||
"INTERNAL",
|
||||
"PRIVATE"
|
||||
],
|
||||
"default": "PUBLIC"
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
|
|
|
@ -590,12 +590,21 @@ public class UserEndpoint implements CustomEndpoint {
|
|||
record ChangeOwnPasswordRequest(
|
||||
@Schema(description = "Old password.", requiredMode = REQUIRED)
|
||||
String oldPassword,
|
||||
@Schema(description = "New password.", requiredMode = REQUIRED, minLength = 6)
|
||||
@Schema(description = "New password.", requiredMode = REQUIRED, minLength = 5)
|
||||
String password) {
|
||||
|
||||
public ChangeOwnPasswordRequest {
|
||||
if (password == null || password.length() < 5 || password.length() > 257) {
|
||||
throw new UnsatisfiedAttributeValueException(
|
||||
"password is required.",
|
||||
"validation.error.password.size",
|
||||
new Object[] {5, 257});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
record ChangePasswordRequest(
|
||||
@Schema(description = "New password.", requiredMode = REQUIRED, minLength = 6)
|
||||
@Schema(description = "New password.", requiredMode = REQUIRED, minLength = 5)
|
||||
String password) {
|
||||
}
|
||||
|
||||
|
|
|
@ -7,6 +7,7 @@ import jakarta.validation.Payload;
|
|||
import jakarta.validation.constraints.Email;
|
||||
import jakarta.validation.constraints.NotBlank;
|
||||
import jakarta.validation.constraints.Pattern;
|
||||
import jakarta.validation.constraints.Size;
|
||||
import java.lang.annotation.ElementType;
|
||||
import java.lang.annotation.Retention;
|
||||
import java.lang.annotation.RetentionPolicy;
|
||||
|
@ -29,6 +30,7 @@ import run.halo.app.infra.ValidationUtils;
|
|||
public class SignUpData {
|
||||
|
||||
@NotBlank
|
||||
@Size(min = 4, max = 63)
|
||||
@Pattern(regexp = ValidationUtils.NAME_REGEX,
|
||||
message = "{validation.error.username.pattern}")
|
||||
private String username;
|
||||
|
@ -42,6 +44,7 @@ public class SignUpData {
|
|||
private String emailCode;
|
||||
|
||||
@NotBlank
|
||||
@Size(min = 5, max = 257)
|
||||
@Pattern(regexp = ValidationUtils.PASSWORD_REGEX,
|
||||
message = "{validation.error.password.pattern}")
|
||||
private String password;
|
||||
|
|
|
@ -91,3 +91,4 @@ signup.error.email-code.invalid=Invalid email code.
|
|||
validation.error.email.pattern=The email format is incorrect
|
||||
validation.error.username.pattern=The username can only be lowercase and can only contain letters, numbers, hyphens, and dots, starting and ending with characters.
|
||||
validation.error.password.pattern=The password can only use uppercase and lowercase letters (A-Z, a-z), numbers (0-9), and the following special characters: !@#$%^&*
|
||||
validation.error.password.size=The password length must be between {0} and {1}
|
||||
|
|
|
@ -63,4 +63,5 @@ signup.error.email-code.invalid=邮箱验证码无效。
|
|||
|
||||
validation.error.email.pattern=邮箱格式不正确
|
||||
validation.error.username.pattern=用户名只能小写且只能包含字母、数字、中划线和点,以字符开头和结尾
|
||||
validation.error.password.pattern=密码只能使用大小写字母 (A-Z, a-z)、数字 (0-9),以及以下特殊字符: !@#$%^&*
|
||||
validation.error.password.pattern=密码只能使用大小写字母 (A-Z, a-z)、数字 (0-9),以及以下特殊字符: !@#$%^&*
|
||||
validation.error.password.size=密码长度必须在 {0} 到 {1} 之间
|
||||
|
|
|
@ -36,6 +36,8 @@
|
|||
autocapitalize="off"
|
||||
autofocus
|
||||
required
|
||||
minlength="4"
|
||||
maxlength="63"
|
||||
th:field="*{username}"
|
||||
/>
|
||||
</div>
|
||||
|
|
Loading…
Reference in New Issue