devise_masquerade 0.1.3 → 0.1.4

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of devise_masquerade might be problematic. Click here for more details.

checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- NjM2NWJhYTU5ODRkMDcyZTVjYmQ0NmFlZWQxYTBiOGZmOTAxYThlYw==
4
+ ZGE2YzU4NTA5NmVhZjFkMjA5YzM0ODZkMDBhZWI5OWU0MTkwYjI4NQ==
5
5
  data.tar.gz: !binary |-
6
- OTE3MTFkYzgzNTliMzcwYWYwZDBkNWU3MGMwMmM1MjJlNDcxZjViMA==
6
+ NWYyMmJlZGRiZjMwOTYwMDgxNGEwNGZiYjkxNDkxMDg0NzdkOGUwNA==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- OGZlMGQxNGNjMDA1NzQzYjdjZDg5NDQwNmU1NzYyNzU4ZDNmYWUyY2FhNjQx
10
- MjM2ZDVmOTA3MmQ2YjBmM2ZiYjIxNDM4OTlmZDcyNzdkOThhMzFkZWQ4NjBm
11
- OGRhZGUwZWIwNzU3ZmZmNTQ4YTc1MjhlNzJkM2IzNjBlYmNhYzU=
9
+ ZjkzYzMzZjczMDYzNzI1YzFmNDU0ODg4NTQ4ZWIzN2U0ODAxNzBiODMzNWM0
10
+ OGIwNWM4YTRlZTVkNWNkZDZlNTA0NTE4OTU5NDE5YTBiMjhiY2IzOWVjMzZk
11
+ NGNhYTRlODc2NzU0N2Q0OTY1NTQ4OTlmYmUwNmUwYjk1MmU2MzM=
12
12
  data.tar.gz: !binary |-
13
- NDAyYjk3NWZjOTY5ZmJmOGQ1ZTgwNDM1ZDQyMTIzY2Y3MDM4ZWY0YjdmODg4
14
- NDM4YzE2NWVjYTRiMDM3MzZlMmFhN2UyYWU2NzAzN2M2MzlmMTJiYWY5OGFh
15
- ZTdmM2U2ODEzMmY5MTg2M2M0MTIwMzk5NWRjY2UzNDVhMzFlNDk=
13
+ YjY5NmVmMGM0M2JlYmRlMDY2MTBhMDRlM2Y0MTg2MDg1N2Y3NGU5ZGEwNDNh
14
+ YTYzNjI3Yjc2MWFhMjEzM2E2NTIyZWNmNGI5YjU1NDBhYjhmZDJkNzg3MTdk
15
+ MDZkZTIxYWZkNTU0YWFhOThhODY3OTgyNzQ2YWE5ZWFjYTc1MDA=
data/.gitignore CHANGED
@@ -17,3 +17,6 @@ test/version_tmp
17
17
  spec/dummy/log/*.log
18
18
  spec/dummy/db/*.sqlite3
19
19
  tmp
20
+ tags
21
+ .vimrc
22
+
@@ -3,12 +3,13 @@ module DeviseMasquerade
3
3
  module Helpers
4
4
  def self.define_helpers(mapping)
5
5
  name = mapping.name
6
+ class_name = mapping.class_name
6
7
 
7
8
  class_eval <<-METHODS, __FILE__, __LINE__ + 1
8
9
  def masquerade_#{name}!
9
10
  return if params[:masquerade].blank?
10
11
 
11
- #{name} = ::#{name.to_s.classify}.find_by_masquerade_key(params[:masquerade])
12
+ #{name} = ::#{class_name}.find_by_masquerade_key(params[:masquerade])
12
13
 
13
14
  sign_in(#{name}, :bypass => Devise.masquerade_bypass_warden_callback) if #{name}
14
15
  end
@@ -13,14 +13,13 @@ module Devise
13
13
  module InstanceMethods
14
14
  def masquerade!
15
15
  @masquerade_key = SecureRandom.urlsafe_base64(Devise.masquerade_key_size)
16
-
17
- Rails.cache.write("#{self.class.name.pluralize.downcase}:#{@masquerade_key}:masquerade", id, :expires_in => Devise.masquerade_expires_in)
16
+ Rails.cache.write("#{self.class.name.pluralize.underscore}:#{@masquerade_key}:masquerade", id, :expires_in => Devise.masquerade_expires_in)
18
17
  end
19
18
  end
20
19
 
21
20
  module ClassMethods
22
21
  def cache_masquerade_key_by(key)
23
- "#{self.name.pluralize.downcase}:#{key}:masquerade"
22
+ "#{self.name.pluralize.underscore}:#{key}:masquerade"
24
23
  end
25
24
 
26
25
  def remove_masquerade_key!(key)
@@ -1,3 +1,3 @@
1
1
  module DeviseMasquerade
2
- VERSION = "0.1.3"
2
+ VERSION = "0.1.4"
3
3
  end
@@ -0,0 +1,19 @@
1
+ require 'spec_helper'
2
+
3
+ describe Admin::DashboardController do
4
+ context 'when logged in' do
5
+ before { admin_logged_in }
6
+
7
+ context 'and admin masquerade by user' do
8
+ let!(:user) { create(:admin_user) }
9
+
10
+ before do
11
+ user.masquerade!
12
+ get :index, :masquerade => user.masquerade_key
13
+ end
14
+
15
+ it { current_admin_user.reload.should == user }
16
+ end
17
+ end
18
+ end
19
+
@@ -0,0 +1,9 @@
1
+ class Admin::DashboardController < ApplicationController
2
+ before_filter :authenticate_admin_user!
3
+ before_filter :masquerade_admin_user!
4
+
5
+ def index
6
+ @users = Admin::User.where("admin_users.id != ?", current_admin_user.id).all
7
+ end
8
+ end
9
+
@@ -1,7 +1,4 @@
1
1
  class ApplicationController < ActionController::Base
2
2
  protect_from_forgery
3
-
4
- before_filter :authenticate_user!
5
- before_filter :masquerade_user!
6
3
  end
7
4
 
@@ -1,4 +1,5 @@
1
1
  class DashboardController < ApplicationController
2
+ before_filter :authenticate_user!
2
3
  before_filter :masquerade_user!
3
4
 
4
5
  def index
@@ -0,0 +1,13 @@
1
+ class Admin::User < ActiveRecord::Base
2
+ # Include default devise modules. Others available are:
3
+ # :token_authenticatable, :confirmable,
4
+ # :lockable, :timeoutable and :omniauthable
5
+ devise :database_authenticatable, :registerable,
6
+ :recoverable, :rememberable, :trackable, :validatable,
7
+ :masqueradable
8
+
9
+ # Setup accessible (or protected) attributes for your model
10
+ attr_accessible :email, :password, :password_confirmation, :remember_me
11
+ # attr_accessible :title, :body
12
+ end
13
+
@@ -0,0 +1,6 @@
1
+ module Admin
2
+ def self.table_name_prefix
3
+ 'admin_'
4
+ end
5
+ end
6
+
@@ -0,0 +1,3 @@
1
+ <h1>Users</h1>
2
+
3
+ <%= render @users %>
@@ -1,6 +1,11 @@
1
1
  Dummy::Application.routes.draw do
2
2
  devise_for :users
3
+ devise_for :admin_users, :class_name => 'Admin::User'
3
4
 
4
5
  root :to => 'dashboard#index'
6
+
7
+ namespace :admin do
8
+ root :to => 'dashboard#index'
9
+ end
5
10
  end
6
11
 
@@ -0,0 +1,47 @@
1
+ class CreateAdminUsers < ActiveRecord::Migration
2
+ def change
3
+ create_table(:admin_users) do |t|
4
+ ## Database authenticatable
5
+ t.string :email, :null => false, :default => ""
6
+ t.string :encrypted_password, :null => false, :default => ""
7
+
8
+ ## Recoverable
9
+ t.string :reset_password_token
10
+ t.datetime :reset_password_sent_at
11
+
12
+ ## Rememberable
13
+ t.datetime :remember_created_at
14
+
15
+ ## Trackable
16
+ t.integer :sign_in_count, :default => 0
17
+ t.datetime :current_sign_in_at
18
+ t.datetime :last_sign_in_at
19
+ t.string :current_sign_in_ip
20
+ t.string :last_sign_in_ip
21
+
22
+ ## Confirmable
23
+ # t.string :confirmation_token
24
+ # t.datetime :confirmed_at
25
+ # t.datetime :confirmation_sent_at
26
+ # t.string :unconfirmed_email # Only if using reconfirmable
27
+
28
+ ## Lockable
29
+ # t.integer :failed_attempts, :default => 0 # Only if lock strategy is :failed_attempts
30
+ # t.string :unlock_token # Only if unlock strategy is :email or :both
31
+ # t.datetime :locked_at
32
+
33
+ ## Token authenticatable
34
+ # t.string :authentication_token
35
+
36
+
37
+ t.timestamps
38
+ end
39
+
40
+ add_index :admin_users, :email, :unique => true
41
+ add_index :admin_users, :reset_password_token, :unique => true
42
+ # add_index :admin_users, :confirmation_token, :unique => true
43
+ # add_index :admin_users, :unlock_token, :unique => true
44
+ # add_index :admin_users, :authentication_token, :unique => true
45
+ end
46
+ end
47
+
@@ -11,7 +11,25 @@
11
11
  #
12
12
  # It's strongly recommended to check this file into your version control system.
13
13
 
14
- ActiveRecord::Schema.define(:version => 20121119085620) do
14
+ ActiveRecord::Schema.define(:version => 20140418160449) do
15
+
16
+ create_table "admin_users", :force => true do |t|
17
+ t.string "email", :default => "", :null => false
18
+ t.string "encrypted_password", :default => "", :null => false
19
+ t.string "reset_password_token"
20
+ t.datetime "reset_password_sent_at"
21
+ t.datetime "remember_created_at"
22
+ t.integer "sign_in_count", :default => 0
23
+ t.datetime "current_sign_in_at"
24
+ t.datetime "last_sign_in_at"
25
+ t.string "current_sign_in_ip"
26
+ t.string "last_sign_in_ip"
27
+ t.datetime "created_at", :null => false
28
+ t.datetime "updated_at", :null => false
29
+ end
30
+
31
+ add_index "admin_users", ["email"], :name => "index_admin_users_on_email", :unique => true
32
+ add_index "admin_users", ["reset_password_token"], :name => "index_admin_users_on_reset_password_token", :unique => true
15
33
 
16
34
  create_table "users", :force => true do |t|
17
35
  t.string "email", :default => "", :null => false
@@ -7,5 +7,14 @@ module Authentication
7
7
  def current_user
8
8
  controller.send(:current_user)
9
9
  end
10
+
11
+ def admin_logged_in
12
+ @admin_user ||= create(:admin_user)
13
+ sign_in(@admin_user)
14
+ end
15
+
16
+ def current_admin_user
17
+ controller.send(:current_admin_user)
18
+ end
10
19
  end
11
20
 
@@ -6,5 +6,11 @@ FactoryGirl.define do
6
6
  password 'password'
7
7
  password_confirmation 'password'
8
8
  end
9
+
10
+ factory :admin_user, :class => 'Admin::User' do
11
+ email
12
+ password 'password'
13
+ password_confirmation 'password'
14
+ end
9
15
  end
10
16
 
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.1.3
4
+ version: 0.1.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alexandr Korsak
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-04-18 00:00:00.000000000 Z
11
+ date: 2014-04-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -82,13 +82,18 @@ files:
82
82
  - lib/devise_masquerade/rails.rb
83
83
  - lib/devise_masquerade/routes.rb
84
84
  - lib/devise_masquerade/version.rb
85
+ - spec/controllers/admin/dashboard_controller_spec.rb
85
86
  - spec/controllers/dashboard_controller_spec.rb
86
87
  - spec/controllers/devise/masquerades_controller_spec.rb
87
88
  - spec/dummy/Rakefile
89
+ - spec/dummy/app/controllers/admin/dashboard_controller.rb
88
90
  - spec/dummy/app/controllers/application_controller.rb
89
91
  - spec/dummy/app/controllers/dashboard_controller.rb
90
92
  - spec/dummy/app/helpers/application_helper.rb
93
+ - spec/dummy/app/models/admin.rb
94
+ - spec/dummy/app/models/admin/user.rb
91
95
  - spec/dummy/app/models/user.rb
96
+ - spec/dummy/app/views/admin/dashboard/index.html.erb
92
97
  - spec/dummy/app/views/dashboard/index.html.erb
93
98
  - spec/dummy/app/views/layouts/application.html.erb
94
99
  - spec/dummy/app/views/users/_user.html.erb
@@ -110,6 +115,7 @@ files:
110
115
  - spec/dummy/config/locales/en.yml
111
116
  - spec/dummy/config/routes.rb
112
117
  - spec/dummy/db/migrate/20121119085620_devise_create_users.rb
118
+ - spec/dummy/db/migrate/20140418160449_create_admin_users.rb
113
119
  - spec/dummy/db/schema.rb
114
120
  - spec/dummy/db/seeds.rb
115
121
  - spec/dummy/public/.empty
@@ -148,13 +154,18 @@ test_files:
148
154
  - features/step_definitions/auth_steps.rb
149
155
  - features/step_definitions/back_steps.rb
150
156
  - features/support/env.rb
157
+ - spec/controllers/admin/dashboard_controller_spec.rb
151
158
  - spec/controllers/dashboard_controller_spec.rb
152
159
  - spec/controllers/devise/masquerades_controller_spec.rb
153
160
  - spec/dummy/Rakefile
161
+ - spec/dummy/app/controllers/admin/dashboard_controller.rb
154
162
  - spec/dummy/app/controllers/application_controller.rb
155
163
  - spec/dummy/app/controllers/dashboard_controller.rb
156
164
  - spec/dummy/app/helpers/application_helper.rb
165
+ - spec/dummy/app/models/admin.rb
166
+ - spec/dummy/app/models/admin/user.rb
157
167
  - spec/dummy/app/models/user.rb
168
+ - spec/dummy/app/views/admin/dashboard/index.html.erb
158
169
  - spec/dummy/app/views/dashboard/index.html.erb
159
170
  - spec/dummy/app/views/layouts/application.html.erb
160
171
  - spec/dummy/app/views/users/_user.html.erb
@@ -176,6 +187,7 @@ test_files:
176
187
  - spec/dummy/config/locales/en.yml
177
188
  - spec/dummy/config/routes.rb
178
189
  - spec/dummy/db/migrate/20121119085620_devise_create_users.rb
190
+ - spec/dummy/db/migrate/20140418160449_create_admin_users.rb
179
191
  - spec/dummy/db/schema.rb
180
192
  - spec/dummy/db/seeds.rb
181
193
  - spec/dummy/public/.empty