@@ -1684,6 +1684,16 @@ func (c *Client4) UpdateUserActive(ctx context.Context, userId string, active bo
|
||||
return BuildResponse(r), nil
|
||||
}
|
||||
|
||||
// ResetFailedAttempts resets the number of failed attempts for a user.
|
||||
func (c *Client4) ResetFailedAttempts(ctx context.Context, userId string) (*Response, error) {
|
||||
r, err := c.DoAPIPost(ctx, c.userRoute(userId)+"/reset_failed_attempts", "")
|
||||
if err != nil {
|
||||
return BuildResponse(r), err
|
||||
}
|
||||
defer closeBody(r)
|
||||
return BuildResponse(r), nil
|
||||
}
|
||||
|
||||
// DeleteUser deactivates a user in the system based on the provided user id string.
|
||||
func (c *Client4) DeleteUser(ctx context.Context, userId string) (*Response, error) {
|
||||
r, err := c.DoAPIDelete(ctx, c.userRoute(userId))
|
||||
|
||||
@@ -158,6 +158,7 @@ const (
|
||||
LdapSettingsDefaultGroupDisplayNameAttribute = ""
|
||||
LdapSettingsDefaultGroupIdAttribute = ""
|
||||
LdapSettingsDefaultPictureAttribute = ""
|
||||
LdapSettingsDefaultMaximumLoginAttempts = 10
|
||||
|
||||
SamlSettingsDefaultIdAttribute = ""
|
||||
SamlSettingsDefaultGuestAttribute = ""
|
||||
@@ -2415,14 +2416,15 @@ type ClientRequirements struct {
|
||||
|
||||
type LdapSettings struct {
|
||||
// Basic
|
||||
Enable *bool `access:"authentication_ldap"`
|
||||
EnableSync *bool `access:"authentication_ldap"`
|
||||
LdapServer *string `access:"authentication_ldap"` // telemetry: none
|
||||
LdapPort *int `access:"authentication_ldap"` // telemetry: none
|
||||
ConnectionSecurity *string `access:"authentication_ldap"`
|
||||
BaseDN *string `access:"authentication_ldap"` // telemetry: none
|
||||
BindUsername *string `access:"authentication_ldap"` // telemetry: none
|
||||
BindPassword *string `access:"authentication_ldap"` // telemetry: none
|
||||
Enable *bool `access:"authentication_ldap"`
|
||||
EnableSync *bool `access:"authentication_ldap"`
|
||||
LdapServer *string `access:"authentication_ldap"` // telemetry: none
|
||||
LdapPort *int `access:"authentication_ldap"` // telemetry: none
|
||||
ConnectionSecurity *string `access:"authentication_ldap"`
|
||||
BaseDN *string `access:"authentication_ldap"` // telemetry: none
|
||||
BindUsername *string `access:"authentication_ldap"` // telemetry: none
|
||||
BindPassword *string `access:"authentication_ldap"` // telemetry: none
|
||||
MaximumLoginAttempts *int `access:"authentication_ldap"` // telemetry: none
|
||||
|
||||
// Filtering
|
||||
UserFilter *string `access:"authentication_ldap"` // telemetry: none
|
||||
@@ -2510,6 +2512,10 @@ func (s *LdapSettings) SetDefaults() {
|
||||
s.BindPassword = NewPointer("")
|
||||
}
|
||||
|
||||
if s.MaximumLoginAttempts == nil {
|
||||
s.MaximumLoginAttempts = NewPointer(LdapSettingsDefaultMaximumLoginAttempts)
|
||||
}
|
||||
|
||||
if s.UserFilter == nil {
|
||||
s.UserFilter = NewPointer("")
|
||||
}
|
||||
@@ -4100,6 +4106,10 @@ func (s *LdapSettings) isValid() *AppError {
|
||||
return NewAppError("Config.IsValid", "model.config.is_valid.ldap_server", nil, "", http.StatusBadRequest)
|
||||
}
|
||||
|
||||
if *s.MaximumLoginAttempts <= 0 {
|
||||
return NewAppError("Config.IsValid", "model.config.is_valid.ldap_max_login_attempts.app_error", nil, "", http.StatusBadRequest)
|
||||
}
|
||||
|
||||
if *s.BaseDN == "" {
|
||||
return NewAppError("Config.IsValid", "model.config.is_valid.ldap_basedn", nil, "", http.StatusBadRequest)
|
||||
}
|
||||
|
||||
@@ -150,7 +150,7 @@ func (u *UserReportOptions) IsValid() *AppError {
|
||||
}
|
||||
|
||||
func (u *UserReportQuery) ToReport() *UserReport {
|
||||
u.ClearNonProfileFields(false)
|
||||
u.ClearNonProfileFields(true)
|
||||
return &UserReport{
|
||||
User: u.User,
|
||||
UserPostStats: u.UserPostStats,
|
||||
|
||||
@@ -709,10 +709,10 @@ func (u *User) ClearNonProfileFields(asAdmin bool) {
|
||||
u.EmailVerified = false
|
||||
u.AllowMarketing = false
|
||||
u.LastPasswordUpdate = 0
|
||||
u.FailedAttempts = 0
|
||||
|
||||
if !asAdmin {
|
||||
u.NotifyProps = StringMap{}
|
||||
u.FailedAttempts = 0
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Ссылка в новой задаче
Block a user