switch_user 0.9.3 → 0.9.4

Sign up to get free protection for your applications and to get access to all the features.
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: []