devise_masquerade 0.5.3 → 0.6.0

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.

Potentially problematic release.


This version of devise_masquerade might be problematic. Click here for more details.

checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: bf92dd8ac9972b55c63ff7b7b45527dc6dbedecc
4
- data.tar.gz: c844f06c0b9124705dff331aea2bae877b342587
3
+ metadata.gz: 7697f7796ae221a16c23706efcc051b1209a9e4d
4
+ data.tar.gz: 4c813e1baeda19e25d225bd1c35b56bae5689563
5
5
  SHA512:
6
- metadata.gz: bbc8724e293c172038bd0ef62bcff064b9f206bf65f410f99cf49826a8d99d863c9098d87e1b0d1330a63bfe45ba626fa63fba3e627472e31bd0fd779b6b8a0b
7
- data.tar.gz: 002b0d76daac1a263bf64d8d7512059475612e2df0e37e52a29b2a297760a2df62c33c54712289e262edeaebee1664a0d8fab1c4030f263538495284fb2ce776
6
+ metadata.gz: b7b250e0c7fa601ddb5620b761dcf6609c4fa8b941ec7852ca0a2bab15ee4277d909f370177f9480d92b3bcd07e04bf9bc3f8b042223c33c2220d47ea4a8751d
7
+ data.tar.gz: 11b1f301ff06051b7219b5ff446dedd54cf9f05b3e2cd2e8ee4697678e6ca6d5e4c5d13e224d7551e32001b3920ae7cc54b0483f4bfee240a42942bdd88deab3
data/README.md CHANGED
@@ -34,11 +34,15 @@ In the view you can use url helper for defining link:
34
34
 
35
35
  In the model you'll need to add the parameter :masqueradable to the existing comma separated values in the devise method:
36
36
 
37
+ ```ruby
37
38
  devise :invitable, :confirmable, :database_authenticatable, :registerable, :masqueradable
39
+ ```
38
40
 
39
41
  Add into your application_controller.rb:
40
42
 
43
+ ```ruby
41
44
  before_action :masquerade_user!
45
+ ```
42
46
 
43
47
  Instead of user you can use your resource name admin, student or another names.
44
48
 
@@ -51,6 +55,7 @@ helpers:
51
55
 
52
56
  ## Custom controller for adding cancan for authorization
53
57
 
58
+ ```ruby
54
59
  class Admin::MasqueradesController < Devise::MasqueradesController
55
60
  def show
56
61
  super
@@ -67,9 +72,33 @@ helpers:
67
72
  # <has access to something?> (true/false)
68
73
  # end
69
74
  end
75
+ ```
76
+
77
+ ## Alternatively using Pundit
78
+
79
+ Controller:
80
+
81
+ ```ruby
82
+ class Admin::MasqueradesController < Devise::MasqueradesController
83
+ protected
84
+
85
+ def masquerade_authorize!
86
+ authorize(User, :masquerade?) unless params[:action] == 'back'
87
+ end
88
+ end
89
+ ```
90
+
91
+ In your view:
92
+
93
+ ```erb
94
+ <% if policy(@user).masquerade? %>
95
+ <%= link_to "Login as", masquerade_path(@user) %>
96
+ <% end %>
97
+ ```
70
98
 
71
99
  ## Custom url redirect after masquerade:
72
100
 
101
+ ```ruby
73
102
  class Admin::MasqueradesController < Devise::MasqueradesController
74
103
  protected
75
104
 
@@ -77,20 +106,38 @@ helpers:
77
106
  "/custom_url"
78
107
  end
79
108
  end
109
+ ```
110
+
111
+ ## Overriding the finder
112
+
113
+ For example, if you use FriendlyId:
114
+
115
+ ```ruby
116
+ class Admin::MasqueradesController < Devise::MasqueradesController
117
+ protected
118
+
119
+ def find_resource
120
+ masqueraded_resource_class.friendly.find(params[:id])
121
+ end
122
+ end
123
+ ```
80
124
 
81
125
  #### Dont forget to update your Devise routes to point at your Custom Authorization Controller
82
126
  in `routes.rb`:
83
127
 
128
+ ```ruby
84
129
  devise_for :users, controllers: { masquerades: "admin/masquerades" }
85
-
130
+ ```
86
131
 
87
132
  ## You can redefine few options:
88
133
 
134
+ ```ruby
89
135
  Devise.masquerade_param = 'masquerade'
90
136
  Devise.masquerade_expires_in = 10.seconds
91
137
  Devise.masquerade_key_size = 16 # size of the generate by SecureRandom.urlsafe_base64
92
138
  Devise.masquerade_bypass_warden_callback = false
93
139
  Devise.masquerade_routes_back = false # if true, route back to the page the user was on via redirect_back
140
+ ```
94
141
 
95
142
  ## Demo project
96
143
 
@@ -103,12 +150,7 @@ And check http://localhost:3000/, use for login user1@example.com and
103
150
 
104
151
  ## Test project
105
152
 
106
- cd spec/dummy
107
- RAILS_ENV=test rake db:setup
108
- cd -
109
- rspec
110
- cucumber
111
-
153
+ make test
112
154
 
113
155
  ## Contributing
114
156
 
@@ -18,7 +18,7 @@ class Devise::MasqueradesController < DeviseController
18
18
  end
19
19
 
20
20
  def show
21
- self.resource = masqueraded_resource_class.to_adapter.find_first(:id => params[:id])
21
+ self.resource = find_resource
22
22
 
23
23
  unless self.resource
24
24
  flash[:error] = "#{masqueraded_resource_class} not found."
@@ -90,6 +90,10 @@ class Devise::MasqueradesController < DeviseController
90
90
  def masquerade_authorized?
91
91
  true
92
92
  end
93
+
94
+ def find_resource
95
+ masqueraded_resource_class.to_adapter.find_first(:id => params[:id])
96
+ end
93
97
 
94
98
  private
95
99
 
@@ -1,3 +1,3 @@
1
1
  module DeviseMasquerade
2
- VERSION = "0.5.3"
2
+ VERSION = "0.6.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: devise_masquerade
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.3
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alexandr Korsak
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-07-05 00:00:00.000000000 Z
11
+ date: 2017-07-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler