]> source.dussan.org Git - redmine.git/commitdiff
Fixed that "Default administrator account changed" is always true (#10622).
authorJean-Philippe Lang <jp_lang@yahoo.fr>
Mon, 9 Apr 2012 15:53:48 +0000 (15:53 +0000)
committerJean-Philippe Lang <jp_lang@yahoo.fr>
Mon, 9 Apr 2012 15:53:48 +0000 (15:53 +0000)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9379 e93f8b46-1217-0410-a6f0-8f06a7374b81

app/controllers/admin_controller.rb
app/models/user.rb
test/unit/user_test.rb

index 9684f5cbfca0f1abd6e2d379b23d573a4473c546..b8d4981f533b5c1aeeaa155174bb47ab9f7a66c9 100644 (file)
@@ -75,9 +75,7 @@ class AdminController < ApplicationController
   def info
     @db_adapter_name = ActiveRecord::Base.connection.adapter_name
     @checklist = [
-      [:text_default_administrator_account_changed,
-          User.find(:first,
-                    :conditions => ["login=? and hashed_password=?", 'admin', User.hash_password('admin')]).nil?],
+      [:text_default_administrator_account_changed, User.default_admin_account_changed?],
       [:text_file_repository_writable, File.writable?(Attachment.storage_path)],
       [:text_plugin_assets_writable,   File.writable?(Redmine::Plugin.public_directory)],
       [:text_rmagick_available,        Object.const_defined?(:Magick)]
index a37c4dffaee62ea097d3979f986e87586c8f5459..d1fa2822a77cf53591abf750b0f663d2e25212d6 100644 (file)
@@ -348,6 +348,11 @@ class User < Principal
     find(:first, :conditions => ["LOWER(mail) = ?", mail.to_s.downcase])
   end
 
+  # Returns true if the default admin account can no longer be used
+  def self.default_admin_account_changed?
+    !User.active.find_by_login("admin").try(:check_password?, "admin")
+  end
+
   def to_s
     name
   end
index 1c85625e90761351265a01a497d95cc8787978e3..e698207da148dbed36001c0ac95484c301a8e699 100644 (file)
@@ -630,6 +630,38 @@ class UserTest < ActiveSupport::TestCase
     end
   end
 
+  def test_default_admin_account_changed_should_return_false_if_account_was_not_changed
+    user = User.find_by_login("admin")
+    user.password = "admin"
+    user.save!
+
+    assert_equal false, User.default_admin_account_changed?
+  end
+
+  def test_default_admin_account_changed_should_return_true_if_password_was_changed
+    user = User.find_by_login("admin")
+    user.password = "newpassword"
+    user.save!
+
+    assert_equal true, User.default_admin_account_changed?
+  end
+
+  def test_default_admin_account_changed_should_return_true_if_account_is_disabled
+    user = User.find_by_login("admin")
+    user.password = "admin"
+    user.status = User::STATUS_LOCKED
+    user.save!
+
+    assert_equal true, User.default_admin_account_changed?
+  end
+
+  def test_default_admin_account_changed_should_return_true_if_account_does_not_exist
+    user = User.find_by_login("admin")
+    user.destroy
+
+    assert_equal true, User.default_admin_account_changed?
+  end
+
   def test_roles_for_project
     # user with a role
     roles = @jsmith.roles_for_project(Project.find(1))