switch_user 0.2.0 → 0.3.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.
- data/README.md +12 -4
- data/app/controllers/switch_user_controller.rb +21 -18
- data/app/helpers/switch_user_helper.rb +9 -3
- data/lib/switch_user.rb +3 -3
- data/lib/switch_user/version.rb +1 -1
- metadata +3 -3
data/README.md
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
switch_user
|
2
2
|
===========
|
3
3
|
|
4
|
-
Inspired from hobo, switch_user provides a convenient way to switch current user that speed up your development.
|
4
|
+
Inspired from hobo, switch_user provides a convenient way to switch current user that speed up your development, without logout, login and input login or passowrd.
|
5
5
|
|
6
6
|
switch_user promises that it only be activated in the development environment.
|
7
7
|
|
@@ -17,13 +17,19 @@ Install
|
|
17
17
|
|
18
18
|
Add in Gemfile.
|
19
19
|
|
20
|
-
gem "switch_user"
|
20
|
+
gem "switch_user"
|
21
21
|
|
22
22
|
Usage
|
23
23
|
-----
|
24
24
|
|
25
25
|
Add following code into your layout page.
|
26
26
|
|
27
|
+
erb
|
28
|
+
|
29
|
+
<%= switch_user_select %>
|
30
|
+
|
31
|
+
haml
|
32
|
+
|
27
33
|
= switch_user_select
|
28
34
|
|
29
35
|
Configuration
|
@@ -34,10 +40,12 @@ By default, you can switch between Guest and all users in users table.
|
|
34
40
|
But if you want to use different scope users in devise or you want to customize the users that can be switched, you should do like this
|
35
41
|
|
36
42
|
SwitchUser.setup do |config|
|
37
|
-
#
|
38
|
-
config.
|
43
|
+
# provider may be :devise or :authologic, but now we only support devise
|
44
|
+
config.provider = :devise
|
39
45
|
# avaliable_users is a hash, key is the scope of devise user, value is the proc that return the users that can be switched.
|
40
46
|
config.available_users = { :user => lambda { User.all }, :admin => lambda { Admin.all } }
|
47
|
+
# what field should be displayed on select box
|
48
|
+
config.display_field = :email
|
41
49
|
end
|
42
50
|
|
43
51
|
|
@@ -3,27 +3,30 @@ class SwitchUserController < ApplicationController
|
|
3
3
|
before_filter :developer_modes_only
|
4
4
|
|
5
5
|
def set_current_user
|
6
|
-
|
7
|
-
SwitchUser.available_users.keys.each do |s|
|
8
|
-
warden.logout(s)
|
9
|
-
end
|
10
|
-
else
|
11
|
-
scope, id = params[:scope_id].split('_')
|
12
|
-
SwitchUser.available_users.keys.each do |s|
|
13
|
-
if scope == s.to_s
|
14
|
-
user = scope.classify.constantize.find(id)
|
15
|
-
warden.set_user(user, :scope => scope)
|
16
|
-
else
|
17
|
-
warden.logout(s)
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end
|
6
|
+
send("#{SwitchUser.provider}_handle", params)
|
21
7
|
redirect_to(request.env["HTTP_REFERER"] ? :back : root_path)
|
22
8
|
end
|
23
9
|
|
24
10
|
private
|
11
|
+
def developer_modes_only
|
12
|
+
render :text => "Permission Denied", :status => 403 unless Rails.env == "development"
|
13
|
+
end
|
25
14
|
|
26
|
-
|
27
|
-
|
28
|
-
|
15
|
+
def devise_handle(params)
|
16
|
+
if params[:scope_id].blank?
|
17
|
+
SwitchUser.available_users.keys.each do |s|
|
18
|
+
warden.logout(s)
|
19
|
+
end
|
20
|
+
else
|
21
|
+
scope, id = params[:scope_id].split('_')
|
22
|
+
SwitchUser.available_users.keys.each do |s|
|
23
|
+
if scope == s.to_s
|
24
|
+
user = scope.classify.constantize.find(id)
|
25
|
+
warden.set_user(user, :scope => scope)
|
26
|
+
else
|
27
|
+
warden.logout(s)
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
29
32
|
end
|
@@ -1,6 +1,14 @@
|
|
1
1
|
module SwitchUserHelper
|
2
2
|
def switch_user_select
|
3
3
|
if Rails.env == "development"
|
4
|
+
options = send("#{SwitchUser.provider}_select_options")
|
5
|
+
select_tag "switch_user_id", options.html_safe,
|
6
|
+
:onchange => "location.href = '/switch_user?scope_id=' + encodeURIComponent(this.options[this.selectedIndex].value)"
|
7
|
+
end
|
8
|
+
end
|
9
|
+
|
10
|
+
private
|
11
|
+
def devise_select_options
|
4
12
|
if current_user
|
5
13
|
options = "<option value=''>Guest</option>"
|
6
14
|
else
|
@@ -16,8 +24,6 @@ module SwitchUserHelper
|
|
16
24
|
end
|
17
25
|
end
|
18
26
|
end
|
19
|
-
|
20
|
-
:onchange => "location.href = '/switch_user?scope_id=' + encodeURIComponent(this.options[this.selectedIndex].value)"
|
27
|
+
options
|
21
28
|
end
|
22
|
-
end
|
23
29
|
end
|
data/lib/switch_user.rb
CHANGED
@@ -7,14 +7,14 @@ module SwitchUser
|
|
7
7
|
end
|
8
8
|
end
|
9
9
|
|
10
|
-
mattr_accessor :
|
11
|
-
self.
|
10
|
+
mattr_accessor :provider
|
11
|
+
self.provider = :devise
|
12
12
|
|
13
13
|
mattr_accessor :available_users
|
14
14
|
self.available_users = { :user => lambda { User.all } }
|
15
15
|
|
16
16
|
mattr_accessor :display_field
|
17
|
-
self.display_field =
|
17
|
+
self.display_field = :email
|
18
18
|
|
19
19
|
def self.setup
|
20
20
|
yield self
|
data/lib/switch_user/version.rb
CHANGED
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: switch_user
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 19
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
|
-
-
|
8
|
+
- 3
|
9
9
|
- 0
|
10
|
-
version: 0.
|
10
|
+
version: 0.3.0
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Richard Huang
|