switch_user 1.1.0 → 1.2.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.
- checksums.yaml +4 -4
- data/.gitignore +2 -0
- data/CHANGELOG.md +4 -0
- data/README.md +2 -2
- data/app/helpers/switch_user_helper.rb +12 -3
- data/app/views/switch_user/_widget.html.erb +1 -1
- data/lib/switch_user/version.rb +1 -1
- data/spec/helpers/switch_user_helper_spec.rb +134 -0
- metadata +4 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 596db07135f6c4bdb1e194369e2adb8c8fdc63ce
|
4
|
+
data.tar.gz: 9eb590dff95b54d2800a93040f6fae5404a211b3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 903229ce08e3bd292798005b756bdeef451f7c68efc639bd6c34d70c3a3e1e4815cfedc64d045dd46a32075a051319c4f0093e6463eca8ea83069c9d31649237
|
7
|
+
data.tar.gz: 5cff807ec71b15ff9b6bc135df6c408e17cd198742b2359f90ba908c3451a16765a9a3a7cdf84691201a93e5033b52f8413093506d38788a56def28f21113dcb
|
data/.gitignore
CHANGED
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
@@ -62,7 +62,7 @@ SwitchUser.setup do |config|
|
|
62
62
|
# available_users is a hash,
|
63
63
|
# key is the model name of user (:user, :admin, or any name you use),
|
64
64
|
# value is a block that return the users that can be switched.
|
65
|
-
config.available_users = { :user => lambda { User.all } }
|
65
|
+
config.available_users = { :user => lambda { User.all } } # use User.scoped instead for rails 3.2
|
66
66
|
|
67
67
|
# available_users_identifiers is a hash,
|
68
68
|
# keys in this hash should match a key in the available_users hash
|
@@ -158,4 +158,4 @@ This feature should be used with extreme caution because of the security implica
|
|
158
158
|
|
159
159
|
Copyright © 2010 - 2015 Richard Huang (flyerhzm@gmail.com), released under the MIT license
|
160
160
|
|
161
|
-
[0]: https://github.com/tablatom/hobo
|
161
|
+
[0]: https://github.com/tablatom/hobo
|
@@ -4,15 +4,24 @@ module SwitchUserHelper
|
|
4
4
|
return unless available?
|
5
5
|
|
6
6
|
if provider.current_user
|
7
|
-
selected_user = "user_#{current_user.id}"
|
7
|
+
selected_user = "user_#{provider.current_user.id}"
|
8
8
|
else
|
9
9
|
selected_user = nil
|
10
10
|
end
|
11
11
|
|
12
|
+
grouped_options_container = {}.tap do |h|
|
13
|
+
SwitchUser.all_users.each do |record|
|
14
|
+
scope = record.is_a?(SwitchUser::GuestRecord) ? :Guest : record.scope.to_s.capitalize
|
15
|
+
h[scope] ||= []
|
16
|
+
h[scope] << [record.label, record.scope_id]
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
option_tags = grouped_options_for_select(grouped_options_container, selected_user)
|
21
|
+
|
12
22
|
render :partial => "switch_user/widget",
|
13
23
|
:locals => {
|
14
|
-
:
|
15
|
-
:current_scope => selected_user
|
24
|
+
:option_tags => option_tags
|
16
25
|
}
|
17
26
|
end
|
18
27
|
|
@@ -1,4 +1,4 @@
|
|
1
1
|
<% if SwitchUser.switch_back %>
|
2
2
|
<%= check_box_tag "remember_user", "remember_user", provider.original_user.present?, :onchange => "location.href = '/switch_user/remember_user?remember=' + encodeURIComponent(this.checked)" %>
|
3
3
|
<% end %>
|
4
|
-
<%= select_tag "switch_user_identifier",
|
4
|
+
<%= select_tag "switch_user_identifier", option_tags, :onchange => "location.href = '/switch_user?scope_identifier=' + encodeURIComponent(this.options[this.selectedIndex].value)" %>
|
data/lib/switch_user/version.rb
CHANGED
@@ -0,0 +1,134 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'switch_user'
|
3
|
+
require 'switch_user_helper'
|
4
|
+
|
5
|
+
RSpec.describe SwitchUserHelper, :type => :helper do
|
6
|
+
before do
|
7
|
+
SwitchUser.provider = :dummy
|
8
|
+
end
|
9
|
+
|
10
|
+
let(:user) { double(:user, :id => 1) }
|
11
|
+
let(:provider) {
|
12
|
+
_provider = SwitchUser::Provider::Dummy.new(controller)
|
13
|
+
_provider.instance_variable_set(:@user, user)
|
14
|
+
_provider
|
15
|
+
}
|
16
|
+
|
17
|
+
describe "#switch_user_select" do
|
18
|
+
let(:guest_record) { SwitchUser::GuestRecord.new }
|
19
|
+
let(:user_record) { double(:user_record, :scope => :user, :label => 'user1', :scope_id => 'user_1') }
|
20
|
+
|
21
|
+
let(:guest_option_tags) { %Q^<optgroup label="Guest"><option value="">Guest</option></optgroup>^ }
|
22
|
+
let(:user_option_tags) { %Q^<optgroup label="User"><option value="user_1">user1</option></optgroup>^ }
|
23
|
+
let(:user_selected_option_tags) { %Q^<optgroup label="User"><option selected="selected" value="user_1">user1</option></optgroup>^ }
|
24
|
+
|
25
|
+
|
26
|
+
before do
|
27
|
+
allow(SwitchUser).to receive(:switch_back).and_return(false)
|
28
|
+
|
29
|
+
allow(helper).to receive(:available?).and_return(true)
|
30
|
+
|
31
|
+
allow(helper).to receive(:provider).and_return(provider)
|
32
|
+
allow(provider).to receive(:current_user).and_return(user)
|
33
|
+
|
34
|
+
allow(SwitchUser).to receive(:all_users).and_return([guest_record, user_record])
|
35
|
+
end
|
36
|
+
|
37
|
+
it "when unavailable" do
|
38
|
+
allow(helper).to receive(:available?).and_return(false)
|
39
|
+
|
40
|
+
expect(helper.switch_user_select).to eq(nil)
|
41
|
+
end
|
42
|
+
|
43
|
+
it "when current_user is nil and all_users is []" do
|
44
|
+
allow(provider).to receive(:current_user).and_return(nil)
|
45
|
+
allow(SwitchUser).to receive(:all_users).and_return([])
|
46
|
+
|
47
|
+
expect(helper.switch_user_select).not_to match(%r{</option>})
|
48
|
+
end
|
49
|
+
|
50
|
+
it "when current_user is nil and all_users is [guest_record]" do
|
51
|
+
allow(provider).to receive(:current_user).and_return(nil)
|
52
|
+
allow(SwitchUser).to receive(:all_users).and_return([guest_record])
|
53
|
+
|
54
|
+
expect(helper.switch_user_select).to match(%r{#{guest_option_tags}})
|
55
|
+
end
|
56
|
+
|
57
|
+
it "when current_user is nil and all_users is [guest_record, user_record]" do
|
58
|
+
allow(provider).to receive(:current_user).and_return(nil)
|
59
|
+
allow(SwitchUser).to receive(:all_users).and_return([guest_record, user_record])
|
60
|
+
|
61
|
+
expect(helper.switch_user_select).to match(%r{#{guest_option_tags}})
|
62
|
+
expect(helper.switch_user_select).to match(%r{#{user_option_tags}})
|
63
|
+
end
|
64
|
+
|
65
|
+
it "when current_user is user and all_users is []" do
|
66
|
+
allow(provider).to receive(:current_user).and_return(user)
|
67
|
+
allow(SwitchUser).to receive(:all_users).and_return([])
|
68
|
+
|
69
|
+
expect(helper.switch_user_select).not_to match(%r{</option>})
|
70
|
+
end
|
71
|
+
|
72
|
+
it "when current_user is user and all_users is [guest_record, user_record]" do
|
73
|
+
allow(provider).to receive(:current_user).and_return(user)
|
74
|
+
allow(SwitchUser).to receive(:all_users).and_return([guest_record, user_record])
|
75
|
+
|
76
|
+
expect(helper.switch_user_select).to match(%r{#{guest_option_tags}})
|
77
|
+
expect(helper.switch_user_select).to match(%r{#{user_selected_option_tags}})
|
78
|
+
end
|
79
|
+
|
80
|
+
it "when current_user is default allow and all_users is default allow" do
|
81
|
+
expect(helper.switch_user_select).to match(%r{#{guest_option_tags}})
|
82
|
+
expect(helper.switch_user_select).to match(%r{#{user_selected_option_tags}})
|
83
|
+
end
|
84
|
+
|
85
|
+
end
|
86
|
+
|
87
|
+
describe "#user_tag_value" do
|
88
|
+
it "for user" do
|
89
|
+
user = double(:user, :id => 1)
|
90
|
+
|
91
|
+
expect(helper.send(:user_tag_value, user, :id, :user)).to eq('user_1')
|
92
|
+
end
|
93
|
+
end
|
94
|
+
|
95
|
+
describe "#user_tag_label" do
|
96
|
+
it "when name has call method" do
|
97
|
+
user = double(:user)
|
98
|
+
name = ->(user){ 'user1' }
|
99
|
+
|
100
|
+
expect(helper.send(:user_tag_label, user, name)).to eq('user1')
|
101
|
+
end
|
102
|
+
|
103
|
+
it "when name not has call method" do
|
104
|
+
user = double(:name, :name => 'user1')
|
105
|
+
name = :name
|
106
|
+
|
107
|
+
expect(helper.send(:user_tag_label, user, name)).to eq('user1')
|
108
|
+
end
|
109
|
+
end
|
110
|
+
|
111
|
+
describe "#available?" do
|
112
|
+
it "return true" do
|
113
|
+
allow_any_instance_of(SwitchUser.guard_class).to receive(:view_available?).and_return(true)
|
114
|
+
|
115
|
+
expect(helper.send(:available?)).to eq(true)
|
116
|
+
end
|
117
|
+
|
118
|
+
it "return false" do
|
119
|
+
allow_any_instance_of(SwitchUser.guard_class).to receive(:view_available?).and_return(false)
|
120
|
+
|
121
|
+
expect(helper.send(:available?)).to eq(false)
|
122
|
+
end
|
123
|
+
end
|
124
|
+
|
125
|
+
describe "#provider" do
|
126
|
+
it "normal" do
|
127
|
+
allow(SwitchUser::Provider).to receive(:init).with(controller).and_return(provider)
|
128
|
+
|
129
|
+
expect(helper.send(:provider)).to eq(provider)
|
130
|
+
end
|
131
|
+
end
|
132
|
+
|
133
|
+
|
134
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: switch_user
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Richard Huang
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2015-
|
12
|
+
date: 2015-12-01 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: activesupport
|
@@ -206,6 +206,7 @@ files:
|
|
206
206
|
- lib/switch_user/user_set.rb
|
207
207
|
- lib/switch_user/version.rb
|
208
208
|
- spec/controllers/switch_user_controller_spec.rb
|
209
|
+
- spec/helpers/switch_user_helper_spec.rb
|
209
210
|
- spec/integration/switch_user_spec.rb
|
210
211
|
- spec/provider/authlogic_spec.rb
|
211
212
|
- spec/provider/clearance_spec.rb
|
@@ -243,7 +244,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
243
244
|
version: 1.3.6
|
244
245
|
requirements: []
|
245
246
|
rubyforge_project: switch_user
|
246
|
-
rubygems_version: 2.4.
|
247
|
+
rubygems_version: 2.4.5.1
|
247
248
|
signing_key:
|
248
249
|
specification_version: 4
|
249
250
|
summary: Easily switch current user to speed up development
|