switch_user 0.9.3 → 0.9.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.
checksums.yaml ADDED
@@ -0,0 +1,15 @@
1
+ ---
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ YmQwZjYwMDUxNGZmNGVjMjY2ZWQ2YTE3MzUwYWUwOTA5NjA1MWEzZQ==
5
+ data.tar.gz: !binary |-
6
+ ZTBiZTg2NDBkOGE3OTM3NDQ1ODczNzIyOWUxNzYwZGQwYzFlNDRjMg==
7
+ SHA512:
8
+ metadata.gz: !binary |-
9
+ NGRkMDQwOGIzYjA2YThiMDc2NzU2OGUzYThhY2UyMDE2NGRiYTFlNGJiYWI5
10
+ MTU4YTBjMTIyOTBkNDdlM2U4MzVmZTBkODEzZTI5ZDJjYzQyMmNmMzk1MGNl
11
+ MmY4MjU1OTQ3NWM1NWU1NGUyZDI5ZTY3YTNhYTNjMWYwODEyNGQ=
12
+ data.tar.gz: !binary |-
13
+ YThmODEyMjBmNjUzMjNiNGZmMTUzYzUxOWMzMWZlYmQ2NzU4ZjZjYzA0MTFj
14
+ M2EyMjcyNGRmZWI2MWUxNWY2MjNkM2NmMjg3ODE1ZTdjMWIyODEwYTQwNDUz
15
+ YjQ5NWViMWIyZGEyMjU3NmMzNWIwOTdlMmQxNGMxMjQyZTI2NWI=
data/.gitignore CHANGED
@@ -4,3 +4,4 @@ pkg/*
4
4
  .rvmrc
5
5
  Gemfile.lock
6
6
  log/*.log
7
+ .DS_Store
data/README.md CHANGED
@@ -127,7 +127,7 @@ Sometimes you'll want to be able to switch to an unprivileged user and then back
127
127
 
128
128
  You will need to make the following modifications to your configuration:
129
129
  ```ruby
130
- config.switch_user = true
130
+ config.switch_back = true
131
131
  config.controller_guard = lambda { |current_user, request, original_user|
132
132
  current_user && current_user.admin? || original_user && original_user.super_admin?
133
133
  }
@@ -1,41 +1,29 @@
1
1
  module SwitchUserHelper
2
- class SelectOption < Struct.new(:label, :scope_id); end
2
+ SelectOption = Struct.new(:label, :scope_id)
3
3
  def switch_user_select
4
4
  return unless available?
5
5
  options = []
6
6
  selected_user = nil
7
7
 
8
- options << SelectOption.new("Guest", "") if SwitchUser.helper_with_guest
9
- SwitchUser.available_users.each do |scope, user_proc|
10
- current_user = provider.current_user(scope)
11
- id_name = SwitchUser.available_users_identifiers[scope]
12
- name = SwitchUser.available_users_names[scope]
13
-
14
- user_proc.call.each do |user|
15
- if user == current_user
16
- selected_user = tag_value(user, id_name, scope)
17
- end
18
- options << SelectOption.new(tag_label(user, name), tag_value(user, id_name, scope))
19
- end
20
- end
21
-
8
+ users = SwitchUser::UserSet.users
9
+ users << SelectOption.new("Guest", "") if SwitchUser.helper_with_guest
22
10
  render :partial => "switch_user/widget",
23
11
  :locals => {
24
- :options => options,
12
+ :options => users,
25
13
  :current_scope => selected_user
26
14
  }
27
15
  end
28
16
 
29
17
  private
30
18
 
31
- def tag_value(user, id_name, scope)
19
+ def user_tag_value(user, id_name, scope)
32
20
  identifier = user.send(id_name)
33
21
 
34
22
  "#{scope}_#{identifier}"
35
23
  end
36
24
 
37
- def tag_label(user, name)
38
- user.send(name)
25
+ def user_tag_label(user, name)
26
+ name.respond_to?(:call) ? name.call(user) : user.send(name)
39
27
  end
40
28
 
41
29
  def available?
@@ -1,4 +1,4 @@
1
1
  <% if SwitchUser.switch_back %>
2
- <%= check_box_tag "remember_user", "remember_user", provider.original_user.present?, :onchange => "location.href = 'switch_user/remember_user?remember=' + encodeURIComponent(this.checked)" %>
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
4
  <%= select_tag "switch_user_identifier", options_from_collection_for_select(options, :scope_id, :label, current_scope), :onchange => "location.href = '/switch_user?scope_identifier=' + encodeURIComponent(this.options[this.selectedIndex].value)" %>
@@ -0,0 +1,3 @@
1
+ test:
2
+ adapter: sqlite3
3
+ database: ":memory:"
data/lib/switch_user.rb CHANGED
@@ -3,6 +3,7 @@ if defined?(Rails)
3
3
  end
4
4
 
5
5
  module SwitchUser
6
+ autoload :UserSet, "switch_user/user_set"
6
7
  autoload :UserLoader, "switch_user/user_loader"
7
8
  autoload :Provider, "switch_user/provider"
8
9
  autoload :BaseGuard, "switch_user/base_guard"
@@ -35,8 +36,6 @@ module SwitchUser
35
36
  @@guard_class = klass.constantize
36
37
  end
37
38
 
38
- private
39
-
40
39
  def self.reset_config
41
40
  self.provider = :devise
42
41
  self.available_users = { :user => lambda { User.all } }
@@ -30,19 +30,30 @@ module SwitchUser
30
30
  end
31
31
 
32
32
  def original_user
33
- @controller.session[:original_user]
33
+ user_identifier = @controller.session[:original_user_scope_identifier]
34
+
35
+ if user_identifier
36
+ UserLoader.prepare(:scope_identifier => user_identifier).user
37
+ end
38
+ end
39
+
40
+ def original_user=(user)
41
+ user_type = user.class.to_s.underscore
42
+ user_identifier = "#{user_type}_#{user.id}"
43
+
44
+ @controller.session[:original_user_scope_identifier] = user_identifier
34
45
  end
35
46
 
36
47
  def remember_current_user(remember)
37
48
  if remember
38
- @controller.session[:original_user] = current_user
49
+ self.original_user = current_user
39
50
  else
40
- @controller.session.delete(:original_user)
51
+ clear_original_user
41
52
  end
42
53
  end
43
54
 
44
55
  def clear_original_user
45
- @controller.session.delete(:original_user)
56
+ @controller.session.delete(:original_user_scope_identifier)
46
57
  end
47
58
  end
48
59
  end
@@ -30,7 +30,7 @@ module SwitchUser
30
30
  if scope && SwitchUser.available_scopes.include?(scope.to_sym)
31
31
  @scope = scope
32
32
  else
33
- raise InvalidScope
33
+ raise InvalidScope.new("#{scope} is invalid and is not listed in SwitchUser#available_users")
34
34
  end
35
35
  end
36
36
 
@@ -0,0 +1,71 @@
1
+ module SwitchUser
2
+ class UserSet
3
+ def self.init_from_config
4
+ SwitchUser.available_users.map do |scope, base_scope|
5
+ identifier = SwitchUser.available_users_identifiers[scope]
6
+ label = SwitchUser.available_users_names[scope]
7
+ new(scope, identifier, label, base_scope)
8
+ end
9
+ end
10
+
11
+ def self.users
12
+ init_from_config.flat_map {|user_set|
13
+ user_set.users.map {|user| Record.build(user, user_set) }
14
+ }
15
+ end
16
+
17
+ attr_reader :scope, :user_class, :identifier, :label, :base_scope
18
+ def initialize(scope, identifier, label, base_scope)
19
+ @scope = scope
20
+ @user_class = normalize_class(scope)
21
+ @identifier = identifier
22
+ @label = label
23
+ @base_scope = normalize_scope(base_scope)
24
+ end
25
+
26
+ def find_user(id)
27
+ Record.build(users.where(:id => id).first, self)
28
+ end
29
+ alias :[] :find_user
30
+
31
+ def users
32
+ base_scope
33
+ end
34
+
35
+ private
36
+
37
+ def normalize_class(klass)
38
+ if klass.is_a?(Class)
39
+ klass
40
+ else
41
+ klass.to_s.classify.constantize
42
+ end
43
+ end
44
+
45
+ def normalize_scope(scope)
46
+ if scope.respond_to?(:call)
47
+ scoped = scope.call
48
+ if scoped.respond_to?(:scoped)
49
+ scoped
50
+ else
51
+ user_class.scoped
52
+ end
53
+ else
54
+ user_class.scoped
55
+ end
56
+ end
57
+ class Record < Struct.new(:id, :label, :scope)
58
+ def self.build(user, set)
59
+ id = user.send(set.identifier)
60
+ label = user.send(set.label)
61
+ scope = set.scope
62
+
63
+ new(id, label, scope)
64
+ end
65
+
66
+ def scope_id
67
+ "#{scope}_#{id}"
68
+ end
69
+ end
70
+ end
71
+ end
@@ -1,3 +1,3 @@
1
1
  module SwitchUser
2
- VERSION = "0.9.3"
2
+ VERSION = "0.9.4"
3
3
  end
@@ -0,0 +1,57 @@
1
+ require 'spec_helper'
2
+
3
+ describe "Using SwitchUser", :type => :request do
4
+ let(:user) { User.create!(:email => "foo@bar.com", :admin => true) }
5
+ let(:other_user) { User.create!(:email => "other@bar.com", :admin => false) }
6
+ before do
7
+ SwitchUser.reset_config
8
+ SwitchUser.provider = :session
9
+ SwitchUser.controller_guard = lambda { |current_user, request| Rails.env.test? }
10
+ SwitchUser.redirect_path = lambda {|_,_| "/dummys/open"}
11
+ end
12
+ it "signs a user in using switch_user" do
13
+ # can't access protected url
14
+ get "/dummy/protected"
15
+ response.should be_redirect
16
+
17
+ get "/switch_user?scope_identifier=user_#{other_user.id}"
18
+ response.should be_redirect
19
+
20
+ # now that we are logged in via switch_user we can access
21
+ get "/dummy/protected"
22
+ response.should be_success
23
+ end
24
+ context "using switch_back" do
25
+ before do
26
+ SwitchUser.switch_back = true
27
+ SwitchUser.controller_guard = lambda { |current_user, request, original_user|
28
+ current_user && current_user.admin? || original_user && original_user.admin?
29
+ }
30
+ end
31
+ it "can switch back to a different user" do
32
+ # login
33
+ post "/login", :id => user.id
34
+ follow_redirect!
35
+
36
+ # have SwitchUser remember us
37
+ get "/switch_user/remember_user", :remember => true
38
+ session["original_user_scope_identifier"].should be_present
39
+
40
+ # check that we can switch to another user
41
+ get "/switch_user?scope_identifier=user_#{other_user.id}"
42
+ session["user_id"].should == other_user.id
43
+
44
+ # logout
45
+ get "/logout"
46
+ session["user_id"].should be_nil
47
+
48
+ # check that we can still switch to another user
49
+ get "/switch_user?scope_identifier=user_#{user.id}"
50
+ session["user_id"].should == user.id
51
+
52
+ # check that we can be un-remembered
53
+ get "/switch_user/remember_user", :remember => false
54
+ session["original_user"].should be_nil
55
+ end
56
+ end
57
+ end
@@ -9,9 +9,6 @@ end
9
9
 
10
10
  describe SwitchUser::Provider::Session do
11
11
  before do
12
- user.stub(:id => 100)
13
- User.stub(:find_by_id).with(100).and_return(user)
14
- User.stub(:find_by_id).with(101).and_return(other_user)
15
12
  SwitchUser.session_key = :uid
16
13
  end
17
14
  let(:controller) { SessionController.new }
data/spec/spec_helper.rb CHANGED
@@ -1,15 +1,15 @@
1
+ ENV["RAILS_ENV"] = "test"
1
2
  require 'support/provider'
2
3
  require 'support/application'
3
4
  require 'rspec/rails'
4
5
  require 'switch_user'
6
+ require 'pry'
7
+ require 'awesome_print'
5
8
 
6
9
  RSpec.configure do |config|
7
10
  config.filter_run :focus => true
8
11
  config.run_all_when_everything_filtered = true
9
- end
10
-
11
- class ApplicationController < ActionController::Base
12
-
12
+ config.use_transactional_fixtures = true
13
13
  end
14
14
 
15
15
  class TestController
@@ -17,10 +17,3 @@ class TestController
17
17
  @session_hash ||= {}
18
18
  end
19
19
  end
20
-
21
- class User
22
- def self.where(*)
23
- []
24
- end
25
- end
26
-
@@ -1,7 +1,70 @@
1
1
  require "rails"
2
2
  require "rails/all"
3
+ require 'switch_user/rails'
3
4
 
4
- class MyApp < Rails::Application
5
- config.active_support.deprecation = :log
5
+
6
+ class ApplicationController < ActionController::Base
7
+ def require_user
8
+ current_user || redirect_to("/tests/open")
9
+ end
10
+
11
+ def current_user
12
+ User.find_by_id(session[SwitchUser.session_key])
13
+ end
14
+
15
+ def login
16
+ user = User.find(params[:id])
17
+ session[SwitchUser.session_key] = user.id
18
+
19
+ redirect_to("/tests/protected")
20
+ end
21
+
22
+ def logout
23
+ session[SwitchUser.session_key] = nil
24
+ end
25
+ end
26
+
27
+ class DummyController < ApplicationController
28
+ before_filter :require_user, :only => :protected
29
+
30
+ def authenticated
31
+ render :text => current_user.inspect
32
+ end
33
+
34
+ def open
35
+ render :text => view_context.switch_user_select
36
+ end
37
+
38
+ def protected
39
+ render :text => view_context.switch_user_select
40
+ end
41
+ end
42
+
43
+ module MyApp
44
+ class Application < Rails::Application
45
+ config.active_support.deprecation = :log
46
+ config.threadsafe!
47
+ config.secret_key_base = "abc123"
48
+ config.eager_load = true
49
+ config.secret_token = '153572e559247c7aedd1bca5a246874d'
50
+ end
51
+ end
52
+ Rails.application.initialize!
53
+ Rails.application.routes.draw do
54
+ get 'dummy/protected', :to => "dummy#protected"
55
+ get 'dummy/open', :to => "dummy#open"
56
+ post 'login', :to => "dummy#login"
57
+ get 'logout', :to => "dummy#logout"
58
+ get 'authenticated', :to => "dummy#authenticated"
59
+ get :switch_user, :to => 'switch_user#set_current_user'
60
+ get 'switch_user/remember_user', :to => 'switch_user#remember_user'
61
+ end
62
+
63
+ connection = ActiveRecord::Base.connection
64
+ connection.create_table :users do |t|
65
+ t.column :email, :string
66
+ t.column :admin, :boolean
67
+ end
68
+
69
+ class User < ActiveRecord::Base
6
70
  end
7
- MyApp.initialize!
@@ -1,6 +1,6 @@
1
1
  shared_examples_for "a provider" do
2
- let(:user) { stub(:user) }
3
- let(:other_user) { stub(:other_user, :id => 101) }
2
+ let(:user) { User.create! }
3
+ let(:other_user) { User.create! }
4
4
 
5
5
  it "can log a user in" do
6
6
  provider.login(user)
@@ -40,7 +40,9 @@ describe SwitchUser::UserLoader do
40
40
  end
41
41
 
42
42
  it "returns nil if no user is found" do
43
- loader = SwitchUser::UserLoader.new("user", 2)
43
+ loader = SwitchUser::UserLoader.new("user", 3)
44
+
45
+ User.find_by_id(3).should be_nil
44
46
  loader.user.should == nil
45
47
  end
46
48
 
@@ -0,0 +1,34 @@
1
+ require 'spec_helper'
2
+ require 'switch_user/user_set'
3
+
4
+ module SwitchUser
5
+ describe UserSet do
6
+ let!(:user) { User.create(:email => "test@example.com") }
7
+ let(:set) { UserSet.new(:user, :id, :email, lambda { User.scoped}) }
8
+ after { User.delete_all }
9
+ it "returns an object that knows it's scope, id and label" do
10
+ found_user = set[user.id]
11
+
12
+ found_user.id.should == user.id
13
+ found_user.scope.should == :user
14
+ found_user.label.should == "test@example.com"
15
+ end
16
+ it "returns all available users for a scope" do
17
+ set.users.should == [user]
18
+ end
19
+ it "chains the where on to the provided scope" do
20
+ set = UserSet.new(:user, :id, :email, lambda { User.all })
21
+ set.find_user(user.id).label.should == user.email
22
+ end
23
+ end
24
+ describe UserSet::Record do
25
+ it "correctly configures the record using the set" do
26
+ user = stub(:user, :id => 100, :email => "test@example.com")
27
+ set = stub(:set, :identifier => :id, :label => :email, :scope => :user)
28
+ record = UserSet::Record.build(user, set)
29
+ record.id.should == 100
30
+ record.label.should == "test@example.com"
31
+ record.scope.should == :user
32
+ end
33
+ end
34
+ end
data/switch_user.gemspec CHANGED
@@ -20,6 +20,10 @@ Gem::Specification.new do |s|
20
20
  s.add_development_dependency "railties"
21
21
  s.add_development_dependency "rspec-rails", "~> 2.11.0"
22
22
  s.add_development_dependency "tzinfo"
23
+ s.add_development_dependency "sqlite3"
24
+ s.add_development_dependency "activerecord"
25
+ s.add_development_dependency "awesome_print"
26
+ s.add_development_dependency "pry"
23
27
 
24
28
  s.files = `git ls-files`.split("\n")
25
29
  s.executables = `git ls-files`.split("\n").map{|f| f =~ /^bin\/(.*)/ ? $1 : nil}.compact
metadata CHANGED
@@ -1,8 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: switch_user
3
3
  version: !ruby/object:Gem::Version
4
- prerelease:
5
- version: 0.9.3
4
+ version: 0.9.4
6
5
  platform: ruby
7
6
  authors:
8
7
  - Richard Huang
@@ -10,104 +9,148 @@ authors:
10
9
  autorequire:
11
10
  bindir: bin
12
11
  cert_chain: []
13
- date: 2013-05-31 00:00:00.000000000 Z
12
+ date: 2013-11-26 00:00:00.000000000 Z
14
13
  dependencies:
15
14
  - !ruby/object:Gem::Dependency
16
- version_requirements: !ruby/object:Gem::Requirement
15
+ name: activesupport
16
+ requirement: !ruby/object:Gem::Requirement
17
17
  requirements:
18
18
  - - ! '>='
19
19
  - !ruby/object:Gem::Version
20
20
  version: '0'
21
- none: false
22
- name: activesupport
23
21
  type: :development
24
22
  prerelease: false
25
- requirement: !ruby/object:Gem::Requirement
23
+ version_requirements: !ruby/object:Gem::Requirement
26
24
  requirements:
27
25
  - - ! '>='
28
26
  - !ruby/object:Gem::Version
29
27
  version: '0'
30
- none: false
31
28
  - !ruby/object:Gem::Dependency
32
- version_requirements: !ruby/object:Gem::Requirement
29
+ name: bundler
30
+ requirement: !ruby/object:Gem::Requirement
33
31
  requirements:
34
32
  - - ! '>='
35
33
  - !ruby/object:Gem::Version
36
34
  version: 1.0.0
37
- none: false
38
- name: bundler
39
35
  type: :development
40
36
  prerelease: false
41
- requirement: !ruby/object:Gem::Requirement
37
+ version_requirements: !ruby/object:Gem::Requirement
42
38
  requirements:
43
39
  - - ! '>='
44
40
  - !ruby/object:Gem::Version
45
41
  version: 1.0.0
46
- none: false
47
42
  - !ruby/object:Gem::Dependency
48
- version_requirements: !ruby/object:Gem::Requirement
43
+ name: actionpack
44
+ requirement: !ruby/object:Gem::Requirement
49
45
  requirements:
50
46
  - - ! '>='
51
47
  - !ruby/object:Gem::Version
52
48
  version: '0'
53
- none: false
54
- name: actionpack
55
49
  type: :development
56
50
  prerelease: false
57
- requirement: !ruby/object:Gem::Requirement
51
+ version_requirements: !ruby/object:Gem::Requirement
58
52
  requirements:
59
53
  - - ! '>='
60
54
  - !ruby/object:Gem::Version
61
55
  version: '0'
62
- none: false
63
56
  - !ruby/object:Gem::Dependency
64
- version_requirements: !ruby/object:Gem::Requirement
57
+ name: railties
58
+ requirement: !ruby/object:Gem::Requirement
65
59
  requirements:
66
60
  - - ! '>='
67
61
  - !ruby/object:Gem::Version
68
62
  version: '0'
69
- none: false
70
- name: railties
71
63
  type: :development
72
64
  prerelease: false
73
- requirement: !ruby/object:Gem::Requirement
65
+ version_requirements: !ruby/object:Gem::Requirement
74
66
  requirements:
75
67
  - - ! '>='
76
68
  - !ruby/object:Gem::Version
77
69
  version: '0'
78
- none: false
79
70
  - !ruby/object:Gem::Dependency
80
- version_requirements: !ruby/object:Gem::Requirement
71
+ name: rspec-rails
72
+ requirement: !ruby/object:Gem::Requirement
81
73
  requirements:
82
74
  - - ~>
83
75
  - !ruby/object:Gem::Version
84
76
  version: 2.11.0
85
- none: false
86
- name: rspec-rails
87
77
  type: :development
88
78
  prerelease: false
89
- requirement: !ruby/object:Gem::Requirement
79
+ version_requirements: !ruby/object:Gem::Requirement
90
80
  requirements:
91
81
  - - ~>
92
82
  - !ruby/object:Gem::Version
93
83
  version: 2.11.0
94
- none: false
95
84
  - !ruby/object:Gem::Dependency
85
+ name: tzinfo
86
+ requirement: !ruby/object:Gem::Requirement
87
+ requirements:
88
+ - - ! '>='
89
+ - !ruby/object:Gem::Version
90
+ version: '0'
91
+ type: :development
92
+ prerelease: false
96
93
  version_requirements: !ruby/object:Gem::Requirement
97
94
  requirements:
98
95
  - - ! '>='
99
96
  - !ruby/object:Gem::Version
100
97
  version: '0'
101
- none: false
102
- name: tzinfo
98
+ - !ruby/object:Gem::Dependency
99
+ name: sqlite3
100
+ requirement: !ruby/object:Gem::Requirement
101
+ requirements:
102
+ - - ! '>='
103
+ - !ruby/object:Gem::Version
104
+ version: '0'
105
+ type: :development
106
+ prerelease: false
107
+ version_requirements: !ruby/object:Gem::Requirement
108
+ requirements:
109
+ - - ! '>='
110
+ - !ruby/object:Gem::Version
111
+ version: '0'
112
+ - !ruby/object:Gem::Dependency
113
+ name: activerecord
114
+ requirement: !ruby/object:Gem::Requirement
115
+ requirements:
116
+ - - ! '>='
117
+ - !ruby/object:Gem::Version
118
+ version: '0'
119
+ type: :development
120
+ prerelease: false
121
+ version_requirements: !ruby/object:Gem::Requirement
122
+ requirements:
123
+ - - ! '>='
124
+ - !ruby/object:Gem::Version
125
+ version: '0'
126
+ - !ruby/object:Gem::Dependency
127
+ name: awesome_print
128
+ requirement: !ruby/object:Gem::Requirement
129
+ requirements:
130
+ - - ! '>='
131
+ - !ruby/object:Gem::Version
132
+ version: '0'
103
133
  type: :development
104
134
  prerelease: false
135
+ version_requirements: !ruby/object:Gem::Requirement
136
+ requirements:
137
+ - - ! '>='
138
+ - !ruby/object:Gem::Version
139
+ version: '0'
140
+ - !ruby/object:Gem::Dependency
141
+ name: pry
105
142
  requirement: !ruby/object:Gem::Requirement
106
143
  requirements:
107
144
  - - ! '>='
108
145
  - !ruby/object:Gem::Version
109
146
  version: '0'
110
- none: false
147
+ type: :development
148
+ prerelease: false
149
+ version_requirements: !ruby/object:Gem::Requirement
150
+ requirements:
151
+ - - ! '>='
152
+ - !ruby/object:Gem::Version
153
+ version: '0'
111
154
  description: Easily switch current user to speed up development
112
155
  email:
113
156
  - flyerhzm@gmail.com
@@ -124,6 +167,7 @@ files:
124
167
  - app/controllers/switch_user_controller.rb
125
168
  - app/helpers/switch_user_helper.rb
126
169
  - app/views/switch_user/_widget.html.erb
170
+ - config/database.yml
127
171
  - config/routes.rb
128
172
  - lib/generators/switch_user/install/USAGE
129
173
  - lib/generators/switch_user/install/install_generator.rb
@@ -142,8 +186,10 @@ files:
142
186
  - lib/switch_user/provider/sorcery.rb
143
187
  - lib/switch_user/rails.rb
144
188
  - lib/switch_user/user_loader.rb
189
+ - lib/switch_user/user_set.rb
145
190
  - lib/switch_user/version.rb
146
191
  - spec/controllers/switch_user_controller_spec.rb
192
+ - spec/integration/switch_user_spec.rb
147
193
  - spec/provider/authlogic_spec.rb
148
194
  - spec/provider/clearance_spec.rb
149
195
  - spec/provider/devise_spec.rb
@@ -157,10 +203,12 @@ files:
157
203
  - spec/support/provider.rb
158
204
  - spec/switch_user/lambda_guard_spec.rb
159
205
  - spec/switch_user/user_loader_spec.rb
206
+ - spec/switch_user/user_set_spec.rb
160
207
  - spec/switch_user_spec.rb
161
208
  - switch_user.gemspec
162
209
  homepage: http://rubygems.org/gems/switch_user
163
210
  licenses: []
211
+ metadata: {}
164
212
  post_install_message:
165
213
  rdoc_options: []
166
214
  require_paths:
@@ -170,17 +218,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
170
218
  - - ! '>='
171
219
  - !ruby/object:Gem::Version
172
220
  version: '0'
173
- none: false
174
221
  required_rubygems_version: !ruby/object:Gem::Requirement
175
222
  requirements:
176
223
  - - ! '>='
177
224
  - !ruby/object:Gem::Version
178
225
  version: 1.3.6
179
- none: false
180
226
  requirements: []
181
227
  rubyforge_project: switch_user
182
- rubygems_version: 1.8.23
228
+ rubygems_version: 2.1.11
183
229
  signing_key:
184
- specification_version: 3
230
+ specification_version: 4
185
231
  summary: Easily switch current user to speed up development
186
232
  test_files: []