devise_masquerade 0.0.3 → 0.0.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.

data/.travis.yml ADDED
@@ -0,0 +1,5 @@
1
+ language: ruby
2
+ rvm:
3
+ - "1.9.2"
4
+ - "1.9.3"
5
+
data/Guardfile CHANGED
@@ -4,6 +4,7 @@ guard 'rspec', :cli => '--format documentation', :version => 2, :all_after_pass
4
4
  watch(%r{^spec/support/.+\.rb$})
5
5
  watch(%r{^lib/(.+)\.rb$}) { "spec" }
6
6
  watch(%r{^lib/devise_masquerade/(.+)\.rb$}) { "spec" }
7
+ watch(%r{^lib/devise_masquerade/controllers/(.+)\.rb$}) { "spec" }
7
8
  watch('spec/spec_helper.rb') { "spec" }
8
9
  end
9
10
 
data/README.md CHANGED
@@ -2,6 +2,8 @@
2
2
 
3
3
  [![Build Status](https://secure.travis-ci.org/oivoodoo/devise_masquerade.png?branch=master)](https://travis-ci.org/oivoodoo/devise_masquerade)
4
4
 
5
+ [![Code Climate](https://codeclimate.com/badge.png)](https://codeclimate.com/github/oivoodoo/devise_masquerade)
6
+
5
7
  It's a utility library for enabling functionallity like login as button for
6
8
  admin.
7
9
 
@@ -59,9 +61,9 @@ Instead of user you can use your resource name admin, student or another names.
59
61
 
60
62
  ## You can redefine few options:
61
63
 
62
- Devise.masquerade_param = 'masquerade'
63
- Devise.masquerade_expires_in = 10.seconds
64
- Devise.masquerade_key_size = 16 # size of the generate by SecureRandom.base64
64
+ Devise.masquerade_param = 'masquerade'
65
+ Devise.masquerade_expires_in = 10.seconds
66
+ Devise.masquerade_key_size = 16 # size of the generate by SecureRandom.base64
65
67
 
66
68
  ## Contributing
67
69
 
data/Rakefile CHANGED
@@ -1,2 +1,6 @@
1
1
  require "bundler/gem_tasks"
2
2
 
3
+ task :default do
4
+ system 'bundle exec rspec spec/'
5
+ end
6
+
@@ -1,5 +1,7 @@
1
1
  class Devise::MasqueradesController < DeviseController
2
- prepend_before_filter :authenticate_scope!, :only => :masquerade
2
+ prepend_before_filter :authenticate_scope!
3
+
4
+ before_filter :save_masquerade_owner_session, :only => :show
3
5
 
4
6
  def show
5
7
  self.resource = resource_class.to_adapter.find_first(:id => params[:id])
@@ -11,6 +13,16 @@ class Devise::MasqueradesController < DeviseController
11
13
  redirect_to("#{after_masquerade_path_for(self.resource)}?#{after_masquerade_param_for(resource)}")
12
14
  end
13
15
 
16
+ def back
17
+ owner_user = resource_class.to_adapter.find_first(:id => session[session_key])
18
+
19
+ session[session_key] = nil
20
+
21
+ sign_in owner_user
22
+
23
+ redirect_to '/'
24
+ end
25
+
14
26
  private
15
27
 
16
28
  def authenticate_scope!
@@ -24,5 +36,13 @@ class Devise::MasqueradesController < DeviseController
24
36
  def after_masquerade_param_for(resource)
25
37
  "#{Devise.masquerade_param}=#{resource.masquerade_key}"
26
38
  end
39
+
40
+ def save_masquerade_owner_session
41
+ session[session_key] = send("current_#{resource_name}").id
42
+ end
43
+
44
+ def session_key
45
+ "devise.masquerade.#{resource_name}"
46
+ end
27
47
  end
28
48
 
@@ -5,6 +5,10 @@ module DeviseMasquerade
5
5
  scope = Devise::Mapping.find_scope!(resource)
6
6
  send("#{scope}_masquerade_path", resource)
7
7
  end
8
+
9
+ def back_masquerade_path
10
+ back_masquerade_path
11
+ end
8
12
  end
9
13
  end
10
14
  end
@@ -7,6 +7,7 @@ module ActionDispatch::Routing
7
7
  resources :masquerade, :only => :show,
8
8
  :path => mapping.path_names[:masquerade],
9
9
  :controller => controllers[:masquerades] do
10
+ get :back, :on => :collection
10
11
  end
11
12
  end
12
13
  end
@@ -1,3 +1,3 @@
1
1
  module DeviseMasquerade
2
- VERSION = "0.0.3"
2
+ VERSION = "0.0.4"
3
3
  end
@@ -8,12 +8,12 @@ describe Devise::MasqueradesController do
8
8
  before { logged_in }
9
9
 
10
10
  describe '#masquerade user' do
11
- let!(:user) { create(:user) }
11
+ let(:mask) { create(:user) }
12
12
 
13
13
  before do
14
14
  SecureRandom.should_receive(:base64).and_return("secure_key")
15
15
 
16
- get :show, :id => user.to_param
16
+ get :show, :id => mask.to_param
17
17
  end
18
18
 
19
19
  it { should redirect_to("/?masquerade=secure_key") }
@@ -25,6 +25,28 @@ describe Devise::MasqueradesController do
25
25
 
26
26
  it { should redirect_to(new_user_session_path) }
27
27
  end
28
+
29
+ describe 'back to the owner of the request' do
30
+ before { logged_in }
31
+
32
+ context 'and masquerade user' do
33
+ let(:mask) { create(:user) }
34
+
35
+ before { get :show, :id => mask.to_param }
36
+
37
+ context 'and back' do
38
+ before { get :back }
39
+
40
+ it { should redirect_to(masquerade_page) }
41
+ it { current_user.reload.should == @user }
42
+ end
43
+ end
44
+ end
45
+ end
46
+
47
+ # it's a page with masquerade button ("Login As")
48
+ def masquerade_page
49
+ "/"
28
50
  end
29
51
  end
30
52
 
@@ -1,3 +1,6 @@
1
1
  class ApplicationController < ActionController::Base
2
2
  protect_from_forgery
3
+
4
+ before_filter :masquerade_user!
3
5
  end
6
+
@@ -6,7 +6,6 @@ describe User do
6
6
  describe '#masquerade!' do
7
7
  it 'should cache special key on masquerade' do
8
8
  SecureRandom.should_receive(:base64).with(16).and_return("secure_key")
9
- Rails.cache.should_receive(:write).with("users:secure_key:masquerade", user.id, :expires_in => 10.seconds)
10
9
 
11
10
  user.masquerade!
12
11
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: devise_masquerade
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-11-20 00:00:00.000000000 Z
12
+ date: 2012-11-23 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
@@ -69,6 +69,7 @@ files:
69
69
  - .gitignore
70
70
  - .rspec
71
71
  - .rvmrc
72
+ - .travis.yml
72
73
  - Gemfile
73
74
  - Guardfile
74
75
  - LICENSE.txt