Added option to automaticaly generate passwords for new users.
This commit is contained in:
parent
bea0583951
commit
4426bc1844
4 changed files with 47 additions and 12 deletions
11
app/assets/javascripts/admin.js
Normal file
11
app/assets/javascripts/admin.js
Normal 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');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
|
@ -5,7 +5,10 @@ class User < ActiveRecord::Base
|
||||||
:recoverable, :rememberable, :trackable, :validatable, :omniauthable
|
:recoverable, :rememberable, :trackable, :validatable, :omniauthable
|
||||||
|
|
||||||
attr_accessible :email, :password, :password_confirmation, :remember_me, :bio,
|
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 :users_projects, :dependent => :destroy
|
||||||
has_many :projects, :through => :users_projects
|
has_many :projects, :through => :users_projects
|
||||||
|
@ -56,7 +59,7 @@ class User < ActiveRecord::Base
|
||||||
before_validation :generate_password, :on => :create
|
before_validation :generate_password, :on => :create
|
||||||
|
|
||||||
def generate_password
|
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)
|
self.password = self.password_confirmation = Devise.friendly_token.first(8)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -18,12 +18,21 @@
|
||||||
.input
|
.input
|
||||||
= f.text_field :email
|
= f.text_field :email
|
||||||
%span.help-inline * required
|
%span.help-inline * required
|
||||||
.clearfix
|
%hr
|
||||||
= f.label :password
|
|
||||||
.input= f.password_field :password
|
-if f.object.new_record?
|
||||||
.clearfix
|
.clearfix
|
||||||
= f.label :password_confirmation
|
= f.label :admin, :class => "checkbox" do
|
||||||
.input= f.password_field :password_confirmation
|
= 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
|
%hr
|
||||||
.clearfix
|
.clearfix
|
||||||
= f.label :skype
|
= f.label :skype
|
||||||
|
|
|
@ -22,10 +22,22 @@ describe User do
|
||||||
user.identifier.should == "test_mail_com"
|
user.identifier.should == "test_mail_com"
|
||||||
end
|
end
|
||||||
|
|
||||||
it "should generate password when password is empty" do
|
it "should execute callback when force_random_password specified" do
|
||||||
user = User.create(:email => "test1@mail.com")
|
user = User.new(:email => "test@mail.com", :force_random_password => true)
|
||||||
user.password.should eql(user.password_confirmation)
|
user.should_receive(:generate_password)
|
||||||
user.password.should_not be_empty
|
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
|
end
|
||||||
|
|
||||||
it "should have authentication token" do
|
it "should have authentication token" do
|
||||||
|
|
Loading…
Add table
Reference in a new issue