Skip to content

Feature/password complexity on backend

What does this MR do and why?

related issue #354966 (closed) Also related: #348484 (closed)

This is the backend MR of adding minimum password complexity to application_settings, so we can let administrators to customize the password complexity. The chars used in a password can be covered by 4 types, uppercase letters, lowercase letters, numbers and symbols, so the the max value of this column should be 4.

The default value of this column is set to 1 to not change the default behaviors of password validations, the password can be set to any chars if the password complexity is 1.

Screenshots or screen recordings

The following images that shows that final stage of this feature, but the frontend part is not included in this MR.

before after Validation from PW creation failed validation
before 1 2 Failed

How to set up and validate locally

bundle exec rspec ee/spec/features/users/signup_spec.rb

Database

Migrations

rails db:migrate:up VERSION=20220329092245

== 20220329092245 AddPasswordCharsRequirementToApplicationSettings: migrating =
-- add_column(:application_settings, :password_uppercase_required, :boolean, {:default=>false, :null=>false})
   -> 0.0042s
-- add_column(:application_settings, :password_lowercase_required, :boolean, {:default=>false, :null=>false})
   -> 0.0013s
-- add_column(:application_settings, :password_number_required, :boolean, {:default=>false, :null=>false})
   -> 0.0012s
-- add_column(:application_settings, :password_symbol_required, :boolean, {:default=>false, :null=>false})
   -> 0.0015s
== 20220329092245 AddPasswordCharsRequirementToApplicationSettings: migrated (0.0084s)


rails db:migrate:down VERSION=20220329092245

== 20220329092245 AddPasswordCharsRequirementToApplicationSettings: reverting =
-- remove_column(:application_settings, :password_symbol_required, :boolean, {:default=>false, :null=>false})
   -> 0.0032s
-- remove_column(:application_settings, :password_number_required, :boolean, {:default=>false, :null=>false})
   -> 0.0012s
-- remove_column(:application_settings, :password_lowercase_required, :boolean, {:default=>false, :null=>false})
   -> 0.0017s
-- remove_column(:application_settings, :password_uppercase_required, :boolean, {:default=>false, :null=>false})
   -> 0.0013s
== 20220329092245 AddPasswordCharsRequirementToApplicationSettings: reverted (0.0097s)

MR acceptance checklist

This checklist encourages us to confirm any changes have been analyzed to reduce risks in quality, performance, reliability, security, and maintainability.

Edited by ARCHIVED - Martin Tan

Merge request reports