double_auth_engine 0.0.4 → 0.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- double_auth_engine (0.0.3)
4
+ double_auth_engine (0.0.4)
5
5
  declarative_authorization
6
6
  friendly_id
7
7
  kb-authlogic
@@ -37,7 +37,7 @@ GEM
37
37
  activesupport (= 3.0.5)
38
38
  activesupport (3.0.5)
39
39
  arel (2.0.9)
40
- babosa (0.3.3)
40
+ babosa (0.3.4)
41
41
  builder (2.1.2)
42
42
  capybara (0.4.1.2)
43
43
  celerity (>= 0.7.9)
data/README.md CHANGED
@@ -46,6 +46,7 @@ A <del>strike</del> means its done!
46
46
 
47
47
  * <del>Add Authlogic</del>
48
48
  * <del>Add Password Reset</del>
49
+ * <del>Change Password</del>
49
50
  * <del>Update generator with ActionMailer monkey patch</del>
50
51
  * <del>Update install generator to add include to ApplicationController</del>
51
52
  * <del>Update README for mailer settings</del>
@@ -6,8 +6,8 @@
6
6
  </head>
7
7
  <body>
8
8
  <%= form_for @user_session do |f| %>
9
- <%= f.label :login, "Login or Email" %>
10
- <%= f.text_field :login %>
9
+ <%= f.label :email, "Email" %>
10
+ <%= f.text_field :email %>
11
11
  <%= f.label :password, "Password" %>
12
12
  <%= f.password_field :password %>
13
13
  <%= link_to 'Forgot Password?', forgot_password_path %>
@@ -0,0 +1,10 @@
1
+ <%= form_tag update_password_user_path(@user), :method => :put do %>
2
+ <%= label_tag :current_password, "Current Password:", :class => "required-field" %>
3
+ <%= password_field_tag :current_password %>
4
+ <%= label_tag :password, "New Password:", :class => "required-field" %>
5
+ <%= password_field_tag :password %>
6
+ <%= label_tag :password_confirmation, "Confirm New Password:", :class => "required-field" %>
7
+ <%= password_field_tag :password_confirmation %>
8
+ <%= submit_tag "Save" %>
9
+ <%= link_to "Cancel", user_path(@user) %>
10
+ <% end %>
@@ -8,8 +8,6 @@
8
8
  <%= form_for @user do |f| %>
9
9
  <%= f.label :name, "Name" %>
10
10
  <%= f.text_field :name %>
11
- <%= f.label :login, "Login" %>
12
- <%= f.text_field :login %>
13
11
  <%= f.label :email, "Email" %>
14
12
  <%= f.text_field :email %>
15
13
  <%= f.label :password, "Password" %>
data/config/routes.rb CHANGED
@@ -3,7 +3,12 @@ Rails.application.routes.draw do
3
3
  match 'login', :to => 'user_sessions#new'
4
4
  match 'logout', :to => 'user_sessions#destroy'
5
5
 
6
- resources :users
6
+ resources :users do
7
+ member do
8
+ get "change_password"
9
+ put "update_password"
10
+ end
11
+ end
7
12
  resources :user_sessions
8
13
 
9
14
  match '/forgot_password', :controller => 'password_resets', :action => 'new'
@@ -3,7 +3,7 @@ module DoubleAuthEngine
3
3
  def self.included(base)
4
4
  base.class_eval do
5
5
  skip_before_filter :require_user, :only => [:new, :create]
6
- filter_access_to [:edit, :update], :attribute_check => true
6
+ filter_access_to [:edit, :update, :change_password, :update_password], :attribute_check => true
7
7
  respond_to :html, :json, :js
8
8
  end
9
9
  base.send :include, InstanceMethods
@@ -60,6 +60,24 @@ module DoubleAuthEngine
60
60
  format.xml { head :ok }
61
61
  end
62
62
  end
63
+
64
+ def update_password
65
+ @user = User.find(params[:id])
66
+ if @user.valid_password? params[:current_password]
67
+ @user.password = params[:password]
68
+ @user.password_confirmation = params[:password_confirmation]
69
+ if @user.save
70
+ flash[:notice] = "Your password has been updated"
71
+ redirect_to user_path(@user)
72
+ else
73
+ flash[:error] = @user.errors.full_messages.first
74
+ render :action => "change_password"
75
+ end
76
+ else
77
+ flash[:error] = "Your Current Password Does not Match"
78
+ render :action => "change_password"
79
+ end
80
+ end
63
81
  end
64
82
  end
65
83
  end
@@ -1,6 +1,7 @@
1
1
  authorization do
2
2
  role :guest do
3
- has_permission_on :users, :to => [:modify, :destroy] do
3
+ has_permission_on :users, :to => [:add, :read]
4
+ has_permission_on :users, :to => [:modify, :destroy, :change_password, :update_password] do
4
5
  if_attribute :id => is { user.id }
5
6
  end
6
7
  end
@@ -16,4 +17,4 @@ privileges do
16
17
  privilege :modify, :includes => [:edit, :update]
17
18
  privilege :read, :includes => [:index, :show]
18
19
  privilege :write, :includes => [:add, :modify]
19
- end
20
+ end
@@ -1,3 +1,3 @@
1
1
  module DoubleAuthEngine
2
- VERSION = "0.0.4"
2
+ VERSION = "0.0.5"
3
3
  end
@@ -1,7 +1,7 @@
1
1
  authorization do
2
2
  role :guest do
3
3
  has_permission_on :users, :to => [:add, :read]
4
- has_permission_on :users, :to => [:modify, :destroy] do
4
+ has_permission_on :users, :to => [:modify, :destroy, :change_password, :update_password] do
5
5
  if_attribute :id => is { user.id }
6
6
  end
7
7
  end
@@ -47,6 +47,7 @@ describe "User Authorizations" do
47
47
  :password_confirmation => "testing",
48
48
  :email => Faker::Internet.email)
49
49
  end
50
+
50
51
  it "to access the 'edit' action for another user" do
51
52
  should_not_be_allowed_to(:edit, @alt_user)
52
53
  end
@@ -58,6 +59,14 @@ describe "User Authorizations" do
58
59
  it "to access the 'destroy' action for another user" do
59
60
  should_not_be_allowed_to(:update, @alt_user)
60
61
  end
62
+
63
+ it "to access the 'change_password' action for another user" do
64
+ should_not_be_allowed_to(:change_password, @alt_user)
65
+ end
66
+
67
+ it "to access the 'update_password' action for another user" do
68
+ should_not_be_allowed_to(:update_password, @alt_user)
69
+ end
61
70
  end
62
71
  end
63
72
 
@@ -122,4 +122,26 @@ describe UsersController do
122
122
  assigns[:users].should_not be_nil
123
123
  end
124
124
  end
125
+
126
+ describe "PUT 'update_password'" do
127
+ it "should render the change_password template if the current password does not match the supplied current password" do
128
+ controller.current_user.stub(:valid_password?).and_return(false)
129
+ put :update_password, :id => controller.current_user.id
130
+ response.should render_template("change_password")
131
+ end
132
+
133
+ it "should render the change_password template if the new password does not match the password_confirmation" do
134
+ controller.current_user.stub(:valid_password?).and_return(true)
135
+ controller.current_user.stub(:save).and_return(false)
136
+ put :update_password, :id => controller.current_user.id
137
+ response.should render_template("change_password")
138
+ end
139
+
140
+ it "should redirect to the user profile page if the password change is successful" do
141
+ controller.current_user.stub(:valid_password?).and_return(true)
142
+ controller.current_user.stub(:save).and_return(true)
143
+ put :update_password, :id => controller.current_user.id
144
+ response.status.should == 200
145
+ end
146
+ end
125
147
  end
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: double_auth_engine
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.0.4
5
+ version: 0.0.5
6
6
  platform: ruby
7
7
  authors:
8
8
  - Kyle Bolton
@@ -10,7 +10,7 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2011-05-05 00:00:00 -04:00
13
+ date: 2011-05-11 00:00:00 -04:00
14
14
  default_executable:
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
@@ -74,6 +74,7 @@ files:
74
74
  - app/views/password_resets/edit.html.erb
75
75
  - app/views/password_resets/new.html.erb
76
76
  - app/views/user_sessions/new.html.erb
77
+ - app/views/users/change_password.html.erb
77
78
  - app/views/users/edit.html.erb
78
79
  - app/views/users/index.html.erb
79
80
  - app/views/users/new.html.erb