devise_masquerade 0.0.8 → 0.0.9

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 CHANGED
@@ -1,5 +1,4 @@
1
1
  language: ruby
2
2
  rvm:
3
- - "1.9.2"
4
3
  - "1.9.3"
5
4
 
@@ -1,26 +1,41 @@
1
1
  module Devise
2
2
  module Models
3
3
  module Masqueradable
4
- extend ActiveSupport::Concern
4
+ def self.included(base)
5
+ base.class_eval do
6
+ attr_reader :masquerade_key
5
7
 
6
- included do
7
- attr_reader :masquerade_key
8
+ include InstanceMethods
9
+ extend ClassMethods
10
+ end
11
+ end
8
12
 
13
+ module InstanceMethods
9
14
  def masquerade!
10
15
  @masquerade_key = SecureRandom.base64(Devise.masquerade_key_size)
11
16
 
12
17
  Rails.cache.write("#{self.class.name.pluralize.downcase}:#{@masquerade_key}:masquerade", id, :expires_in => Devise.masquerade_expires_in)
13
18
  end
19
+ end
20
+
21
+ module ClassMethods
22
+ def cache_masquerade_key_by(key)
23
+ "#{self.name.pluralize.downcase}:#{key}:masquerade"
24
+ end
25
+
26
+ def remove_masquerade_key!(key)
27
+ Rails.cache.delete(cache_masquerade_key_by(key))
28
+ end
14
29
 
15
- def self.find_by_masquerade_key(key)
16
- id = Rails.cache.read("#{self.name.pluralize.downcase}:#{key}:masquerade")
30
+ def find_by_masquerade_key(key)
31
+ id = Rails.cache.read(cache_masquerade_key_by(key))
17
32
 
18
33
  # clean up the cached masquerade key value
19
- Rails.cache.write("#{self.name.pluralize.downcase}:#{key}:masquerade", nil)
34
+ remove_masquerade_key!(key)
20
35
 
21
- self.find_by_id(id)
36
+ find_by_id(id)
22
37
  end
23
- end
38
+ end # ClassMethods
24
39
  end
25
40
  end
26
41
  end
@@ -1,3 +1,3 @@
1
1
  module DeviseMasquerade
2
- VERSION = "0.0.8"
2
+ VERSION = "0.0.9"
3
3
  end
@@ -6,8 +6,21 @@ 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
+ user.masquerade!
10
+ end
11
+ end
9
12
 
13
+ describe '#remove_masquerade_key' do
14
+ before { SecureRandom.stub(:base64).and_return("secure_key") }
15
+
16
+ let(:key) { 'users:secure_key:masquerade' }
17
+
18
+ it 'should be possible to remove cached masquerade key' do
10
19
  user.masquerade!
20
+ expect(Rails.cache.exist?(key)).to be_true
21
+
22
+ User.remove_masquerade_key!('secure_key')
23
+ expect(Rails.cache.exist?(key)).to be_false
11
24
  end
12
25
  end
13
26
 
@@ -16,7 +29,7 @@ describe User do
16
29
  user.masquerade!
17
30
 
18
31
  Rails.cache.should_receive(:read).with("users:#{user.masquerade_key}:masquerade").and_return(user.id)
19
- Rails.cache.should_receive(:write).with("users:#{user.masquerade_key}:masquerade", nil)
32
+ Rails.cache.should_receive(:delete).with("users:#{user.masquerade_key}:masquerade")
20
33
 
21
34
  new_user = User.find_by_masquerade_key(user.masquerade_key)
22
35
 
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.8
4
+ version: 0.0.9
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: 2013-10-03 00:00:00.000000000 Z
12
+ date: 2013-10-04 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
@@ -141,7 +141,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
141
141
  version: '0'
142
142
  segments:
143
143
  - 0
144
- hash: -4505805506761439122
144
+ hash: 3658538405332268443
145
145
  required_rubygems_version: !ruby/object:Gem::Requirement
146
146
  none: false
147
147
  requirements:
@@ -150,7 +150,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
150
150
  version: '0'
151
151
  segments:
152
152
  - 0
153
- hash: -4505805506761439122
153
+ hash: 3658538405332268443
154
154
  requirements: []
155
155
  rubyforge_project:
156
156
  rubygems_version: 1.8.25