current_session 0.1.4 → 0.1.5

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: bc53442f7b800e43a4da8cc2690d72ba5466be6afce2b6d28fed7e3e62de9fea
4
- data.tar.gz: 46364f6ee395e2e2734cb0784cf700793dafb022963960d7478a5397feac8bd0
3
+ metadata.gz: 13ac22af37f6aa5545fb02c46c729473b043b67c4073c9b481015c422c7d5927
4
+ data.tar.gz: c2bd6c1da99e69a41ecadf263f2c0219633d45da7cb723476d4fb8904c8344ee
5
5
  SHA512:
6
- metadata.gz: 95c0d5af5fd5a896d277ccbb5955675ddaa04ee2caf52b41918c1aa1eae6cf0ca15d3c0cf781eddba225b3eef613a377054309347ddb3f1ae3e45b1f2002562f
7
- data.tar.gz: f8e4b72b8bab60b40af08cf0a7fedcb8cc9613e7aab7a73a8d5d97b4fb7732ccccbd59c8a76890daed5b6382efe9f6e6c9a894fc99db18a9c7a316b99d9ed7b3
6
+ metadata.gz: 1e193a8e670f0f684dc509193b0d1ada1f092551b312cc3032527520e8c1957c413a2bd77c2637556498b5f898b49974839d4752e1d09792dda68a73e357cc5f
7
+ data.tar.gz: 4cd6ca157c873142fc4c43c9a14c2a16e7f8487364d94c116204e7aca36d9b005c5f05d44e80aa3264885363d08e74271d4d442c786d7359fd44c01ee47225d3
data/.rubocop.yml CHANGED
@@ -32,3 +32,6 @@ Lint/EmptyBlock:
32
32
 
33
33
  RSpec/MultipleExpectations:
34
34
  Enabled: false
35
+
36
+ Style/SignalException:
37
+ EnforcedStyle: semantic
@@ -0,0 +1,44 @@
1
+ # frozen_string_literal: true
2
+
3
+ module CurrentSession
4
+ #
5
+ # Base class for providing auth methods
6
+ #
7
+ class AuthMethod
8
+ class_attribute :user_class
9
+
10
+ class FindBy < self
11
+ def call(&block)
12
+ find_by_auth.try(&block)
13
+ end
14
+ end
15
+
16
+ class FindOrCreateBy < self
17
+ def call(&block)
18
+ find_or_create_by_auth.try(&block)
19
+ end
20
+ end
21
+
22
+ def self.new_auth_class(auth_methods_module)
23
+ new_auth_class =
24
+ if auth_methods_module.method_defined?(:find_by_auth)
25
+ Class.new(CurrentSession::AuthMethod::FindBy) { include auth_methods_module }
26
+ elsif auth_methods_module.method_defined?(:find_or_create_by_auth)
27
+ Class.new(CurrentSession::AuthMethod::FindOrCreateBy) { include auth_methods_module }
28
+ else
29
+ fail NotImplementedError, "You must implement find_by_auth or find_or_create_by_auth"
30
+ end
31
+ new_auth_class.user_class = user_class
32
+ new_auth_class
33
+ end
34
+
35
+ def initialize(request)
36
+ @request = request
37
+ end
38
+ attr_reader :request
39
+
40
+ def auth
41
+ request.env["omniauth.auth"]
42
+ end
43
+ end
44
+ end
@@ -6,7 +6,6 @@ module CurrentSession
6
6
  #
7
7
  class Base < ActiveSupport::CurrentAttributes
8
8
  include CurrentSession::Interface
9
- include CurrentSession::RaiseNotImplementedError
10
9
  attribute :current_user
11
10
 
12
11
  class << self
@@ -22,30 +21,29 @@ module CurrentSession
22
21
  Time.current
23
22
  end
24
23
 
25
- def session_methods=(session_methods_module)
26
- @session_repository_class = Class.new(CurrentSession::Repository) { include session_methods_module }
24
+ def session_methods=(session_methods)
25
+ @session_methods = session_methods
26
+ @session_class = CurrentSession::SessionMethod.new_session_class(session_methods)
27
27
  end
28
28
 
29
29
  def session_methods(&block)
30
30
  if block
31
- session_methods = Module.new(&block)
32
- @session_repository_class = Class.new(CurrentSession::Repository) { include session_methods }
33
- @session_methods = session_methods
31
+ @session_methods = Module.new(&block)
32
+ @session_class = CurrentSession::SessionMethod.new_session_class(session_methods)
34
33
  else
35
34
  @session_methods
36
35
  end
37
36
  end
38
37
 
39
38
  def auth_methods=(auth_methods_module)
40
- @auth_class = Class.new(CurrentSession::Auth) { include auth_methods_module }
39
+ @auth_class = CurrentSession::AuthMethod.new_auth_class(auth_methods_module)
41
40
  end
42
41
 
43
42
  def auth_methods(&block)
44
43
  if block
45
- auth_methods = Module.new(&block)
46
- @auth_class = Class.new(CurrentSession::Auth) { include auth_methods }
44
+ @auth_methods = Module.new(&block)
45
+ @auth_class = CurrentSession::AuthMethod.new_auth_class(auth_methods)
47
46
  @auth_class.user_class = user_class
48
- @auth_methods = auth_methods
49
47
  else
50
48
  @auth_methods
51
49
  end
@@ -20,7 +20,7 @@ module CurrentSession
20
20
 
21
21
  def create(request)
22
22
  auth = @auth_class.new(request)
23
- auth.find_or_create_by_auth.try do |user|
23
+ auth.call do |user|
24
24
  auth.update(user)
25
25
  session_repository(request).update_session_token(user)
26
26
  end
@@ -37,7 +37,7 @@ module CurrentSession
37
37
  private
38
38
 
39
39
  def session_repository(request)
40
- @session_repository_class.new(
40
+ @session_class.new(
41
41
  request: request,
42
42
  user_class: user_class,
43
43
  session_token_class: session_token_class,
@@ -4,7 +4,11 @@ module CurrentSession
4
4
  #
5
5
  # Base class for processing to get session_token from request.session
6
6
  #
7
- class Repository
7
+ class SessionMethod
8
+ def self.new_session_class(session_methods)
9
+ Class.new(CurrentSession::SessionMethod) { include session_methods }
10
+ end
11
+
8
12
  def initialize(current_time:, request:, user_class:, session_token_class:)
9
13
  @current_time = current_time
10
14
  @request = request
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module CurrentSession
4
- VERSION = "0.1.4"
4
+ VERSION = "0.1.5"
5
5
  end
@@ -10,9 +10,8 @@ module CurrentSession
10
10
  extend ActiveSupport::Autoload
11
11
  autoload :Base
12
12
  autoload :Interface
13
- autoload :Auth
14
- autoload :Repository
15
- autoload :RaiseNotImplementedError
13
+ autoload :AuthMethod
14
+ autoload :SessionMethod
16
15
  autoload :SessionMethods
17
16
 
18
17
  def self.key(user_class)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: current_session
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.4
4
+ version: 0.1.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Masa (Aileron inc)
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-10-03 00:00:00.000000000 Z
11
+ date: 2022-10-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -146,11 +146,10 @@ files:
146
146
  - bin/setup
147
147
  - current_session.gemspec
148
148
  - lib/current_session.rb
149
- - lib/current_session/auth.rb
149
+ - lib/current_session/auth_method.rb
150
150
  - lib/current_session/base.rb
151
151
  - lib/current_session/interface.rb
152
- - lib/current_session/raise_not_implemented_error.rb
153
- - lib/current_session/repository.rb
152
+ - lib/current_session/session_method.rb
154
153
  - lib/current_session/session_methods.rb
155
154
  - lib/current_session/session_methods/active_record_session.rb
156
155
  - lib/current_session/session_methods/env_session.rb
@@ -1,19 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module CurrentSession
4
- #
5
- # Base class for providing auth methods
6
- #
7
- class Auth
8
- class_attribute :user_class
9
-
10
- def initialize(request)
11
- @request = request
12
- end
13
- attr_reader :request
14
-
15
- def auth
16
- request.env["omniauth.auth"]
17
- end
18
- end
19
- end
@@ -1,36 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module CurrentSession
4
- #
5
- # Class for verifying whether it is implemented correctly
6
- #
7
- module RaiseNotImplementedError
8
- extend ActiveSupport::Concern
9
- class_methods do
10
- def raise_not_implemented_error
11
- raise_not_implemented_error_for_repository
12
- raise_not_implemented_error_for_auth
13
- end
14
-
15
- private
16
-
17
- # rubocop:disable Layout/LineLength
18
- def raise_not_implemented_error_for_repository
19
- raise NotImplementedError, "You must setting self.session_repository_class= or session_methods" unless @session_repository_class
20
- raise NotImplementedError, "You must implement #{@session_repository_class}#find" unless @session_repository_class.method_defined? :find
21
- raise NotImplementedError, "You must implement #{@session_repository_class}#destroy" unless @session_repository_class.method_defined? :destroy
22
- raise NotImplementedError, "You must implement #{@session_repository_class}#destroy" unless @session_repository_class.method_defined? :destroy
23
- raise NotImplementedError, "You must implement #{@session_repository_class}#create" unless @session_repository_class.method_defined? :create
24
- end
25
- # rubocop:enable Layout/LineLength
26
-
27
- # rubocop:disable Layout/LineLength
28
- def raise_not_implemented_error_for_auth
29
- raise NotImplementedError, "You must setting self.auth_class= or auth_methods" unless @auth_class
30
- raise NotImplementedError, "You must implement #{@auth_class}#find_or_create_by_auth" unless @auth_class.method_defined? :find_or_create_by_auth
31
- raise NotImplementedError, "You must implement #{@auth_class}#update" unless @auth_class.method_defined? :update
32
- end
33
- # rubocop:enable Layout/LineLength
34
- end
35
- end
36
- end