beyond_canvas 0.16.2.pre → 0.17.0.pre
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/app/assets/config/beyond_canvas_manifest.js +1 -0
- data/app/assets/images/icons/arrow_right.svg +1 -0
- data/app/assets/images/icons/close.svg +1 -0
- data/app/assets/images/icons/home.svg +1 -0
- data/app/assets/javascripts/beyond_canvas/base.js +120 -246
- data/app/assets/stylesheets/beyond_canvas/base.scss +8 -1
- data/app/assets/stylesheets/beyond_canvas/components/_action_bar.scss +28 -0
- data/app/assets/stylesheets/beyond_canvas/components/_breadcrumbs.scss +29 -0
- data/app/assets/stylesheets/beyond_canvas/components/_buttons.scss +1 -1
- data/app/assets/stylesheets/beyond_canvas/components/_debug.scss +10 -0
- data/app/assets/stylesheets/beyond_canvas/components/_forms.scss +11 -14
- data/app/assets/stylesheets/beyond_canvas/components/_main.scss +12 -13
- data/app/assets/stylesheets/beyond_canvas/components/_margins.scss +8 -0
- data/app/assets/stylesheets/beyond_canvas/components/_menu.scss +40 -0
- data/app/assets/stylesheets/beyond_canvas/components/_modals.scss +27 -0
- data/app/assets/stylesheets/beyond_canvas/components/_sidebar.scss +53 -0
- data/app/assets/stylesheets/beyond_canvas/components/_titles.scss +7 -0
- data/app/assets/stylesheets/beyond_canvas/settings/_variables.scss +64 -9
- data/app/controllers/beyond_canvas/application_controller.rb +2 -0
- data/app/controllers/beyond_canvas/authentications_controller.rb +37 -30
- data/app/controllers/concerns/beyond_canvas/authentication.rb +1 -12
- data/app/controllers/concerns/beyond_canvas/locale_management.rb +5 -4
- data/app/helpers/beyond_canvas/authentications_helper.rb +28 -0
- data/app/helpers/beyond_canvas/cockpit_app_helper.rb +17 -0
- data/app/helpers/beyond_canvas/debug_helper.rb +9 -0
- data/app/helpers/beyond_canvas/locale_switch_helper.rb +5 -1
- data/app/javascript/beyond_canvas/base.js +3 -0
- data/app/javascript/beyond_canvas/initializers/buttons.js +65 -19
- data/app/javascript/beyond_canvas/initializers/flash.js +9 -2
- data/app/javascript/beyond_canvas/initializers/inputs.js +4 -1
- data/app/javascript/beyond_canvas/initializers/modals.js +14 -0
- data/app/views/beyond_canvas/authentications/new.html.erb +19 -10
- data/app/views/beyond_canvas/shared/_action_bar.html.erb +15 -0
- data/app/views/beyond_canvas/shared/_breadcrumbs.html.erb +14 -0
- data/app/views/beyond_canvas/shared/_flash.html.erb +22 -12
- data/app/views/beyond_canvas/shared/_locales.html.erb +8 -0
- data/app/views/beyond_canvas/shared/_menu.html.erb +31 -0
- data/app/views/beyond_canvas/shared/_modal.html.erb +6 -0
- data/app/views/beyond_canvas/shared/_sidebar.html.erb +16 -0
- data/app/views/layouts/beyond_canvas/application.html.erb +31 -0
- data/app/views/layouts/beyond_canvas/public.html.erb +11 -4
- data/config/locales/en.yml +5 -0
- data/config/routes.rb +5 -4
- data/lib/beyond_canvas.rb +12 -12
- data/lib/beyond_canvas/configuration.rb +11 -6
- data/lib/beyond_canvas/engine.rb +4 -2
- data/lib/beyond_canvas/menu_item_registration.rb +19 -0
- data/lib/beyond_canvas/parameter_sanitizer.rb +1 -1
- data/lib/beyond_canvas/rails/routes.rb +8 -7
- data/lib/beyond_canvas/version.rb +1 -1
- data/lib/generators/beyond_canvas/controller/controller_generator.rb +1 -2
- data/lib/generators/beyond_canvas/controller/templates/controller.erb +2 -19
- data/lib/generators/beyond_canvas/custom_menu/custom_menu_generator.rb +13 -0
- data/lib/generators/beyond_canvas/custom_menu/templates/beyond_canvas_custom_menu.html.erb +32 -0
- data/lib/generators/beyond_canvas/custom_styles/custom_styles_generator.rb +1 -1
- data/lib/generators/beyond_canvas/custom_styles/templates/beyond_canvas_custom_styles.scss +55 -9
- data/lib/generators/beyond_canvas/install/install_generator.rb +3 -5
- data/lib/generators/beyond_canvas/install/templates/beyond_canvas.rb.erb +51 -13
- data/lib/generators/beyond_canvas/{auth_model/auth_model_generator.rb → model/model_generator.rb} +4 -5
- data/lib/generators/beyond_canvas/{auth_model → model}/templates/migration.erb +2 -4
- data/lib/generators/beyond_canvas/{auth_model → model}/templates/model.erb +0 -0
- data/lib/generators/beyond_canvas/views/views_generator.rb +4 -6
- data/lib/models/concerns/authentication.rb +57 -0
- data/lib/models/concerns/utils.rb +79 -0
- data/lib/models/shop.rb +12 -0
- metadata +69 -30
- data/app/controllers/concerns/beyond_canvas/resource_management.rb +0 -33
- data/app/javascript/beyond_canvas/initializers/functions.js +0 -41
- data/app/views/beyond_canvas/locales/_edit.html.erb +0 -8
- data/lib/beyond_canvas/models/authentication.rb +0 -66
- data/lib/beyond_canvas/models/shop.rb +0 -28
- 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
|