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

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