--- /dev/null
+$(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');
+ }
+ });
+});
: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
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
.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
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