]> source.dussan.org Git - redmine.git/commitdiff
Makes minimum password length configurable.
authorJean-Philippe Lang <jp_lang@yahoo.fr>
Tue, 21 Apr 2009 13:43:57 +0000 (13:43 +0000)
committerJean-Philippe Lang <jp_lang@yahoo.fr>
Tue, 21 Apr 2009 13:43:57 +0000 (13:43 +0000)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@2678 e93f8b46-1217-0410-a6f0-8f06a7374b81

40 files changed:
app/models/user.rb
app/views/account/register.rhtml
app/views/my/password.rhtml
app/views/settings/_authentication.rhtml
app/views/users/_form.rhtml
config/locales/bg.yml
config/locales/bs.yml
config/locales/ca.yml
config/locales/cs.yml
config/locales/da.yml
config/locales/de.yml
config/locales/en.yml
config/locales/es.yml
config/locales/fi.yml
config/locales/fr.yml
config/locales/gl.yml
config/locales/he.yml
config/locales/hu.yml
config/locales/it.yml
config/locales/ja.yml
config/locales/ko.yml
config/locales/lt.yml
config/locales/nl.yml
config/locales/no.yml
config/locales/pl.yml
config/locales/pt-BR.yml
config/locales/pt.yml
config/locales/ro.yml
config/locales/ru.yml
config/locales/sk.yml
config/locales/sl.yml
config/locales/sr.yml
config/locales/sv.yml
config/locales/th.yml
config/locales/tr.yml
config/locales/uk.yml
config/locales/vi.yml
config/locales/zh-TW.yml
config/locales/zh.yml
config/settings.yml

index 63393a6d537d6d81719a7818ebfe70805a166a09..3c9a1c753e065c5afe7b89d6b1827a820f01cd80 100644 (file)
@@ -62,7 +62,6 @@ class User < ActiveRecord::Base
   validates_length_of :firstname, :lastname, :maximum => 30
   validates_format_of :mail, :with => /^([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})$/i, :allow_nil => true
   validates_length_of :mail, :maximum => 60, :allow_nil => true
-  validates_length_of :password, :minimum => 4, :allow_nil => true
   validates_confirmation_of :password, :allow_nil => true
 
   def before_create
@@ -297,7 +296,17 @@ class User < ActiveRecord::Base
     anonymous_user
   end
   
-private
+  protected
+  
+  def validate
+    # Password length validation based on setting
+    if !password.nil? && password.size < Setting.password_min_length.to_i
+      errors.add(:password, :too_short, :count => Setting.password_min_length.to_i)
+    end
+  end
+  
+  private
+  
   # Return password digest
   def self.hash_password(clear_password)
     Digest::SHA1.hexdigest(clear_password || "")
index f9f388ae4fbe54bebd8770bfc27689702a16f94d..8498d1354dd228cc9d97d5d16f4001b2467fb51d 100644 (file)
@@ -11,7 +11,7 @@
 
 <p><label for="password"><%=l(:field_password)%> <span class="required">*</span></label>
 <%= password_field_tag 'password', nil, :size => 25  %><br />
-<em><%= l(:text_caracters_minimum, 4) %></em></p>
+<em><%= l(:text_caracters_minimum, :count => Setting.password_min_length) %></em></p>
 
 <p><label for="password_confirmation"><%=l(:field_password_confirmation)%> <span class="required">*</span></label>
 <%= password_field_tag 'password_confirmation', nil, :size => 25  %></p>
index 2e9fd0fa466dee89cfdd112fa472a758b69d3ab2..cac79342c0ebaecf8b609e391ceb8403817f8534 100644 (file)
@@ -9,7 +9,7 @@
 
 <p><label for="new_password"><%=l(:field_new_password)%> <span class="required">*</span></label>
 <%= password_field_tag 'new_password', nil, :size => 25 %><br />
-<em><%= l(:text_caracters_minimum, 4) %></em></p>
+<em><%= l(:text_caracters_minimum, :count => Setting.password_min_length) %></em></p>
 
 <p><label for="new_password_confirmation"><%=l(:field_password_confirmation)%> <span class="required">*</span></label>
 <%= password_field_tag 'new_password_confirmation', nil, :size => 25 %></p>
index ec8a0be965603814ac95b85acd1c76bf5af059be..25d344da6a29ae9714e92f2a28d8a28465831af8 100644 (file)
@@ -15,6 +15,9 @@
                            [l(:label_registration_automatic_activation), "3"]
                           ], Setting.self_registration ) %></p>
 
+<p><label><%= l(:setting_password_min_length) %></label>
+<%= text_field_tag 'settings[password_min_length]', Setting.password_min_length, :size => 6 %></p>
+
 <p><label><%= l(:label_password_lost) %></label>
 <%= check_box_tag 'settings[lost_password]', 1, Setting.lost_password? %><%= hidden_field_tag 'settings[lost_password]', 0 %></p>
 
index 90d6ba577dc7b52c1464ef533962d2c100143fe4..24e0b912be492c41ad31355698aef7b779e17d02 100644 (file)
@@ -27,7 +27,7 @@
 <div id="password_fields" style="<%= 'display:none;' if @user.auth_source %>">
 <p><label for="password"><%=l(:field_password)%><span class="required"> *</span></label>
 <%= password_field_tag 'password', nil, :size => 25  %><br />
-<em><%= l(:text_caracters_minimum, 4) %></em></p>
+<em><%= l(:text_caracters_minimum, :count => Setting.password_min_length) %></em></p>
 <p><label for="password_confirmation"><%=l(:field_password_confirmation)%><span class="required"> *</span></label>
 <%= password_field_tag 'password_confirmation', nil, :size => 25  %></p>
 </div>
index 500cc5713c19fda5dab3d3683644326fcabcfd12..0426bd193dfe184a72daff7afd1888fb3d40dd9a 100644 (file)
@@ -788,3 +788,4 @@ bg:
   text_wiki_page_reassign_children: Reassign child pages to this parent page
   text_wiki_page_nullify_children: Keep child pages as root pages
   text_wiki_page_destroy_children: Delete child pages and all their descendants
+  setting_password_min_length: Minimum password length
index a064372efe9c6cac3a9fb0b8051fbd7f5a8ebb1a..3a4fe13e29cbf20dcbccf5f508ad7ba71ed495de 100644 (file)
@@ -821,3 +821,4 @@ bs:
   text_wiki_page_reassign_children: Reassign child pages to this parent page\r
   text_wiki_page_nullify_children: Keep child pages as root pages\r
   text_wiki_page_destroy_children: Delete child pages and all their descendants\r
+  setting_password_min_length: Minimum password length\r
index 8d435241d315bc871c6ec29b40c283394de73fcc..75c2690806f9bbf54ecfb880cc26bd0f2647c691 100644 (file)
@@ -791,3 +791,4 @@ ca:
   text_wiki_page_reassign_children: Reassign child pages to this parent page
   text_wiki_page_nullify_children: Keep child pages as root pages
   text_wiki_page_destroy_children: Delete child pages and all their descendants
+  setting_password_min_length: Minimum password length
index ab8f27fc85cd2ae45927dfd8e51d1b66797ec713..c6cb412d1148cb0bef6f1eb93582e26587a00b44 100644 (file)
@@ -794,3 +794,4 @@ cs:
   text_wiki_page_reassign_children: Reassign child pages to this parent page
   text_wiki_page_nullify_children: Keep child pages as root pages
   text_wiki_page_destroy_children: Delete child pages and all their descendants
+  setting_password_min_length: Minimum password length
index 704c5e4e8657b3fac5feb186030b1daa8137c042..ec4a81256f4134c832fb1ed2c0fadcb875f6dea3 100644 (file)
@@ -821,3 +821,4 @@ da:
   text_wiki_page_reassign_children: Reassign child pages to this parent page
   text_wiki_page_nullify_children: Keep child pages as root pages
   text_wiki_page_destroy_children: Delete child pages and all their descendants
+  setting_password_min_length: Minimum password length
index 3f9cd17a662345ea30332b3a2ce38fa78bea467c..9628f5819dd34e511553b2b3b18ecd223bc6caea 100644 (file)
@@ -820,3 +820,4 @@ de:
   text_wiki_page_reassign_children: Reassign child pages to this parent page
   text_wiki_page_nullify_children: Keep child pages as root pages
   text_wiki_page_destroy_children: Delete child pages and all their descendants
+  setting_password_min_length: Minimum password length
index fd1ed6c51ac44d6d44fcb13b47e5036e6e5d198a..85576603929bb3270d3a91f93e745b359d482a84 100644 (file)
@@ -285,6 +285,7 @@ en:
   setting_file_max_size_displayed: Max size of text files displayed inline
   setting_repository_log_display_limit: Maximum number of revisions displayed on file log
   setting_openid: Allow OpenID login and registration
+  setting_password_min_length: Minimum password length
   
   permission_edit_project: Edit project
   permission_select_project_modules: Select project modules
index c37b96c64f518f68a747115109434a20267ad9ee..c82b3ac50d8aad6829e8eff15be00a6eba7a3c0a 100644 (file)
@@ -841,3 +841,4 @@ es:
   text_wiki_page_reassign_children: Reassign child pages to this parent page
   text_wiki_page_nullify_children: Keep child pages as root pages
   text_wiki_page_destroy_children: Delete child pages and all their descendants
+  setting_password_min_length: Minimum password length
index 9c35cb4499063d582b152fd46008347cea0038fa..572d25c852ab29ac9011740ba2349e92ddf48c54 100644 (file)
@@ -831,3 +831,4 @@ fi:
   text_wiki_page_reassign_children: Reassign child pages to this parent page
   text_wiki_page_nullify_children: Keep child pages as root pages
   text_wiki_page_destroy_children: Delete child pages and all their descendants
+  setting_password_min_length: Minimum password length
index ddd349c69f64462b8e7e481348b63ccc762a78e9..9d6aad12270c8ef92840dc55b20e559d011283e2 100644 (file)
@@ -317,6 +317,7 @@ fr:
   setting_file_max_size_displayed: Taille maximum des fichiers texte affichés en ligne
   setting_repository_log_display_limit: "Nombre maximum de revisions affichées sur l'historique d'un fichier"
   setting_openid: "Autoriser l'authentification et l'enregistrement OpenID"
+  setting_password_min_length: Longueur minimum des mots de passe
   
   permission_edit_project: Modifier le projet
   permission_select_project_modules: Choisir les modules
index 9ccd9574ee4be1180ce9dbfee834f365ba72ded4..8e5b980011ebb91ad8fe2e2356368314607cd272 100644 (file)
@@ -820,3 +820,4 @@ gl:
   text_wiki_page_reassign_children: Reassign child pages to this parent page
   text_wiki_page_nullify_children: Keep child pages as root pages
   text_wiki_page_destroy_children: Delete child pages and all their descendants
+  setting_password_min_length: Minimum password length
index 4941240b7ffd6bf4275f6646133449e4819a109a..40ae33a7f6010b6676d638bee55c3b5700c5ac14 100644 (file)
@@ -803,3 +803,4 @@ he:
   text_wiki_page_reassign_children: Reassign child pages to this parent page
   text_wiki_page_nullify_children: Keep child pages as root pages
   text_wiki_page_destroy_children: Delete child pages and all their descendants
+  setting_password_min_length: Minimum password length
index a4ac468e784e60389f485cd34fd4cd8b6068e118..ece1d11b7c75099cef50212f44b8b26835e71bde 100644 (file)
   text_wiki_page_reassign_children: Reassign child pages to this parent page
   text_wiki_page_nullify_children: Keep child pages as root pages
   text_wiki_page_destroy_children: Delete child pages and all their descendants
+  setting_password_min_length: Minimum password length
index 58ee928abee158d5a2cba02ead27aac17dd654c1..0aa19443df2df85f30272522ce7db91b9f5f4929 100644 (file)
@@ -806,3 +806,4 @@ it:
   text_wiki_page_reassign_children: Reassign child pages to this parent page
   text_wiki_page_nullify_children: Keep child pages as root pages
   text_wiki_page_destroy_children: Delete child pages and all their descendants
+  setting_password_min_length: Minimum password length
index 5574aee63787fdc79be5cbf02ee643c6147cfc3e..1d07aefa8f14083dd928026da688ceddff0317f0 100644 (file)
@@ -819,3 +819,4 @@ ja:
   text_wiki_page_reassign_children: Reassign child pages to this parent page
   text_wiki_page_nullify_children: Keep child pages as root pages
   text_wiki_page_destroy_children: Delete child pages and all their descendants
+  setting_password_min_length: Minimum password length
index 0b323fe1e95647e7c2d401bd56931fb3efa253ef..85b49c5f2ca739a8bbb4349b769c42db1d0943a7 100644 (file)
@@ -850,3 +850,4 @@ ko:
   text_wiki_page_reassign_children: Reassign child pages to this parent page
   text_wiki_page_nullify_children: Keep child pages as root pages
   text_wiki_page_destroy_children: Delete child pages and all their descendants
+  setting_password_min_length: Minimum password length
index dd6b029cacf6aa391d419fbfa6a2256ca6bee583..8ee71b42fa328e0db16c69cfe82d7f2f9a530710 100644 (file)
@@ -831,3 +831,4 @@ lt:
   text_wiki_page_reassign_children: Reassign child pages to this parent page
   text_wiki_page_nullify_children: Keep child pages as root pages
   text_wiki_page_destroy_children: Delete child pages and all their descendants
+  setting_password_min_length: Minimum password length
index b5728fbb3a2d9f1c14bc935e086e8c4ab05baf5d..8aea6cb23693a07c1120899f1685cc3c8d4e72b5 100644 (file)
@@ -776,3 +776,4 @@ nl:
   text_wiki_page_reassign_children: Reassign child pages to this parent page
   text_wiki_page_nullify_children: Keep child pages as root pages
   text_wiki_page_destroy_children: Delete child pages and all their descendants
+  setting_password_min_length: Minimum password length
index 3eb1dbabafc6c6d0c200c1a6f2f46043c4e87c38..83041cf1029309b8c005fd0b8a3831cd26541ee5 100644 (file)
   text_wiki_page_reassign_children: Reassign child pages to this parent page
   text_wiki_page_nullify_children: Keep child pages as root pages
   text_wiki_page_destroy_children: Delete child pages and all their descendants
+  setting_password_min_length: Minimum password length
index 936683e8429df6f0e07488575dad3f24cfbf05b3..105b4e16948f9cb63bff7629f1511c4b6922d9ed 100644 (file)
@@ -824,3 +824,4 @@ pl:
   text_wiki_page_reassign_children: Reassign child pages to this parent page
   text_wiki_page_nullify_children: Keep child pages as root pages
   text_wiki_page_destroy_children: Delete child pages and all their descendants
+  setting_password_min_length: Minimum password length
index bd065e5d32fae6dc3d4d263277b0ed62367c4826..80883adfd06d3088ea5f2d802367c993f8c10c70 100644 (file)
@@ -826,3 +826,4 @@ pt-BR:
   text_wiki_page_reassign_children: Reassign child pages to this parent page
   text_wiki_page_nullify_children: Keep child pages as root pages
   text_wiki_page_destroy_children: Delete child pages and all their descendants
+  setting_password_min_length: Minimum password length
index aa8e672d566166a54d469e2677e6a7bd72b1893b..f2b08ec2ec7ec2f54c73e4e520f5a62e7fec81ae 100644 (file)
@@ -812,3 +812,4 @@ pt:
   text_wiki_page_reassign_children: Reassign child pages to this parent page
   text_wiki_page_nullify_children: Keep child pages as root pages
   text_wiki_page_destroy_children: Delete child pages and all their descendants
+  setting_password_min_length: Minimum password length
index fe144c703c9eb4edd4961ad1b2097a048cf86a0c..e7dd09b9465c304c2bd6b5171f56a7394bc9f1c0 100644 (file)
@@ -791,3 +791,4 @@ ro:
   text_wiki_page_reassign_children: Reassign child pages to this parent page
   text_wiki_page_nullify_children: Keep child pages as root pages
   text_wiki_page_destroy_children: Delete child pages and all their descendants
+  setting_password_min_length: Minimum password length
index 668a2c7da3adf66d6ec192b6e7df77f32ba3a88a..844a82bd3a3e10e418a1a8e35b7132fc0e2db7a5 100644 (file)
@@ -918,3 +918,4 @@ ru:
   text_wiki_page_reassign_children: Reassign child pages to this parent page
   text_wiki_page_nullify_children: Keep child pages as root pages
   text_wiki_page_destroy_children: Delete child pages and all their descendants
+  setting_password_min_length: Minimum password length
index 6cd573fb1dfa719f1a968a7df77c177b4840c776..37a3fefc388fe88d91cf088813e1b202a0932d53 100644 (file)
@@ -792,3 +792,4 @@ sk:
   text_wiki_page_reassign_children: Reassign child pages to this parent page
   text_wiki_page_nullify_children: Keep child pages as root pages
   text_wiki_page_destroy_children: Delete child pages and all their descendants
+  setting_password_min_length: Minimum password length
index 5ccd5b7fd49f15b729ec6c649dddb091447d2bcd..079e488a6ef94cfcfb14dbc6266ba6ce71694454 100644 (file)
@@ -790,3 +790,4 @@ sl:
   text_wiki_page_reassign_children: Reassign child pages to this parent page
   text_wiki_page_nullify_children: Keep child pages as root pages
   text_wiki_page_destroy_children: Delete child pages and all their descendants
+  setting_password_min_length: Minimum password length
index b2b61a1c2118a628533ed3b214a56661b981dca0..09220c91397b09c4ea82bc0287870ae3a674c4dd 100644 (file)
   text_wiki_page_reassign_children: Reassign child pages to this parent page
   text_wiki_page_nullify_children: Keep child pages as root pages
   text_wiki_page_destroy_children: Delete child pages and all their descendants
+  setting_password_min_length: Minimum password length
index d532d4aa3228c3030c3b7b3a9496c55cba54c9ad..b3e3c139c668442d1f0a211c8e035b11aecf2952 100644 (file)
@@ -848,3 +848,4 @@ sv:
   text_wiki_page_reassign_children: Reassign child pages to this parent page
   text_wiki_page_nullify_children: Keep child pages as root pages
   text_wiki_page_destroy_children: Delete child pages and all their descendants
+  setting_password_min_length: Minimum password length
index 9de605691a9c0132e3d6ef6bba3cdb4fa283e7ee..a19f315ef3f79866d352dc9739f1f8dcdd681451 100644 (file)
@@ -791,3 +791,4 @@ th:
   text_wiki_page_reassign_children: Reassign child pages to this parent page
   text_wiki_page_nullify_children: Keep child pages as root pages
   text_wiki_page_destroy_children: Delete child pages and all their descendants
+  setting_password_min_length: Minimum password length
index 068c4ec4131c64dfa55626bf02e87aa6b4927f71..0d47a8c84f261244128a3a48bf2fbebb857139d3 100644 (file)
@@ -827,3 +827,4 @@ tr:
   text_wiki_page_reassign_children: Reassign child pages to this parent page
   text_wiki_page_nullify_children: Keep child pages as root pages
   text_wiki_page_destroy_children: Delete child pages and all their descendants
+  setting_password_min_length: Minimum password length
index 23edbd172dcad3870a09fa05ce6fd155faf6046e..0762090b6b186bc4d1215fe8dd41dbf52d05ae5b 100644 (file)
@@ -790,3 +790,4 @@ uk:
   text_wiki_page_reassign_children: Reassign child pages to this parent page
   text_wiki_page_nullify_children: Keep child pages as root pages
   text_wiki_page_destroy_children: Delete child pages and all their descendants
+  setting_password_min_length: Minimum password length
index 0a8f82156aa2ea8982ec1cdda7f03256a837253d..6190a19407b95f412faa61927356402b5437bbf4 100644 (file)
@@ -860,3 +860,4 @@ vi:
   text_wiki_page_reassign_children: Reassign child pages to this parent page
   text_wiki_page_nullify_children: Keep child pages as root pages
   text_wiki_page_destroy_children: Delete child pages and all their descendants
+  setting_password_min_length: Minimum password length
index 7a322c10272895d282a8dd32aec01ac23b05984f..86288a9b561f7263056cd193fccee42c3c005281 100644 (file)
   text_wiki_page_reassign_children: Reassign child pages to this parent page
   text_wiki_page_nullify_children: Keep child pages as root pages
   text_wiki_page_destroy_children: Delete child pages and all their descendants
+  setting_password_min_length: Minimum password length
index 5ae2411bf085ece606f338da3c660d1105b94f3f..83bd5bcf1ac7402c9b1c10346de0854954cf8b11 100644 (file)
@@ -823,3 +823,4 @@ zh:
   text_wiki_page_reassign_children: Reassign child pages to this parent page
   text_wiki_page_nullify_children: Keep child pages as root pages
   text_wiki_page_destroy_children: Delete child pages and all their descendants
+  setting_password_min_length: Minimum password length
index 38b0a44c8fb8a76d469868e722a2100841880f6b..5d4d6ff14022a6890639541ee23fb2c0df15dd5c 100644 (file)
@@ -31,6 +31,9 @@ self_registration:
   default: '2'
 lost_password:
   default: 1
+password_min_length:
+  format: int
+  default: 4
 attachment_max_size:
   format: int
   default: 5120