Added option to automaticaly generate passwords for new users.

This commit is contained in:
Jakub Troszok 2012-06-26 23:59:08 +02:00
parent bea0583951
commit 4426bc1844
4 changed files with 47 additions and 12 deletions

View file

@ -0,0 +1,11 @@
$(document).ready(function(){
$('input#user_force_random_password').on('change', function(elem) {
var elems = $('#user_password, #user_password_confirmation');
if ($(this).attr('checked')) {
elems.val('').attr('disabled', true);
} else {
elems.removeAttr('disabled');
}
});
});

View file

@ -5,7 +5,10 @@ class User < ActiveRecord::Base
:recoverable, :rememberable, :trackable, :validatable, :omniauthable
attr_accessible :email, :password, :password_confirmation, :remember_me, :bio,
:name, :projects_limit, :skype, :linkedin, :twitter, :dark_scheme, :theme_id
:name, :projects_limit, :skype, :linkedin, :twitter, :dark_scheme,
:theme_id, :force_random_password
attr_accessor :force_random_password
has_many :users_projects, :dependent => :destroy
has_many :projects, :through => :users_projects
@ -56,7 +59,7 @@ class User < ActiveRecord::Base
before_validation :generate_password, :on => :create
def generate_password
if self.password.blank? && self.password_confirmation.blank?
if self.force_random_password == true
self.password = self.password_confirmation = Devise.friendly_token.first(8)
end
end

View file

@ -18,12 +18,21 @@
.input
= f.text_field :email
%span.help-inline * required
.clearfix
= f.label :password
.input= f.password_field :password
.clearfix
= f.label :password_confirmation
.input= f.password_field :password_confirmation
%hr
-if f.object.new_record?
.clearfix
= f.label :admin, :class => "checkbox" do
= f.check_box :force_random_password
%span Generate random password
%div.password-fields
.clearfix
= f.label :password
.input= f.password_field :password, :disabled => f.object.force_random_password
.clearfix
= f.label :password_confirmation
.input= f.password_field :password_confirmation, :disabled => f.object.force_random_password
%hr
.clearfix
= f.label :skype

View file

@ -22,10 +22,22 @@ describe User do
user.identifier.should == "test_mail_com"
end
it "should generate password when password is empty" do
user = User.create(:email => "test1@mail.com")
user.password.should eql(user.password_confirmation)
user.password.should_not be_empty
it "should execute callback when force_random_password specified" do
user = User.new(:email => "test@mail.com", :force_random_password => true)
user.should_receive(:generate_password)
user.save
end
it "should not generate password by default" do
user = Factory(:user, :password => 'abcdefg', :password_confirmation => 'abcdefg')
user.password.should == 'abcdefg'
end
it "should generate password when forcing random password" do
Devise.stub(:friendly_token).and_return('123456789')
user = User.create(:email => "test1@mail.com", :force_random_password => true)
user.password.should == user.password_confirmation
user.password.should == '12345678'
end
it "should have authentication token" do