devise_masquerade 0.3.1 → 0.4.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: 5f67548d3aa0703064adb7a9d093b34093209cff
4
- data.tar.gz: cfa1a2e6612069894e9c386155934f56eb861ef9
3
+ metadata.gz: 417fd89c5319cada031d19c75351278a793d891f
4
+ data.tar.gz: 2beabc09bbe11a916c7cac22e58577c132feb7be
5
5
  SHA512:
6
- metadata.gz: 8075eca25c920099eaa6d8e4fe6fe01d77967fa126558691bbeefe7c455beb64d919806bcfae3ebde9ee1597d39198cd1fe4f2a7d017e2f703272e89939f0e07
7
- data.tar.gz: d50ecd6cbd1273b62684390fa6bb5b0bf30f394d9a5b9b0607afd31f83fafc78b7b6dac01949050eb64cc253e1d0b2ed2be0f28399a398c119ea75167215239b
6
+ metadata.gz: b9aca21064db3b097059eb20a91bb42c2699458eee8f21e88d2ad7db56be5d97dae9a743cfece7fb91f93d829aa2bfac02d881064f53ccd5664e31fea19e1b11
7
+ data.tar.gz: e010d497e12e9bc3b3c7d875e01c99209f329fbe48fcf3d04dd29b03641b81c17526af8e9d9ec9e8ee8ecfc0d6509652c4a16ec1c319a71e0dd67d333e6547ab
data/README.md CHANGED
@@ -87,6 +87,7 @@ in `routes.rb`:
87
87
  Devise.masquerade_expires_in = 10.seconds
88
88
  Devise.masquerade_key_size = 16 # size of the generate by SecureRandom.urlsafe_base64
89
89
  Devise.masquerade_bypass_warden_callback = false
90
+ Devise.masquerade_routes_back = false # if true, route back to the page the user was on via redirect_back
90
91
 
91
92
  ## Demo project
92
93
 
@@ -35,7 +35,13 @@ class Devise::MasqueradesController < DeviseController
35
35
  sign_in(self.resource)
36
36
  end
37
37
 
38
- redirect_to("#{after_masquerade_path_for(self.resource)}?#{after_masquerade_param_for(resource)}")
38
+ if Devise.masquerade_routes_back && Rails::VERSION::MAJOR == 5
39
+ redirect_back(fallback_location: "#{after_masquerade_param_for(self.resource)}?#{after_masquerade_param_for(resource)}")
40
+ elsif Devise.masquerade_routes_back && request.env['HTTP_REFERER'].present?
41
+ redirect_to :back
42
+ else
43
+ redirect_to("#{after_masquerade_path_for(self.resource)}?#{after_masquerade_param_for(resource)}")
44
+ end
39
45
  end
40
46
 
41
47
  def back
@@ -58,7 +64,14 @@ class Devise::MasqueradesController < DeviseController
58
64
  end
59
65
  request.env["devise.skip_trackable"] = nil
60
66
 
61
- redirect_to after_back_masquerade_path_for(owner_user)
67
+ if Devise.masquerade_routes_back && Rails::VERSION::MAJOR == 5
68
+ # If using the masquerade_routes_back and Rails 5
69
+ redirect_back(fallback_location: after_back_masquerade_path_for(owner_user))
70
+ elsif Devise.masquerade_routes_back && request.env['HTTP_REFERER'].present?
71
+ redirect_to :back
72
+ else
73
+ redirect_to after_back_masquerade_path_for(owner_user)
74
+ end
62
75
  end
63
76
 
64
77
  private
@@ -24,6 +24,9 @@ module Devise
24
24
  mattr_accessor :masquerade_bypass_warden_callback
25
25
  @@masquerade_bypass_warden_callback = false
26
26
 
27
+ mattr_accessor :masquerade_routes_back
28
+ @@masquerade_routes_back = false
29
+
27
30
  @@helpers << DeviseMasquerade::Controllers::Helpers
28
31
  end
29
32
 
@@ -1,3 +1,3 @@
1
1
  module DeviseMasquerade
2
- VERSION = "0.3.1"
2
+ VERSION = "0.4.0"
3
3
  end
@@ -26,6 +26,45 @@ describe Devise::MasqueradesController, type: :controller do
26
26
  it { expect(current_user.reload).to eq(@user) }
27
27
  it { expect(session.keys).not_to include('devise_masquerade_user') }
28
28
  end
29
+
30
+ # Configure masquerade_routes_back setting
31
+ describe 'config#masquerade_routes_back' do
32
+ before { Devise.setup {|c| c.masquerade_routes_back = true } }
33
+
34
+ context 'show' do
35
+ before { expect(SecureRandom).to receive(:urlsafe_base64) { "secure_key" } }
36
+
37
+ context '< Rails 5 version' do
38
+ before do
39
+ @request.env['HTTP_REFERER'] = 'previous_location'
40
+ get :show, id: mask.to_param
41
+ end # before
42
+
43
+ it { should redirect_to('previous_location') }
44
+ end # context
45
+
46
+ context '< Rails 5, fallback if http_referer not present' do
47
+ before { get :show, id: mask.to_param }
48
+
49
+ it { should redirect_to("/?masquerade=secure_key") }
50
+ end # context
51
+ end # context
52
+
53
+ context '< Rails 5, and back' do
54
+ before { get :back }
55
+
56
+ it { should redirect_to(masquerade_page) }
57
+ end # context
58
+
59
+ context '< Rails 5, and back fallback if http_referer not present' do
60
+ before do
61
+ @request.env['HTTP_REFERER'] = 'previous_location'
62
+ get :back
63
+ end
64
+
65
+ it { should redirect_to('previous_location') }
66
+ end # context
67
+ end # describe
29
68
  end
30
69
  end
31
70
 
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.3.1
4
+ version: 0.4.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-02-06 00:00:00.000000000 Z
11
+ date: 2017-02-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler