ff-tbl-macros 2.0.1 → 2.0.2
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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +5 -2
- data/README.md +2 -0
- data/lib/macros/auth.rb +2 -0
- data/lib/macros/auth/expire_session_data.rb +25 -0
- data/lib/macros/auth/sign_out_all_scopes.rb +38 -0
- data/lib/macros/version.rb +1 -1
- data/spec/lib/auth/expire_session_data_spec.rb +21 -0
- data/spec/lib/auth/sign_out_all_scopes_spec.rb +42 -0
- data/spec/lib/auth_spec.rb +8 -0
- metadata +8 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9ab61cc8e2b7d908e6f9c1cb1dc102ab14c250f77f85a319d07b9870a186c04c
|
4
|
+
data.tar.gz: 612b7db20cb5f8e808a86f1c00597b0f056865ea64239dee7c144c98ac5504ff
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a37dbde0076242c7e11766234dedbc866abd58ac62a0e3a01160df5796ce97e35ade8cb8f357898bcc019c0c565da562377ead9c7a66406043f523c718b12de4
|
7
|
+
data.tar.gz: 9bf6cedb38df7e2fbb31bac449b5b8e91216b37b779372542ba1adde055563d60bbd7c81716777382babdadd0162c501a17bf3a9370a7541951eab1ac39f7ab1
|
data/CHANGELOG.md
CHANGED
@@ -1,8 +1,11 @@
|
|
1
1
|
# Changelog
|
2
2
|
|
3
3
|
## [Unreleased]
|
4
|
+
|
5
|
+
## [2.0.2] - 2019-06-20
|
4
6
|
### Added
|
5
|
-
-
|
7
|
+
- Add gem [rubocop-performance](https://github.com/rubocop-hq/rubocop-performance) to satisfy future Rubocop deprecations.
|
8
|
+
- Add new Auth Macros, SignOutAllScopes and ExpireSessionData
|
6
9
|
|
7
10
|
## [2.0.1] - 2019-05-16
|
8
11
|
### Fixed
|
@@ -32,7 +35,7 @@
|
|
32
35
|
- Add missing documentation
|
33
36
|
|
34
37
|
### Changed
|
35
|
-
- Use rubygems version
|
38
|
+
- Use rubygems version instead GitHub one
|
36
39
|
|
37
40
|
### Added
|
38
41
|
- Add Travis setup
|
data/README.md
CHANGED
data/lib/macros/auth.rb
CHANGED
@@ -0,0 +1,25 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Macros
|
4
|
+
class Auth
|
5
|
+
# Expire session data
|
6
|
+
# Macro is used in other Devise' related macros because of the bug
|
7
|
+
# https://github.com/plataformatec/devise/blob/master/lib/devise/controllers/sign_in_out.rb#L108
|
8
|
+
#
|
9
|
+
# @example
|
10
|
+
# step Macros::Auth::ExpireSessionData()
|
11
|
+
#
|
12
|
+
class ExpireSessionData < Macros::Base
|
13
|
+
# @return [Macros::Auth::ExpireSessionData] step macro instance
|
14
|
+
def initialize; end
|
15
|
+
|
16
|
+
# @param ctx [Trailblazer::Skill] tbl context hash
|
17
|
+
def call(ctx, **)
|
18
|
+
session = ctx[:warden].session_serializer.session
|
19
|
+
|
20
|
+
session.empty?
|
21
|
+
session.keys.grep(/^devise\./).each { |k| session.delete(k) }
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Macros
|
4
|
+
class Auth
|
5
|
+
# Sign out users of all scopes
|
6
|
+
#
|
7
|
+
# @example
|
8
|
+
# step Macros::Auth::SignOutAllScopes()
|
9
|
+
#
|
10
|
+
# @example specify scopes to skip sign out from
|
11
|
+
# step Macros::Auth::SignOutAllScopes(except: [:admin])
|
12
|
+
class SignOutAllScopes < Macros::Base
|
13
|
+
# @return [Macros::Auth::SignOutAllScopes] step macro instance
|
14
|
+
# @param expect [Array] list of scopes to skip sign out
|
15
|
+
def initialize(except: [])
|
16
|
+
@except = except.is_a?(Array) ? except : [except]
|
17
|
+
end
|
18
|
+
|
19
|
+
# Performs a step by sign out users
|
20
|
+
# @param ctx [Trailblazer::Skill] tbl context hash
|
21
|
+
def call(ctx, **)
|
22
|
+
warden = ctx[:warden]
|
23
|
+
|
24
|
+
if @except.empty?
|
25
|
+
warden.logout
|
26
|
+
else
|
27
|
+
(Devise.mappings.keys - @except).each do |scope|
|
28
|
+
warden.logout(scope) if warden.authenticated?(scope: scope)
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
Macros::Auth::ExpireSessionData.new.call(ctx)
|
33
|
+
warden.clear_strategies_cache!
|
34
|
+
warden.lock!
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
data/lib/macros/version.rb
CHANGED
@@ -0,0 +1,21 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
RSpec.describe Macros::Auth::ExpireSessionData do
|
4
|
+
include Warden::Test::Mock
|
5
|
+
|
6
|
+
subject(:step) { described_class.new }
|
7
|
+
let(:ctx) { { warden: warden } }
|
8
|
+
let(:session) { warden.session_serializer.session }
|
9
|
+
|
10
|
+
before do
|
11
|
+
warden.session_serializer.session[:lorem] = :ipsum
|
12
|
+
warden.session_serializer.session['devise.lorem'] = :ipsum
|
13
|
+
end
|
14
|
+
|
15
|
+
it 'expects to clear devise related data from session' do
|
16
|
+
step.call(ctx)
|
17
|
+
|
18
|
+
expect(session[:lorem]).to eql :ipsum
|
19
|
+
expect(session['devise.lorem']).to be nil
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,42 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
RSpec.describe Macros::Auth::SignOutAllScopes do
|
4
|
+
include Warden::Test::Mock
|
5
|
+
|
6
|
+
subject(:step) { described_class.new(params) }
|
7
|
+
let(:params) { {} }
|
8
|
+
|
9
|
+
let(:user) { mock_model('User') }
|
10
|
+
let(:foo_user) { mock_model('FooUser') }
|
11
|
+
let(:admin) { mock_model('Admin') }
|
12
|
+
|
13
|
+
let(:ctx) { { warden: warden } }
|
14
|
+
|
15
|
+
before do
|
16
|
+
devise = class_double('Devise').as_stubbed_const
|
17
|
+
allow(devise).to receive_message_chain(:mappings, :keys).and_return([:user, :foo_user, :admin])
|
18
|
+
|
19
|
+
warden.set_user(foo_user, scope: :foo_user)
|
20
|
+
warden.set_user(admin, scope: :admin)
|
21
|
+
end
|
22
|
+
|
23
|
+
it 'expects to sign out all users' do
|
24
|
+
step.call(ctx)
|
25
|
+
|
26
|
+
expect(warden.authenticated?(:user)).to be false
|
27
|
+
expect(warden.authenticated?(:foo_user)).to be false
|
28
|
+
expect(warden.authenticated?(:admin)).to be false
|
29
|
+
end
|
30
|
+
|
31
|
+
context 'except param passed' do
|
32
|
+
let(:params) { { except: :admin } }
|
33
|
+
|
34
|
+
it 'expects to sign out all users except admin' do
|
35
|
+
step.call(ctx)
|
36
|
+
|
37
|
+
expect(warden.authenticated?(:user)).to be false
|
38
|
+
expect(warden.authenticated?(:foo_user)).to be false
|
39
|
+
expect(warden.authenticated?(:admin)).to be true
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
data/spec/lib/auth_spec.rb
CHANGED
@@ -12,4 +12,12 @@ RSpec.describe Macros::Auth do
|
|
12
12
|
describe '#SignOut()' do
|
13
13
|
it { expect(described_class::SignOut()).to be_a described_class::SignOut }
|
14
14
|
end
|
15
|
+
|
16
|
+
describe '#SignOutAllScopes()' do
|
17
|
+
it { expect(described_class::SignOutAllScopes()).to be_a described_class::SignOutAllScopes }
|
18
|
+
end
|
19
|
+
|
20
|
+
describe '#ExpireSessionData()' do
|
21
|
+
it { expect(described_class::ExpireSessionData()).to be_a described_class::ExpireSessionData }
|
22
|
+
end
|
15
23
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ff-tbl-macros
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.0.
|
4
|
+
version: 2.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Artur Szwed, Claudio Perez Gamayo
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-
|
11
|
+
date: 2019-06-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -70,8 +70,10 @@ files:
|
|
70
70
|
- lib/ff-tbl-macros.rb
|
71
71
|
- lib/macros/auth.rb
|
72
72
|
- lib/macros/auth/authenticate.rb
|
73
|
+
- lib/macros/auth/expire_session_data.rb
|
73
74
|
- lib/macros/auth/sign_in.rb
|
74
75
|
- lib/macros/auth/sign_out.rb
|
76
|
+
- lib/macros/auth/sign_out_all_scopes.rb
|
75
77
|
- lib/macros/base.rb
|
76
78
|
- lib/macros/contract.rb
|
77
79
|
- lib/macros/contract/extract_params.rb
|
@@ -95,7 +97,9 @@ files:
|
|
95
97
|
- lib/macros/verify_params/date.rb
|
96
98
|
- lib/macros/version.rb
|
97
99
|
- spec/lib/auth/authenticate_spec.rb
|
100
|
+
- spec/lib/auth/expire_session_data_spec.rb
|
98
101
|
- spec/lib/auth/sign_in_spec.rb
|
102
|
+
- spec/lib/auth/sign_out_all_scopes_spec.rb
|
99
103
|
- spec/lib/auth/sign_out_spec.rb
|
100
104
|
- spec/lib/auth_spec.rb
|
101
105
|
- spec/lib/contract/extract_params_spec.rb
|
@@ -145,7 +149,9 @@ specification_version: 4
|
|
145
149
|
summary: Trailblazer shared macros
|
146
150
|
test_files:
|
147
151
|
- spec/lib/auth/authenticate_spec.rb
|
152
|
+
- spec/lib/auth/expire_session_data_spec.rb
|
148
153
|
- spec/lib/auth/sign_in_spec.rb
|
154
|
+
- spec/lib/auth/sign_out_all_scopes_spec.rb
|
149
155
|
- spec/lib/auth/sign_out_spec.rb
|
150
156
|
- spec/lib/auth_spec.rb
|
151
157
|
- spec/lib/contract/extract_params_spec.rb
|