devise_masquerade 0.0.3 → 0.0.4
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.
- data/.travis.yml +5 -0
- data/Guardfile +1 -0
- data/README.md +5 -3
- data/Rakefile +4 -0
- data/app/controllers/devise/masquerades_controller.rb +21 -1
- data/lib/devise_masquerade/controllers/url_helpers.rb +4 -0
- data/lib/devise_masquerade/routes.rb +1 -0
- data/lib/devise_masquerade/version.rb +1 -1
- data/spec/controllers/devise/masquerades_controller_spec.rb +24 -2
- data/spec/dummy/app/controllers/application_controller.rb +3 -0
- data/spec/models/user_spec.rb +0 -1
- metadata +3 -2
data/Guardfile
CHANGED
@@ -4,6 +4,7 @@ guard 'rspec', :cli => '--format documentation', :version => 2, :all_after_pass
|
|
4
4
|
watch(%r{^spec/support/.+\.rb$})
|
5
5
|
watch(%r{^lib/(.+)\.rb$}) { "spec" }
|
6
6
|
watch(%r{^lib/devise_masquerade/(.+)\.rb$}) { "spec" }
|
7
|
+
watch(%r{^lib/devise_masquerade/controllers/(.+)\.rb$}) { "spec" }
|
7
8
|
watch('spec/spec_helper.rb') { "spec" }
|
8
9
|
end
|
9
10
|
|
data/README.md
CHANGED
@@ -2,6 +2,8 @@
|
|
2
2
|
|
3
3
|
[](https://travis-ci.org/oivoodoo/devise_masquerade)
|
4
4
|
|
5
|
+
[](https://codeclimate.com/github/oivoodoo/devise_masquerade)
|
6
|
+
|
5
7
|
It's a utility library for enabling functionallity like login as button for
|
6
8
|
admin.
|
7
9
|
|
@@ -59,9 +61,9 @@ Instead of user you can use your resource name admin, student or another names.
|
|
59
61
|
|
60
62
|
## You can redefine few options:
|
61
63
|
|
62
|
-
|
63
|
-
|
64
|
-
|
64
|
+
Devise.masquerade_param = 'masquerade'
|
65
|
+
Devise.masquerade_expires_in = 10.seconds
|
66
|
+
Devise.masquerade_key_size = 16 # size of the generate by SecureRandom.base64
|
65
67
|
|
66
68
|
## Contributing
|
67
69
|
|
data/Rakefile
CHANGED
@@ -1,5 +1,7 @@
|
|
1
1
|
class Devise::MasqueradesController < DeviseController
|
2
|
-
prepend_before_filter :authenticate_scope
|
2
|
+
prepend_before_filter :authenticate_scope!
|
3
|
+
|
4
|
+
before_filter :save_masquerade_owner_session, :only => :show
|
3
5
|
|
4
6
|
def show
|
5
7
|
self.resource = resource_class.to_adapter.find_first(:id => params[:id])
|
@@ -11,6 +13,16 @@ class Devise::MasqueradesController < DeviseController
|
|
11
13
|
redirect_to("#{after_masquerade_path_for(self.resource)}?#{after_masquerade_param_for(resource)}")
|
12
14
|
end
|
13
15
|
|
16
|
+
def back
|
17
|
+
owner_user = resource_class.to_adapter.find_first(:id => session[session_key])
|
18
|
+
|
19
|
+
session[session_key] = nil
|
20
|
+
|
21
|
+
sign_in owner_user
|
22
|
+
|
23
|
+
redirect_to '/'
|
24
|
+
end
|
25
|
+
|
14
26
|
private
|
15
27
|
|
16
28
|
def authenticate_scope!
|
@@ -24,5 +36,13 @@ class Devise::MasqueradesController < DeviseController
|
|
24
36
|
def after_masquerade_param_for(resource)
|
25
37
|
"#{Devise.masquerade_param}=#{resource.masquerade_key}"
|
26
38
|
end
|
39
|
+
|
40
|
+
def save_masquerade_owner_session
|
41
|
+
session[session_key] = send("current_#{resource_name}").id
|
42
|
+
end
|
43
|
+
|
44
|
+
def session_key
|
45
|
+
"devise.masquerade.#{resource_name}"
|
46
|
+
end
|
27
47
|
end
|
28
48
|
|
@@ -8,12 +8,12 @@ describe Devise::MasqueradesController do
|
|
8
8
|
before { logged_in }
|
9
9
|
|
10
10
|
describe '#masquerade user' do
|
11
|
-
let
|
11
|
+
let(:mask) { create(:user) }
|
12
12
|
|
13
13
|
before do
|
14
14
|
SecureRandom.should_receive(:base64).and_return("secure_key")
|
15
15
|
|
16
|
-
get :show, :id =>
|
16
|
+
get :show, :id => mask.to_param
|
17
17
|
end
|
18
18
|
|
19
19
|
it { should redirect_to("/?masquerade=secure_key") }
|
@@ -25,6 +25,28 @@ describe Devise::MasqueradesController do
|
|
25
25
|
|
26
26
|
it { should redirect_to(new_user_session_path) }
|
27
27
|
end
|
28
|
+
|
29
|
+
describe 'back to the owner of the request' do
|
30
|
+
before { logged_in }
|
31
|
+
|
32
|
+
context 'and masquerade user' do
|
33
|
+
let(:mask) { create(:user) }
|
34
|
+
|
35
|
+
before { get :show, :id => mask.to_param }
|
36
|
+
|
37
|
+
context 'and back' do
|
38
|
+
before { get :back }
|
39
|
+
|
40
|
+
it { should redirect_to(masquerade_page) }
|
41
|
+
it { current_user.reload.should == @user }
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
# it's a page with masquerade button ("Login As")
|
48
|
+
def masquerade_page
|
49
|
+
"/"
|
28
50
|
end
|
29
51
|
end
|
30
52
|
|
data/spec/models/user_spec.rb
CHANGED
@@ -6,7 +6,6 @@ describe User do
|
|
6
6
|
describe '#masquerade!' do
|
7
7
|
it 'should cache special key on masquerade' do
|
8
8
|
SecureRandom.should_receive(:base64).with(16).and_return("secure_key")
|
9
|
-
Rails.cache.should_receive(:write).with("users:secure_key:masquerade", user.id, :expires_in => 10.seconds)
|
10
9
|
|
11
10
|
user.masquerade!
|
12
11
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: devise_masquerade
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.4
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-11-
|
12
|
+
date: 2012-11-23 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: bundler
|
@@ -69,6 +69,7 @@ files:
|
|
69
69
|
- .gitignore
|
70
70
|
- .rspec
|
71
71
|
- .rvmrc
|
72
|
+
- .travis.yml
|
72
73
|
- Gemfile
|
73
74
|
- Guardfile
|
74
75
|
- LICENSE.txt
|