devise_masquerade 0.0.8 → 0.0.9
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 +0 -1
- data/lib/devise_masquerade/model.rb +23 -8
- data/lib/devise_masquerade/version.rb +1 -1
- data/spec/models/user_spec.rb +14 -1
- metadata +4 -4
data/.travis.yml
CHANGED
@@ -1,26 +1,41 @@
|
|
1
1
|
module Devise
|
2
2
|
module Models
|
3
3
|
module Masqueradable
|
4
|
-
|
4
|
+
def self.included(base)
|
5
|
+
base.class_eval do
|
6
|
+
attr_reader :masquerade_key
|
5
7
|
|
6
|
-
|
7
|
-
|
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
|
16
|
-
id = Rails.cache.read(
|
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
|
-
|
34
|
+
remove_masquerade_key!(key)
|
20
35
|
|
21
|
-
|
36
|
+
find_by_id(id)
|
22
37
|
end
|
23
|
-
end
|
38
|
+
end # ClassMethods
|
24
39
|
end
|
25
40
|
end
|
26
41
|
end
|
data/spec/models/user_spec.rb
CHANGED
@@ -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(:
|
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.
|
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-
|
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:
|
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:
|
153
|
+
hash: 3658538405332268443
|
154
154
|
requirements: []
|
155
155
|
rubyforge_project:
|
156
156
|
rubygems_version: 1.8.25
|