devise_masquerade 0.1.7 → 0.1.8
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 +5 -13
- data/.ruby-version +1 -0
- data/.rvmrc +1 -1
- data/.travis.yml +11 -2
- data/Gemfile +10 -2
- data/README.md +1 -0
- data/Rakefile +0 -6
- data/app/controllers/devise/masquerades_controller.rb +21 -3
- data/features/step_definitions/auth_steps.rb +1 -2
- data/lib/devise_masquerade/controllers/helpers.rb +17 -1
- data/lib/devise_masquerade/version.rb +1 -1
- data/script/travis.sh +9 -0
- data/spec/controllers/admin/dashboard_controller_spec.rb +2 -3
- data/spec/controllers/dashboard_controller_spec.rb +2 -3
- data/spec/controllers/devise/masquerades_controller_spec.rb +6 -7
- data/spec/models/user_spec.rb +7 -8
- data/spec/spec_helper.rb +2 -1
- metadata +17 -15
checksums.yaml
CHANGED
@@ -1,15 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
|
5
|
-
data.tar.gz: !binary |-
|
6
|
-
NjAyZTRiZjI0NDc3MTYxMzFiZmQwOTQ5YmMxZjEyZGNjMDMwNTJiMg==
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: bd90ee31c8c44319dca92d2db3f2879dcbf48313
|
4
|
+
data.tar.gz: d4a565eb9f84db1cf91d2f39ea61ac319c04967d
|
7
5
|
SHA512:
|
8
|
-
metadata.gz:
|
9
|
-
|
10
|
-
YmU4NDM1NjdjMTI5MGU1MjkxOGZjMTFmYzdkYzRiNmQwMTQ3MzMyNDU1YmRm
|
11
|
-
Yzk4NTU3NzEzZWQzZTVlNWZmMDU2YTRiOTI5YmFhYzY2YTcyYTQ=
|
12
|
-
data.tar.gz: !binary |-
|
13
|
-
ZDM0YjI3ZWRiMDUyODY5NmUzMjJjZjEzNzM5M2ViOTg5ZDhlMjI3ODkxODc2
|
14
|
-
ZThlMTA3ZmFiYjFiYjc3ZTYzMDc3ZTk0MDY3MDNkOGY4MWMxMGQ5NDUxNzQ0
|
15
|
-
YTIwYjQ5MjRhMmE0Y2ZjZWYyMmM1YTljZmQ2OWExMTU1MTczODQ=
|
6
|
+
metadata.gz: d5d61d8088ef18ee889eb0170bc643332ee4a1616e5e81c2a8daf22df847f0aedaa6477ae18e5b8740399b9688d3ef9033c4835f855a8ac69c101c95f0c0fc58
|
7
|
+
data.tar.gz: 4c5c81fcbae5c4e911f680ea12fcebef274d5844822610deb8276a3e6d52f4170f6c5e72da4122c64ebe11fb46e210ab9a8e094374cf54ee82794d0bf7bdb16f
|
data/.ruby-version
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
2.2.5
|
data/.rvmrc
CHANGED
@@ -1 +1 @@
|
|
1
|
-
rvm use --create
|
1
|
+
rvm use --create 2.3.1@devise_masquerade
|
data/.travis.yml
CHANGED
data/Gemfile
CHANGED
@@ -8,12 +8,21 @@ group :test do
|
|
8
8
|
gem 'actionmailer', '~> 3.0'
|
9
9
|
gem "bson_ext", "~> 1.3"
|
10
10
|
gem 'sqlite3'
|
11
|
-
|
11
|
+
|
12
|
+
gem 'test-unit'
|
13
|
+
|
14
|
+
gem 'pry'
|
15
|
+
gem 'pry-byebug'
|
16
|
+
|
12
17
|
gem 'guard'
|
13
18
|
gem 'guard-rspec'
|
14
19
|
gem 'guard-bundler'
|
15
20
|
gem 'guard-cucumber'
|
21
|
+
|
16
22
|
gem 'rspec-rails'
|
23
|
+
gem 'rspec'
|
24
|
+
gem 'rspec-mocks'
|
25
|
+
|
17
26
|
gem 'shoulda'
|
18
27
|
gem 'rb-fsevent'
|
19
28
|
gem 'factory_girl_rails'
|
@@ -24,4 +33,3 @@ group :test do
|
|
24
33
|
gem 'capybara-webkit'
|
25
34
|
gem 'launchy'
|
26
35
|
end
|
27
|
-
|
data/README.md
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
# Devise Masquerade
|
2
|
+
[](https://gitter.im/oivoodoo/devise_masquerade?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
|
2
3
|
|
3
4
|
[](https://travis-ci.org/oivoodoo/devise_masquerade)
|
4
5
|
|
data/Rakefile
CHANGED
@@ -10,8 +10,17 @@ class Devise::MasqueradesController < DeviseController
|
|
10
10
|
redirect_to(new_user_session_path) and return unless self.resource
|
11
11
|
|
12
12
|
self.resource.masquerade!
|
13
|
-
|
14
|
-
|
13
|
+
request.env["devise.skip_trackable"] = "1"
|
14
|
+
|
15
|
+
if Devise.masquerade_bypass_warden_callback
|
16
|
+
if respond_to?(:bypass_sign_in)
|
17
|
+
bypass_sign_in(self.resource)
|
18
|
+
else
|
19
|
+
sign_in(self.resource, :bypass => true)
|
20
|
+
end
|
21
|
+
else
|
22
|
+
sign_in(self.resource)
|
23
|
+
end
|
15
24
|
|
16
25
|
redirect_to("#{after_masquerade_path_for(self.resource)}?#{after_masquerade_param_for(resource)}")
|
17
26
|
end
|
@@ -25,7 +34,16 @@ class Devise::MasqueradesController < DeviseController
|
|
25
34
|
send(:"current_#{resource_name}")
|
26
35
|
end
|
27
36
|
|
28
|
-
|
37
|
+
if Devise.masquerade_bypass_warden_callback
|
38
|
+
if respond_to?(:bypass_sign_in)
|
39
|
+
bypass_sign_in(owner_user)
|
40
|
+
else
|
41
|
+
sign_in(owner_user, :bypass => true)
|
42
|
+
end
|
43
|
+
else
|
44
|
+
sign_in(owner_user)
|
45
|
+
end
|
46
|
+
request.env["devise.skip_trackable"] = nil
|
29
47
|
|
30
48
|
redirect_to after_back_masquerade_path_for(owner_user)
|
31
49
|
end
|
@@ -11,16 +11,32 @@ module DeviseMasquerade
|
|
11
11
|
|
12
12
|
#{name} = ::#{class_name}.find_by_masquerade_key(params[:masquerade])
|
13
13
|
|
14
|
-
|
14
|
+
if #{name}
|
15
|
+
if Devise.masquerade_bypass_warden_callback
|
16
|
+
if respond_to?(:bypass_sign_in)
|
17
|
+
bypass_sign_in(#{name})
|
18
|
+
else
|
19
|
+
sign_in(#{name}, :bypass => true)
|
20
|
+
end
|
21
|
+
else
|
22
|
+
sign_in(#{name})
|
23
|
+
end
|
24
|
+
end
|
15
25
|
end
|
16
26
|
|
17
27
|
def #{name}_masquerade?
|
18
28
|
session[:"devise_masquerade_#{name}"].present?
|
19
29
|
end
|
30
|
+
|
31
|
+
def #{name}_masquerade_owner
|
32
|
+
return nil unless send(:#{name}_masquerade?)
|
33
|
+
::#{class_name}.to_adapter.find_first(:id => session[:"devise_masquerade_#{name}"])
|
34
|
+
end
|
20
35
|
METHODS
|
21
36
|
|
22
37
|
ActiveSupport.on_load(:action_controller) do
|
23
38
|
helper_method "#{name}_masquerade?"
|
39
|
+
helper_method "#{name}_masquerade_owner"
|
24
40
|
end
|
25
41
|
end
|
26
42
|
end
|
data/script/travis.sh
ADDED
@@ -1,6 +1,6 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
describe Admin::DashboardController do
|
3
|
+
describe Admin::DashboardController, type: :controller do
|
4
4
|
context 'when logged in' do
|
5
5
|
before { admin_logged_in }
|
6
6
|
|
@@ -12,8 +12,7 @@ describe Admin::DashboardController do
|
|
12
12
|
get :index, :masquerade => user.masquerade_key
|
13
13
|
end
|
14
14
|
|
15
|
-
it { current_admin_user.reload.
|
15
|
+
it { expect(current_admin_user.reload).to eq(user) }
|
16
16
|
end
|
17
17
|
end
|
18
18
|
end
|
19
|
-
|
@@ -1,6 +1,6 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
describe DashboardController do
|
3
|
+
describe DashboardController, type: :controller do
|
4
4
|
context 'when logged in' do
|
5
5
|
before { logged_in }
|
6
6
|
|
@@ -13,8 +13,7 @@ describe DashboardController do
|
|
13
13
|
get :index, :masquerade => user.masquerade_key
|
14
14
|
end
|
15
15
|
|
16
|
-
it { current_user.reload.
|
16
|
+
it { expect(current_user.reload).to eq(user) }
|
17
17
|
end
|
18
18
|
end
|
19
19
|
end
|
20
|
-
|
@@ -1,6 +1,6 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
describe Devise::MasqueradesController do
|
3
|
+
describe Devise::MasqueradesController, type: :controller do
|
4
4
|
context 'with configured devise app' do
|
5
5
|
before { @request.env['devise.mapping'] = Devise.mappings[:user] }
|
6
6
|
|
@@ -11,20 +11,20 @@ describe Devise::MasqueradesController do
|
|
11
11
|
let(:mask) { create(:user) }
|
12
12
|
|
13
13
|
before do
|
14
|
-
SecureRandom.
|
14
|
+
expect(SecureRandom).to receive(:urlsafe_base64) { "secure_key" }
|
15
15
|
get :show, :id => mask.to_param
|
16
16
|
end
|
17
17
|
|
18
|
-
it { session.keys.
|
19
|
-
it { session["warden.user.user.key"].first.first.
|
18
|
+
it { expect(session.keys).to include('devise_masquerade_user') }
|
19
|
+
it { expect(session["warden.user.user.key"].first.first).to eq(mask.id) }
|
20
20
|
it { should redirect_to("/?masquerade=secure_key") }
|
21
21
|
|
22
22
|
context 'and back' do
|
23
23
|
before { get :back }
|
24
24
|
|
25
25
|
it { should redirect_to(masquerade_page) }
|
26
|
-
it { current_user.reload.
|
27
|
-
it { session.keys.
|
26
|
+
it { expect(current_user.reload).to eq(@user) }
|
27
|
+
it { expect(session.keys).not_to include('devise_masquerade_user') }
|
28
28
|
end
|
29
29
|
end
|
30
30
|
end
|
@@ -41,4 +41,3 @@ describe Devise::MasqueradesController do
|
|
41
41
|
"/"
|
42
42
|
end
|
43
43
|
end
|
44
|
-
|
data/spec/models/user_spec.rb
CHANGED
@@ -5,22 +5,22 @@ describe User do
|
|
5
5
|
|
6
6
|
describe '#masquerade!' do
|
7
7
|
it 'should cache special key on masquerade' do
|
8
|
-
SecureRandom.
|
8
|
+
expect(SecureRandom).to receive(:urlsafe_base64).with(16) { "secure_key" }
|
9
9
|
user.masquerade!
|
10
10
|
end
|
11
11
|
end
|
12
12
|
|
13
13
|
describe '#remove_masquerade_key' do
|
14
|
-
before { SecureRandom.
|
14
|
+
before { allow(SecureRandom).to receive(:urlsafe_base64) { "secure_key" } }
|
15
15
|
|
16
16
|
let(:key) { 'users:secure_key:masquerade' }
|
17
17
|
|
18
18
|
it 'should be possible to remove cached masquerade key' do
|
19
19
|
user.masquerade!
|
20
|
-
expect(Rails.cache.exist?(key)).to
|
20
|
+
expect(Rails.cache.exist?(key)).to eq(true)
|
21
21
|
|
22
22
|
User.remove_masquerade_key!('secure_key')
|
23
|
-
expect(Rails.cache.exist?(key)).to
|
23
|
+
expect(Rails.cache.exist?(key)).to eq(false)
|
24
24
|
end
|
25
25
|
end
|
26
26
|
|
@@ -28,13 +28,12 @@ describe User do
|
|
28
28
|
it 'should be possible to find user by generate masquerade key' do
|
29
29
|
user.masquerade!
|
30
30
|
|
31
|
-
Rails.cache.
|
32
|
-
Rails.cache.
|
31
|
+
allow(Rails.cache).to receive(:read).with("users:#{user.masquerade_key}:masquerade") { user.id }
|
32
|
+
allow(Rails.cache).to receive(:delete).with("users:#{user.masquerade_key}:masquerade")
|
33
33
|
|
34
34
|
new_user = User.find_by_masquerade_key(user.masquerade_key)
|
35
35
|
|
36
|
-
new_user.
|
36
|
+
expect(new_user).to eq(user)
|
37
37
|
end
|
38
38
|
end
|
39
39
|
end
|
40
|
-
|
data/spec/spec_helper.rb
CHANGED
@@ -23,6 +23,8 @@ RSpec.configure do |config|
|
|
23
23
|
config.include FactoryGirl::Syntax::Methods
|
24
24
|
config.include Authentication
|
25
25
|
|
26
|
+
config.raise_errors_for_deprecations!
|
27
|
+
|
26
28
|
config.mock_with :rspec
|
27
29
|
|
28
30
|
config.before(:suite) do
|
@@ -38,4 +40,3 @@ RSpec.configure do |config|
|
|
38
40
|
DatabaseCleaner.clean
|
39
41
|
end
|
40
42
|
end
|
41
|
-
|
metadata
CHANGED
@@ -1,55 +1,55 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: devise_masquerade
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Alexandr Korsak
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2016-08-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- -
|
17
|
+
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: 1.1.0
|
20
20
|
type: :development
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- -
|
24
|
+
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: 1.1.0
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: railties
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- -
|
31
|
+
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: '3.0'
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- -
|
38
|
+
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '3.0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: devise
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- -
|
45
|
+
- - ">="
|
46
46
|
- !ruby/object:Gem::Version
|
47
47
|
version: 2.1.0
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- -
|
52
|
+
- - ">="
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: 2.1.0
|
55
55
|
description: devise masquerade library
|
@@ -59,10 +59,11 @@ executables: []
|
|
59
59
|
extensions: []
|
60
60
|
extra_rdoc_files: []
|
61
61
|
files:
|
62
|
-
- .gitignore
|
63
|
-
- .rspec
|
64
|
-
- .
|
65
|
-
- .
|
62
|
+
- ".gitignore"
|
63
|
+
- ".rspec"
|
64
|
+
- ".ruby-version"
|
65
|
+
- ".rvmrc"
|
66
|
+
- ".travis.yml"
|
66
67
|
- Gemfile
|
67
68
|
- Guardfile
|
68
69
|
- LICENSE.txt
|
@@ -82,6 +83,7 @@ files:
|
|
82
83
|
- lib/devise_masquerade/rails.rb
|
83
84
|
- lib/devise_masquerade/routes.rb
|
84
85
|
- lib/devise_masquerade/version.rb
|
86
|
+
- script/travis.sh
|
85
87
|
- spec/controllers/admin/dashboard_controller_spec.rb
|
86
88
|
- spec/controllers/dashboard_controller_spec.rb
|
87
89
|
- spec/controllers/devise/masquerades_controller_spec.rb
|
@@ -135,17 +137,17 @@ require_paths:
|
|
135
137
|
- lib
|
136
138
|
required_ruby_version: !ruby/object:Gem::Requirement
|
137
139
|
requirements:
|
138
|
-
- -
|
140
|
+
- - ">="
|
139
141
|
- !ruby/object:Gem::Version
|
140
142
|
version: '0'
|
141
143
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
142
144
|
requirements:
|
143
|
-
- -
|
145
|
+
- - ">="
|
144
146
|
- !ruby/object:Gem::Version
|
145
147
|
version: '0'
|
146
148
|
requirements: []
|
147
149
|
rubyforge_project:
|
148
|
-
rubygems_version: 2.1
|
150
|
+
rubygems_version: 2.4.5.1
|
149
151
|
signing_key:
|
150
152
|
specification_version: 4
|
151
153
|
summary: use for login as functionallity on your admin users pages
|