dscf-payment 0.2.0 → 0.2.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 01254e0e3616ec35935c0e4d9f8420a414b5620915a9fc71b42ba684ba6a3997
4
- data.tar.gz: edb383381aa4373aece9e828b19a4bca6e51b10456f89bd6bc544107714d25bb
3
+ metadata.gz: b0d9c2c2ffad319b66d7d0bc41dfe3b5d6a3f13ade5bf2765c38385bf69b56da
4
+ data.tar.gz: c5575f58634a64d7122fb1c332d882dd7700c85df82f0fc219c087e258614066
5
5
  SHA512:
6
- metadata.gz: c0a600155c5fb25ca4784be1351b13d8a751d4bba9fb5dcfce27eadfa1c372c2837da2750edf4af2bdef7382a0737236aea13376c3c6c1b2a2d376fc300e3ef0
7
- data.tar.gz: a6833bc6a901925556e06dffd6dea0782ba34d7e3d5cf4115f3d859b298055c1f425c6bd6cea553a3e1e38bb3e208ef455280447cdcfadcde804fe3db45e9c21
6
+ metadata.gz: c2547690bba901299ffdeb7687e5292fc2fdef75c4226c694f85f6d69a06f357cdf03f66d3ce872cd3dfff1869296163855782d3dd988ba21d7aa01e696fdb04
7
+ data.tar.gz: e746b57c91029a9e8b7cd90580c33c58e21b0b6749d5dc206fc2e50c9270ef53d24aa11f2d9ffdf18449670dce46134e918a41a295584d48cc89bfa6a380e466
@@ -0,0 +1,42 @@
1
+ module Dscf
2
+ module Banking
3
+ class ApplicationController < ActionController::API
4
+ include Dscf::Core::Authenticatable
5
+ include Dscf::Core::JsonResponse
6
+ before_action :authenticate_user
7
+ before_action :demo_bypass_permissions!
8
+
9
+ # TEMPORARY DEMO BYPASS:
10
+ # Bypass banking authorization checks for authenticated users only.
11
+ # Remove after the demo.
12
+ def bypass_permissions_for_demo?
13
+ true
14
+ end
15
+
16
+ def pundit_user
17
+ user = current_user
18
+ return nil unless user
19
+
20
+ bypass_permissions_on_user!(user)
21
+ end
22
+
23
+ private
24
+
25
+ def demo_bypass_permissions!
26
+ skip_authorization if respond_to?(:skip_authorization, true)
27
+ skip_policy_scope if respond_to?(:skip_policy_scope, true)
28
+ end
29
+
30
+ def bypass_permissions_on_user!(user)
31
+ return user if user.instance_variable_defined?(:@_banking_demo_permission_bypass)
32
+
33
+ user.define_singleton_method(:has_permission?) { |_permission_code| true }
34
+ user.define_singleton_method(:can?) { |permission_code| has_permission?(permission_code) }
35
+ user.define_singleton_method(:super_admin?) { true }
36
+ user.instance_variable_set(:@_banking_demo_permission_bypass, true)
37
+
38
+ user
39
+ end
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,44 @@
1
+ module Dscf
2
+ module Payment
3
+ module DemoPermissionBypass
4
+ extend ActiveSupport::Concern
5
+
6
+ included do
7
+ before_action :demo_bypass_permissions!
8
+ end
9
+
10
+ def bypass_permissions_for_demo?
11
+ true
12
+ end
13
+
14
+ def pundit_user
15
+ user = current_user
16
+ return nil unless user
17
+
18
+ bypass_permissions_on_user!(user)
19
+ end
20
+
21
+ def authorize_review_action!
22
+ skip_authorization if respond_to?(:skip_authorization, true)
23
+ end
24
+
25
+ private
26
+
27
+ def demo_bypass_permissions!
28
+ skip_authorization if respond_to?(:skip_authorization, true)
29
+ skip_policy_scope if respond_to?(:skip_policy_scope, true)
30
+ end
31
+
32
+ def bypass_permissions_on_user!(user)
33
+ return user if user.instance_variable_defined?(:@_banking_demo_permission_bypass)
34
+
35
+ user.define_singleton_method(:has_permission?) { |_permission_code| true }
36
+ user.define_singleton_method(:can?) { |permission_code| has_permission?(permission_code) }
37
+ user.define_singleton_method(:super_admin?) { true }
38
+ user.instance_variable_set(:@_banking_demo_permission_bypass, true)
39
+
40
+ user
41
+ end
42
+ end
43
+ end
44
+ end
@@ -8,6 +8,23 @@ module Dscf
8
8
  # Handle CORS for authentication
9
9
  before_action :set_cors_headers
10
10
 
11
+ before_action :authenticate_user
12
+ before_action :demo_bypass_permissions!
13
+
14
+ # TEMPORARY DEMO BYPASS:
15
+ # Bypass payment authorization checks for authenticated users only.
16
+ # Remove after the demo.
17
+ def bypass_permissions_for_demo?
18
+ true
19
+ end
20
+
21
+ def pundit_user
22
+ user = current_user
23
+ return nil unless user
24
+
25
+ bypass_permissions_on_user!(user)
26
+ end
27
+
11
28
  private
12
29
 
13
30
  def set_cors_headers
@@ -17,6 +34,22 @@ module Dscf
17
34
  headers["Access-Control-Allow-Credentials"] = "false"
18
35
  end
19
36
 
37
+ def demo_bypass_permissions!
38
+ skip_authorization if respond_to?(:skip_authorization, true)
39
+ skip_policy_scope if respond_to?(:skip_policy_scope, true)
40
+ end
41
+
42
+ def bypass_permissions_on_user!(user)
43
+ return user if user.instance_variable_defined?(:@_payment_demo_permission_bypass)
44
+
45
+ user.define_singleton_method(:has_permission?) { |_permission_code| true }
46
+ user.define_singleton_method(:can?) { |permission_code| has_permission?(permission_code) }
47
+ user.define_singleton_method(:super_admin?) { true }
48
+ user.instance_variable_set(:@_payment_demo_permission_bypass, true)
49
+
50
+ user
51
+ end
52
+
20
53
  def authentication_required?
21
54
  false # Override in specific controllers
22
55
  end
@@ -1,6 +1,7 @@
1
1
  module Dscf::Payment
2
2
  class PaymentRequestsController < ApplicationController
3
3
  include Dscf::Core::Common
4
+ include Dscf::Payment::DemoPermissionBypass
4
5
 
5
6
  rescue_from ActiveRecord::RecordNotFound, with: :record_not_found
6
7
 
@@ -1,6 +1,7 @@
1
1
  module Dscf::Payment
2
2
  class PaymentsController < ApplicationController
3
3
  include Dscf::Core::Common
4
+ include Dscf::Payment::DemoPermissionBypass
4
5
 
5
6
  rescue_from ActiveRecord::RecordNotFound, with: :record_not_found
6
7
 
@@ -13,9 +13,17 @@ module Dscf
13
13
  require "dscf/credit"
14
14
  end
15
15
 
16
- initializer :append_migrations do |app|
17
- unless app.root.to_s.match?(root.to_s + File::SEPARATOR)
18
- app.config.paths["db/migrate"].concat(config.paths["db/migrate"].expanded)
16
+ # Ensure dependent engine migrations are available in test environment
17
+ initializer :append_dependent_migrations, after: :load_dependent_engines do |app|
18
+ # Append migrations from dependent engines
19
+ if defined?(Dscf::Core::Engine)
20
+ app.config.paths["db/migrate"].concat(Dscf::Core::Engine.config.paths["db/migrate"].expanded)
21
+ end
22
+ if defined?(Dscf::Banking::Engine)
23
+ app.config.paths["db/migrate"].concat(Dscf::Banking::Engine.config.paths["db/migrate"].expanded)
24
+ end
25
+ if defined?(Dscf::Credit::Engine)
26
+ app.config.paths["db/migrate"].concat(Dscf::Credit::Engine.config.paths["db/migrate"].expanded)
19
27
  end
20
28
  end
21
29
  end
@@ -1,5 +1,5 @@
1
1
  module Dscf
2
2
  module Payment
3
- VERSION = "0.2.0"
3
+ VERSION = "0.2.2"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dscf-payment
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Asrat
8
8
  bindir: bin
9
9
  cert_chain: []
10
- date: 1980-01-02 00:00:00.000000000 Z
10
+ date: 2026-04-28 00:00:00.000000000 Z
11
11
  dependencies:
12
12
  - !ruby/object:Gem::Dependency
13
13
  name: rails
@@ -33,23 +33,20 @@ dependencies:
33
33
  name: dscf-core
34
34
  requirement: !ruby/object:Gem::Requirement
35
35
  requirements:
36
- - - "~>"
36
+ - - ">="
37
37
  - !ruby/object:Gem::Version
38
38
  version: 0.3.0
39
39
  type: :runtime
40
40
  prerelease: false
41
41
  version_requirements: !ruby/object:Gem::Requirement
42
42
  requirements:
43
- - - "~>"
43
+ - - ">="
44
44
  - !ruby/object:Gem::Version
45
45
  version: 0.3.0
46
46
  - !ruby/object:Gem::Dependency
47
47
  name: dscf-banking
48
48
  requirement: !ruby/object:Gem::Requirement
49
49
  requirements:
50
- - - "~>"
51
- - !ruby/object:Gem::Version
52
- version: '0.2'
53
50
  - - ">="
54
51
  - !ruby/object:Gem::Version
55
52
  version: 0.2.1
@@ -57,9 +54,6 @@ dependencies:
57
54
  prerelease: false
58
55
  version_requirements: !ruby/object:Gem::Requirement
59
56
  requirements:
60
- - - "~>"
61
- - !ruby/object:Gem::Version
62
- version: '0.2'
63
57
  - - ">="
64
58
  - !ruby/object:Gem::Version
65
59
  version: 0.2.1
@@ -67,16 +61,16 @@ dependencies:
67
61
  name: dscf-credit
68
62
  requirement: !ruby/object:Gem::Requirement
69
63
  requirements:
70
- - - "~>"
64
+ - - ">="
71
65
  - !ruby/object:Gem::Version
72
- version: 0.4.0
66
+ version: 0.2.8
73
67
  type: :runtime
74
68
  prerelease: false
75
69
  version_requirements: !ruby/object:Gem::Requirement
76
70
  requirements:
77
- - - "~>"
71
+ - - ">="
78
72
  - !ruby/object:Gem::Version
79
- version: 0.4.0
73
+ version: 0.2.8
80
74
  - !ruby/object:Gem::Dependency
81
75
  name: active_model_serializers
82
76
  requirement: !ruby/object:Gem::Requirement
@@ -466,6 +460,8 @@ files:
466
460
  - MIT-LICENSE
467
461
  - README.md
468
462
  - Rakefile
463
+ - app/bypass/bypass.rb
464
+ - app/controllers/concerns/bypass.rb
469
465
  - app/controllers/dscf/payment/application_controller.rb
470
466
  - app/controllers/dscf/payment/payment_requests_controller.rb
471
467
  - app/controllers/dscf/payment/payments_controller.rb
@@ -512,7 +508,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
512
508
  - !ruby/object:Gem::Version
513
509
  version: '0'
514
510
  requirements: []
515
- rubygems_version: 3.6.9
511
+ rubygems_version: 3.6.2
516
512
  specification_version: 4
517
513
  summary: An Engine for Supply Chain Financing
518
514
  test_files: []