beyond_canvas 0.16.2.pre → 0.17.0.pre

Sign up to get free protection for your applications and to get access to all the features.
Files changed (73) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/config/beyond_canvas_manifest.js +1 -0
  3. data/app/assets/images/icons/arrow_right.svg +1 -0
  4. data/app/assets/images/icons/close.svg +1 -0
  5. data/app/assets/images/icons/home.svg +1 -0
  6. data/app/assets/javascripts/beyond_canvas/base.js +120 -246
  7. data/app/assets/stylesheets/beyond_canvas/base.scss +8 -1
  8. data/app/assets/stylesheets/beyond_canvas/components/_action_bar.scss +28 -0
  9. data/app/assets/stylesheets/beyond_canvas/components/_breadcrumbs.scss +29 -0
  10. data/app/assets/stylesheets/beyond_canvas/components/_buttons.scss +1 -1
  11. data/app/assets/stylesheets/beyond_canvas/components/_debug.scss +10 -0
  12. data/app/assets/stylesheets/beyond_canvas/components/_forms.scss +11 -14
  13. data/app/assets/stylesheets/beyond_canvas/components/_main.scss +12 -13
  14. data/app/assets/stylesheets/beyond_canvas/components/_margins.scss +8 -0
  15. data/app/assets/stylesheets/beyond_canvas/components/_menu.scss +40 -0
  16. data/app/assets/stylesheets/beyond_canvas/components/_modals.scss +27 -0
  17. data/app/assets/stylesheets/beyond_canvas/components/_sidebar.scss +53 -0
  18. data/app/assets/stylesheets/beyond_canvas/components/_titles.scss +7 -0
  19. data/app/assets/stylesheets/beyond_canvas/settings/_variables.scss +64 -9
  20. data/app/controllers/beyond_canvas/application_controller.rb +2 -0
  21. data/app/controllers/beyond_canvas/authentications_controller.rb +37 -30
  22. data/app/controllers/concerns/beyond_canvas/authentication.rb +1 -12
  23. data/app/controllers/concerns/beyond_canvas/locale_management.rb +5 -4
  24. data/app/helpers/beyond_canvas/authentications_helper.rb +28 -0
  25. data/app/helpers/beyond_canvas/cockpit_app_helper.rb +17 -0
  26. data/app/helpers/beyond_canvas/debug_helper.rb +9 -0
  27. data/app/helpers/beyond_canvas/locale_switch_helper.rb +5 -1
  28. data/app/javascript/beyond_canvas/base.js +3 -0
  29. data/app/javascript/beyond_canvas/initializers/buttons.js +65 -19
  30. data/app/javascript/beyond_canvas/initializers/flash.js +9 -2
  31. data/app/javascript/beyond_canvas/initializers/inputs.js +4 -1
  32. data/app/javascript/beyond_canvas/initializers/modals.js +14 -0
  33. data/app/views/beyond_canvas/authentications/new.html.erb +19 -10
  34. data/app/views/beyond_canvas/shared/_action_bar.html.erb +15 -0
  35. data/app/views/beyond_canvas/shared/_breadcrumbs.html.erb +14 -0
  36. data/app/views/beyond_canvas/shared/_flash.html.erb +22 -12
  37. data/app/views/beyond_canvas/shared/_locales.html.erb +8 -0
  38. data/app/views/beyond_canvas/shared/_menu.html.erb +31 -0
  39. data/app/views/beyond_canvas/shared/_modal.html.erb +6 -0
  40. data/app/views/beyond_canvas/shared/_sidebar.html.erb +16 -0
  41. data/app/views/layouts/beyond_canvas/application.html.erb +31 -0
  42. data/app/views/layouts/beyond_canvas/public.html.erb +11 -4
  43. data/config/locales/en.yml +5 -0
  44. data/config/routes.rb +5 -4
  45. data/lib/beyond_canvas.rb +12 -12
  46. data/lib/beyond_canvas/configuration.rb +11 -6
  47. data/lib/beyond_canvas/engine.rb +4 -2
  48. data/lib/beyond_canvas/menu_item_registration.rb +19 -0
  49. data/lib/beyond_canvas/parameter_sanitizer.rb +1 -1
  50. data/lib/beyond_canvas/rails/routes.rb +8 -7
  51. data/lib/beyond_canvas/version.rb +1 -1
  52. data/lib/generators/beyond_canvas/controller/controller_generator.rb +1 -2
  53. data/lib/generators/beyond_canvas/controller/templates/controller.erb +2 -19
  54. data/lib/generators/beyond_canvas/custom_menu/custom_menu_generator.rb +13 -0
  55. data/lib/generators/beyond_canvas/custom_menu/templates/beyond_canvas_custom_menu.html.erb +32 -0
  56. data/lib/generators/beyond_canvas/custom_styles/custom_styles_generator.rb +1 -1
  57. data/lib/generators/beyond_canvas/custom_styles/templates/beyond_canvas_custom_styles.scss +55 -9
  58. data/lib/generators/beyond_canvas/install/install_generator.rb +3 -5
  59. data/lib/generators/beyond_canvas/install/templates/beyond_canvas.rb.erb +51 -13
  60. data/lib/generators/beyond_canvas/{auth_model/auth_model_generator.rb → model/model_generator.rb} +4 -5
  61. data/lib/generators/beyond_canvas/{auth_model → model}/templates/migration.erb +2 -4
  62. data/lib/generators/beyond_canvas/{auth_model → model}/templates/model.erb +0 -0
  63. data/lib/generators/beyond_canvas/views/views_generator.rb +4 -6
  64. data/lib/models/concerns/authentication.rb +57 -0
  65. data/lib/models/concerns/utils.rb +79 -0
  66. data/lib/models/shop.rb +12 -0
  67. metadata +69 -30
  68. data/app/controllers/concerns/beyond_canvas/resource_management.rb +0 -33
  69. data/app/javascript/beyond_canvas/initializers/functions.js +0 -41
  70. data/app/views/beyond_canvas/locales/_edit.html.erb +0 -8
  71. data/lib/beyond_canvas/models/authentication.rb +0 -66
  72. data/lib/beyond_canvas/models/shop.rb +0 -28
  73. data/lib/beyond_canvas/models/utils.rb +0 -55
@@ -1,33 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module BeyondCanvas
4
- module ResourceManagement # :nodoc:
5
- extend ActiveSupport::Concern
6
-
7
- included do
8
- # Share some methods defined in the controller to make them available for the view
9
- if respond_to?(:helper_method)
10
- helpers = %w[resource resource_name resource_class]
11
- helper_method(*helpers)
12
- end
13
- end
14
-
15
- protected
16
-
17
- def resource_name
18
- BeyondCanvas.auth_model
19
- end
20
-
21
- def resource
22
- instance_variable_get(:"@#{resource_name}")
23
- end
24
-
25
- def resource=(new_resource)
26
- instance_variable_set(:"@#{resource_name}", new_resource)
27
- end
28
-
29
- def resource_class
30
- resource_name.classify.constantize
31
- end
32
- end
33
- end
@@ -1,41 +0,0 @@
1
- const SPINNER_ANIMATION_TIMEOUT = 125;
2
-
3
- export function showSpinner(button) {
4
- // Adjust the width of the button
5
- button.width(button.width() + $('.spinner').outerWidth(true));
6
- // Show the spinner
7
- setTimeout(function () {
8
- button.find('.spinner').css('display', 'flex');
9
- }, SPINNER_ANIMATION_TIMEOUT);
10
- }
11
-
12
- export function hideSpinner() {
13
- $('button[class^="button"]').each(function (_, button) {
14
- setTimeout(function () {
15
- // Hide the spinner
16
- $(button).find('.spinner').hide();
17
- // Adjust the width of the button
18
- $(button).width($(button).data('oldWidth'));
19
- }, SPINNER_ANIMATION_TIMEOUT);
20
- });
21
- }
22
-
23
- export function disableActionElements() {
24
- $('a, input[type="submit"], input[type="button"], input[type="reset"], button').each(function (_, button) {
25
- $(button).addClass('actions--disabled');
26
- });
27
- }
28
- export function enableActionElements() {
29
- $('a, input[type="submit"], input[type="button"], input[type="reset"], button').each(function (_, button) {
30
- $(button).removeClass('actions--disabled');
31
- });
32
- }
33
-
34
- export function closeAlert() {
35
- $('.flash')
36
- .removeClass('flash--shown')
37
- .delay(700)
38
- .queue(function () {
39
- $(this).remove();
40
- });
41
- }
@@ -1,8 +0,0 @@
1
- <% if defined?(I18n) && I18n.available_locales.count > 1 %>
2
- <%= form_for :system, url: beyond_canvas.update_locale_path, method: :put do |f| %>
3
- <%= f.select :locale, I18n.available_locales.collect { |l| [translate_locale(l), l] },
4
- { selected: cookies[:locale] },
5
- class: 'select--locale',
6
- onchange: 'this.form.submit()' %>
7
- <% end %>
8
- <% end %>
@@ -1,66 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module BeyondCanvas
4
- module Models
5
- module Authentication # :nodoc:
6
- extend ActiveSupport::Concern
7
-
8
- included do
9
- attr_accessor :code, :signature, :access_token_url
10
-
11
- ##############################################################################
12
- # Encrypted attribute configuration
13
- ##############################################################################
14
-
15
- attr_encrypted :beyond_api_url, key: [BeyondCanvas.configuration.encryption_key].pack('H*')
16
- attr_encrypted :beyond_access_token, key: [BeyondCanvas.configuration.encryption_key].pack('H*')
17
- attr_encrypted :beyond_refresh_token, key: [BeyondCanvas.configuration.encryption_key].pack('H*')
18
-
19
- blind_index :beyond_api_url, key: [BeyondCanvas.configuration.blind_index_key].pack('H*')
20
-
21
- ##############################################################################
22
- # Validations
23
- ##############################################################################
24
-
25
- # Callback url params
26
-
27
- validates :code,
28
- presence: true,
29
- on: :create
30
- validates :signature,
31
- presence: true,
32
- on: :create
33
- validates :access_token_url,
34
- presence: true,
35
- on: :create
36
-
37
- # Database fields
38
-
39
- validates :beyond_api_url,
40
- presence: true
41
- validates :beyond_access_token,
42
- presence: true,
43
- unless: -> { encrypted_beyond_access_token_was.blank? }
44
- validates :beyond_refresh_token,
45
- presence: true,
46
- unless: -> { encrypted_beyond_refresh_token_was.blank? }
47
-
48
- ##############################################################################
49
- # Instance methods
50
- ##############################################################################
51
-
52
- #
53
- # Get and save access_token and refresh_token using the authentication code
54
- # NOTE: This method is used during the shop creation, as it is the only point
55
- # we know about the authentication code
56
- #
57
- def authenticate
58
- session = BeyondApi::Session.new(api_url: beyond_api_url)
59
- session.token.create(code)
60
- update(beyond_access_token: session.access_token,
61
- beyond_refresh_token: session.refresh_token)
62
- end
63
- end
64
- end
65
- end
66
- end
@@ -1,28 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module BeyondCanvas
4
- module Models
5
- module Shop # :nodoc:
6
- extend ActiveSupport::Concern
7
- include BeyondCanvas::Models::Authentication
8
- include BeyondCanvas::Models::Utils
9
-
10
- included do
11
- attr_accessor :api_url, :return_url
12
-
13
- ##############################################################################
14
- # Validations
15
- ##############################################################################
16
-
17
- # Callback url params
18
-
19
- validates :api_url,
20
- presence: true,
21
- on: :create
22
- validates :return_url,
23
- presence: true,
24
- on: :create
25
- end
26
- end
27
- end
28
- end
@@ -1,55 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module BeyondCanvas
4
- module Models
5
- module Utils # :nodoc:
6
- extend ActiveSupport::Concern
7
-
8
- included do
9
- ##############################################################################
10
- # Instance methods
11
- ##############################################################################
12
-
13
- #
14
- # Generates a new access_token and refresh_token
15
- #
16
- def refresh_token
17
- beyond_session = BeyondApi::Session.new(api_url: beyond_api_url, refresh_token: beyond_refresh_token)
18
- beyond_session.token.refresh
19
-
20
- update(beyond_access_token: beyond_session.access_token,
21
- beyond_refresh_token: beyond_session.refresh_token)
22
- end
23
-
24
- #
25
- # Generates a new access_token and refresh_token if they have expired
26
- #
27
- def refresh_token_if_needed
28
- token_timestamp = JWT.decode(beyond_access_token, nil, false).first['exp']
29
- current_timestamp = DateTime.now.to_i
30
- return unless token_timestamp - current_timestamp <= 3600
31
-
32
- refresh_token
33
- end
34
-
35
- #
36
- # Returns a BeyondApi::Session object with api_url, access_token and refresh_token attributes
37
- #
38
- def to_session
39
- BeyondApi::Session.new(api_url: beyond_api_url,
40
- access_token: beyond_access_token,
41
- refresh_token: beyond_refresh_token)
42
- end
43
-
44
- ##############################################################################
45
- # Class methods
46
- ##############################################################################
47
-
48
- def self.find_session(id)
49
- shop = find(id)
50
- shop.to_session
51
- end
52
- end
53
- end
54
- end
55
- end