chore(api): support ignore password if login source type is LDAP for creating user API (#28491) (#28525)
Backport #28491 by @appleboy - Modify the `Password` field in `CreateUserOption` struct to remove the `Required` tag - Update the `v1_json.tmpl` template to include the `email` field and remove the `password` field Signed-off-by: Bo-Yi Wu <appleboy.tw@gmail.com> Co-authored-by: Bo-Yi Wu <appleboy.tw@gmail.com> (cherry picked from commit 411310d698e86bd639b31f2f5a8b856365b4590f)
This commit is contained in:
parent
2878d07926
commit
5d1d66ac3a
3 changed files with 24 additions and 16 deletions
|
@ -16,8 +16,7 @@ type CreateUserOption struct {
|
||||||
// required: true
|
// required: true
|
||||||
// swagger:strfmt email
|
// swagger:strfmt email
|
||||||
Email string `json:"email" binding:"Required;Email;MaxSize(254)"`
|
Email string `json:"email" binding:"Required;Email;MaxSize(254)"`
|
||||||
// required: true
|
Password string `json:"password" binding:"MaxSize(255)"`
|
||||||
Password string `json:"password" binding:"Required;MaxSize(255)"`
|
|
||||||
MustChangePassword *bool `json:"must_change_password"`
|
MustChangePassword *bool `json:"must_change_password"`
|
||||||
SendNotify bool `json:"send_notify"`
|
SendNotify bool `json:"send_notify"`
|
||||||
Restricted *bool `json:"restricted"`
|
Restricted *bool `json:"restricted"`
|
||||||
|
|
|
@ -93,11 +93,20 @@ func CreateUser(ctx *context.APIContext) {
|
||||||
if ctx.Written() {
|
if ctx.Written() {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if u.LoginType == auth.Plain {
|
||||||
|
if len(form.Password) < setting.MinPasswordLength {
|
||||||
|
err := errors.New("PasswordIsRequired")
|
||||||
|
ctx.Error(http.StatusBadRequest, "PasswordIsRequired", err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
if !password.IsComplexEnough(form.Password) {
|
if !password.IsComplexEnough(form.Password) {
|
||||||
err := errors.New("PasswordComplexity")
|
err := errors.New("PasswordComplexity")
|
||||||
ctx.Error(http.StatusBadRequest, "PasswordComplexity", err)
|
ctx.Error(http.StatusBadRequest, "PasswordComplexity", err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
pwned, err := password.IsPwned(ctx, form.Password)
|
pwned, err := password.IsPwned(ctx, form.Password)
|
||||||
if pwned {
|
if pwned {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -106,6 +115,7 @@ func CreateUser(ctx *context.APIContext) {
|
||||||
ctx.Error(http.StatusBadRequest, "PasswordPwned", errors.New("PasswordPwned"))
|
ctx.Error(http.StatusBadRequest, "PasswordPwned", errors.New("PasswordPwned"))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
overwriteDefault := &user_model.CreateUserOverwriteOptions{
|
overwriteDefault := &user_model.CreateUserOverwriteOptions{
|
||||||
IsActive: util.OptionalBoolTrue,
|
IsActive: util.OptionalBoolTrue,
|
||||||
|
|
3
templates/swagger/v1_json.tmpl
generated
3
templates/swagger/v1_json.tmpl
generated
|
@ -18596,8 +18596,7 @@
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"required": [
|
"required": [
|
||||||
"username",
|
"username",
|
||||||
"email",
|
"email"
|
||||||
"password"
|
|
||||||
],
|
],
|
||||||
"properties": {
|
"properties": {
|
||||||
"created_at": {
|
"created_at": {
|
||||||
|
|
Loading…
Reference in a new issue