beyond_canvas 0.16.0.pre → 0.19.0.pre

Sign up to get free protection for your applications and to get access to all the features.
Files changed (80) hide show
  1. checksums.yaml +4 -4
  2. data/Rakefile +3 -3
  3. data/app/assets/config/beyond_canvas_manifest.js +1 -0
  4. data/app/assets/images/icons/arrow_right.svg +1 -0
  5. data/app/assets/images/icons/close.svg +1 -0
  6. data/app/assets/images/icons/home.svg +1 -0
  7. data/app/assets/javascripts/beyond_canvas/base.js +120 -246
  8. data/app/assets/stylesheets/beyond_canvas/base.scss +10 -1
  9. data/app/assets/stylesheets/beyond_canvas/components/_action_bar.scss +28 -0
  10. data/app/assets/stylesheets/beyond_canvas/components/_breadcrumbs.scss +29 -0
  11. data/app/assets/stylesheets/beyond_canvas/components/_buttons.scss +1 -1
  12. data/app/assets/stylesheets/beyond_canvas/components/_debug.scss +10 -0
  13. data/app/assets/stylesheets/beyond_canvas/components/_forms.scss +11 -14
  14. data/app/assets/stylesheets/beyond_canvas/components/_grids.scss +12 -0
  15. data/app/assets/stylesheets/beyond_canvas/components/_inputs.scss +5 -0
  16. data/app/assets/stylesheets/beyond_canvas/components/_main.scss +12 -13
  17. data/app/assets/stylesheets/beyond_canvas/components/_margins.scss +8 -0
  18. data/app/assets/stylesheets/beyond_canvas/components/_menu.scss +40 -0
  19. data/app/assets/stylesheets/beyond_canvas/components/_modals.scss +35 -0
  20. data/app/assets/stylesheets/beyond_canvas/components/_scrollbox.scss +35 -0
  21. data/app/assets/stylesheets/beyond_canvas/components/_sidebar.scss +53 -0
  22. data/app/assets/stylesheets/beyond_canvas/components/_titles.scss +7 -0
  23. data/app/assets/stylesheets/beyond_canvas/settings/_breakpoints.scss +6 -6
  24. data/app/assets/stylesheets/beyond_canvas/settings/_variables.scss +77 -22
  25. data/app/controllers/beyond_canvas/application_controller.rb +2 -0
  26. data/app/controllers/beyond_canvas/authentications_controller.rb +37 -30
  27. data/app/controllers/concerns/beyond_canvas/authentication.rb +1 -12
  28. data/app/controllers/concerns/beyond_canvas/locale_management.rb +5 -4
  29. data/app/form_builders/beyond_canvas/form_builder.rb +8 -6
  30. data/app/helpers/beyond_canvas/authentications_helper.rb +28 -0
  31. data/app/helpers/beyond_canvas/cockpit_app_helper.rb +17 -0
  32. data/app/helpers/beyond_canvas/debug_helper.rb +9 -0
  33. data/app/helpers/beyond_canvas/locale_switch_helper.rb +5 -1
  34. data/app/javascript/beyond_canvas/base.js +3 -0
  35. data/app/javascript/beyond_canvas/initializers/buttons.js +65 -19
  36. data/app/javascript/beyond_canvas/initializers/flash.js +9 -2
  37. data/app/javascript/beyond_canvas/initializers/inputs.js +4 -1
  38. data/app/javascript/beyond_canvas/initializers/modals.js +14 -0
  39. data/app/views/beyond_canvas/authentications/new.html.erb +19 -10
  40. data/app/views/beyond_canvas/shared/_action_bar.html.erb +15 -0
  41. data/app/views/beyond_canvas/shared/_breadcrumbs.html.erb +14 -0
  42. data/app/views/beyond_canvas/shared/_flash.html.erb +22 -12
  43. data/app/views/beyond_canvas/shared/_locales.html.erb +8 -0
  44. data/app/views/beyond_canvas/shared/_menu.html.erb +31 -0
  45. data/app/views/beyond_canvas/shared/_modal.html.erb +6 -0
  46. data/app/views/beyond_canvas/shared/_sidebar.html.erb +16 -0
  47. data/app/views/layouts/beyond_canvas/application.html.erb +31 -0
  48. data/app/views/layouts/beyond_canvas/public.html.erb +10 -1
  49. data/config/locales/en.yml +5 -0
  50. data/config/routes.rb +5 -4
  51. data/lib/beyond_canvas.rb +12 -16
  52. data/lib/beyond_canvas/configuration.rb +11 -6
  53. data/lib/beyond_canvas/engine.rb +4 -2
  54. data/lib/beyond_canvas/menu_item_registration.rb +19 -0
  55. data/lib/beyond_canvas/parameter_sanitizer.rb +1 -1
  56. data/lib/beyond_canvas/rails/routes.rb +8 -7
  57. data/lib/beyond_canvas/version.rb +1 -1
  58. data/lib/generators/beyond_canvas/controller/controller_generator.rb +1 -2
  59. data/lib/generators/beyond_canvas/controller/templates/controller.erb +2 -19
  60. data/lib/generators/beyond_canvas/custom_menu/custom_menu_generator.rb +13 -0
  61. data/lib/generators/beyond_canvas/custom_menu/templates/beyond_canvas_custom_menu.html.erb +32 -0
  62. data/lib/generators/beyond_canvas/custom_styles/custom_styles_generator.rb +1 -1
  63. data/lib/generators/beyond_canvas/custom_styles/templates/beyond_canvas_custom_styles.scss +199 -0
  64. data/lib/generators/beyond_canvas/install/install_generator.rb +3 -5
  65. data/lib/generators/beyond_canvas/install/templates/beyond_canvas.rb.erb +51 -13
  66. data/lib/generators/beyond_canvas/{auth_model/auth_model_generator.rb → model/model_generator.rb} +4 -5
  67. data/lib/generators/beyond_canvas/{auth_model → model}/templates/migration.erb +2 -4
  68. data/lib/generators/beyond_canvas/{auth_model → model}/templates/model.erb +0 -0
  69. data/lib/generators/beyond_canvas/views/views_generator.rb +4 -6
  70. data/lib/models/concerns/authentication.rb +57 -0
  71. data/lib/models/concerns/utils.rb +79 -0
  72. data/lib/models/shop.rb +12 -0
  73. metadata +72 -31
  74. data/app/controllers/concerns/beyond_canvas/resource_management.rb +0 -33
  75. data/app/javascript/beyond_canvas/initializers/functions.js +0 -41
  76. data/app/views/beyond_canvas/locales/_edit.html.erb +0 -8
  77. data/lib/beyond_canvas/models/authentication.rb +0 -66
  78. data/lib/beyond_canvas/models/shop.rb +0 -28
  79. data/lib/beyond_canvas/models/utils.rb +0 -55
  80. data/lib/generators/beyond_canvas/custom_styles/templates/beyond_canvas_custom_styles.sass +0 -123
@@ -0,0 +1,32 @@
1
+ <div class="menu">
2
+
3
+ <div class="menu--left">
4
+ <%= render 'beyond_canvas/shared/logo' %>
5
+ </div>
6
+
7
+ <div class="menu--center">
8
+
9
+ <%
10
+ =begin
11
+ Add here your menu links. You can use `menu__item` as class name and add
12
+ `menu__item--selected` as secondary class for selected menu item. E.g:
13
+
14
+ <%= link_to 'About us', about_us_path, class: "menu__item #{ 'menu__item--selected' if params[:controller] == 'about_us' }" %>
15
+ <%= link_to 'Support', support_path, class: "menu__item #{ 'menu__item--selected' if params[:controller] == 'support' }" %>
16
+ =end
17
+ %>
18
+
19
+ </div>
20
+
21
+ <div class="menu--right">
22
+
23
+ <%
24
+ =begin
25
+ You can also add here some content that will be right-aligned, like a user
26
+ avatar image or a dropdown account menu.
27
+ =end
28
+ %>
29
+
30
+ </div>
31
+
32
+ </div>
@@ -6,7 +6,7 @@ module BeyondCanvas
6
6
  source_root File.expand_path('templates', __dir__)
7
7
 
8
8
  def copy_initializer
9
- template 'beyond_canvas_custom_styles.sass', 'app/assets/stylesheets/_beyond_canvas_custom_styles.sass'
9
+ template 'beyond_canvas_custom_styles.scss', 'app/assets/stylesheets/_beyond_canvas_custom_styles.scss'
10
10
  end
11
11
  end
12
12
  end
@@ -0,0 +1,199 @@
1
+ // ************************************************************
2
+ // Colors
3
+ // ************************************************************
4
+
5
+ // $palette-primary: rgb(78, 183, 168);
6
+ // $palette-secondary: rgb(28, 53, 69);
7
+ // $palette-cancel: rgb(153, 153, 153);
8
+ // $palette-danger: rgb(218, 60, 60);
9
+
10
+ // ************************************************************
11
+ // General styles
12
+ // ************************************************************
13
+
14
+ // $main-background-public: rgb(233, 232, 220);
15
+ // $main-background-application: rgb(233, 232, 220);
16
+
17
+ // ************************************************************
18
+ // Typography
19
+ // ************************************************************
20
+
21
+ // $main-color: rgb(62, 62, 62);
22
+
23
+ // ************************************************************
24
+ // Headlines
25
+ // ************************************************************
26
+
27
+ // $headline-color: rgb(122, 118, 76);
28
+
29
+ // ************************************************************
30
+ // Links
31
+ // ************************************************************
32
+
33
+ // $link-primary-color: darken($palette-primary, 10%);
34
+ // $link-secondary-color: darken($palette-cancel, 10%);
35
+ // $link-danger-color: darken($palette-danger, 10%);
36
+
37
+ // ************************************************************
38
+ // Buttons
39
+ // ************************************************************
40
+
41
+ // $button-primary-background: $palette-primary;
42
+ // $button-primary-color: $white;
43
+
44
+ // $button-secondary-background: $palette-cancel;
45
+ // $button-secondary-color: $white;
46
+
47
+ // $button-danger-background: $palette-danger;
48
+ // $button-danger-color: $white;
49
+
50
+ // $button-border-radius: 3px;
51
+ // $button-box-shadow: true;
52
+
53
+ // ************************************************************
54
+ // Cards
55
+ // ************************************************************
56
+
57
+ // $card-border-radius: 3px;
58
+ // $card-box-shadow: 0 2px 7px rgba($black, 0.2);
59
+ // $card-separator-color: rgb(222, 222, 222);
60
+ // $card-title-color: rgb(247, 133, 96);
61
+
62
+ // ************************************************************
63
+ // Containers
64
+ // ************************************************************
65
+
66
+
67
+ // ************************************************************
68
+ // Labels
69
+ // ************************************************************
70
+
71
+ // $label-color: rgb(128, 128, 128);
72
+
73
+ // ************************************************************
74
+ // Inputs
75
+ // ************************************************************
76
+
77
+ // $input-border-color: rgb(217, 216, 195);
78
+ // $input-border-color-focus: $palette-primary;
79
+ // $input-errors-color: $palette-danger;
80
+
81
+ // ************************************************************
82
+ // Checkboxes
83
+ // ************************************************************
84
+
85
+ // $checkbox-checked-color: #97C344; // This value MUST be HEX
86
+ // $checkbox-checked-background: #ffffff; // This value MUST be HEX
87
+ // $checkbox-unchecked-color: #C2BF9D; // This value MUST be HEX
88
+ // $checkbox-unchecked-background: #ffffff; // This value MUST be HEX
89
+
90
+ // ************************************************************
91
+ // Radiobuttons
92
+ // ************************************************************
93
+
94
+ // $radio-checked-color: #97C344; // This value MUST be HEX
95
+ // $radio-checked-background: #ffffff; // This value MUST be HEX
96
+ // $radio-unchecked-color: #C2BF9D; // This value MUST be HEX
97
+ // $radio-unchecked-background: #ffffff; // This value MUST be HEX
98
+
99
+ // ************************************************************
100
+ // Hints
101
+ // ************************************************************
102
+
103
+ // $hint-color: rgb(158, 158, 158);
104
+
105
+ // ************************************************************
106
+ // Logo
107
+ // ************************************************************
108
+
109
+ // $logo-margin-top-public: 0;
110
+ // $logo-margin-bottom-public: 34px;
111
+
112
+ // ************************************************************
113
+ // Flash
114
+ // ************************************************************
115
+
116
+ // $flash-success: rgb(123, 170, 81);
117
+ // $flash-notice: rgb(123, 170, 81);
118
+ // $flash-info: rgb(153, 153, 153);
119
+ // $flash-warning: rgb(243, 181, 71);
120
+ // $flash-error: rgb(218, 60, 60);
121
+ // $flash-border-radius: 4px;
122
+ // $flash-box-shadow: 0 1px 2px 0 rgba($black, 0.2);
123
+ // $flash-color: rgb(128, 128, 128);
124
+
125
+ // ************************************************************
126
+ // Tables
127
+ // ************************************************************
128
+
129
+ // $table-header-background: rgb(243, 242, 236);
130
+ // $table-border-color: rgb(233, 232, 220);
131
+
132
+ // ************************************************************
133
+ // Comments
134
+ // ************************************************************
135
+
136
+ // $comment-background: rgb(246, 246, 243);
137
+ // $comment-color: rgb(170, 169, 156);
138
+
139
+ // ************************************************************
140
+ // Notices
141
+ // ************************************************************
142
+
143
+ // $notice-success-background: rgb(123, 170, 81);
144
+ // $notice-notice-background: rgb(123, 170, 81);
145
+ // $notice-info-background: rgb(153, 153, 153);
146
+ // $notice-warning-background: rgb(243, 181, 71);
147
+ // $notice-error-background: rgb(218, 60, 60);
148
+ // $notice-border-radius: 4px;
149
+ // $notice-color: rgb(153, 153, 153);
150
+
151
+ // ************************************************************
152
+ // Breadcrums
153
+ // ************************************************************
154
+
155
+ // $breadcrum-color: rgb(122, 118, 76);
156
+ // $breadcrum-color-current: rgb(61, 149, 137);
157
+
158
+ // ************************************************************
159
+ // Titles
160
+ // ************************************************************
161
+
162
+ // $title-color: rgb(122, 118, 76);
163
+
164
+ // ************************************************************
165
+ // Menu
166
+ // ************************************************************
167
+
168
+ // $menu-background: #1c3445;
169
+ // $menu-height: 60px;
170
+ // $menu-logo-height: 30px;
171
+ // $menu-item-color: #9ab5c6;
172
+ // $menu-item-hover-color: lighten($menu-item-color, 13%);
173
+ // $menu-item-selected-color: #4eb7a8;
174
+ // $menu-item-selected-hover-color: lighten($menu-item-selected-color, 13%);
175
+
176
+ // ************************************************************
177
+ // Action bar
178
+ // ************************************************************
179
+
180
+ // $action-bar-background: rgb(255, 255, 255);
181
+ // $action-bar-shadow: 1px solid rgba(0, 0, 0, 0.2);
182
+ // $action-bar-height: 73px;
183
+
184
+ // ************************************************************
185
+ // Markdown
186
+ // ************************************************************
187
+
188
+
189
+ // ************************************************************
190
+ // Sidebar
191
+ // ************************************************************
192
+
193
+
194
+ // ************************************************************
195
+ // Modals
196
+ // ************************************************************
197
+
198
+ // $modal-close-icon-color: #8b8b8b;
199
+ // $modal-background-color: rgba(0, 0, 0, 0.5);
@@ -6,13 +6,11 @@ module BeyondCanvas
6
6
  desc 'Installs Beyond Canvas and generates the necessary files'
7
7
 
8
8
  class_option :skip_webpacker, type: :boolean, default: false, desc: 'Use Sprockets assets instead of Webpacker'
9
- class_option :auth_model, type: :string, default: 'shop', desc: 'Authentication model'
10
9
 
11
10
  source_root File.expand_path('templates', __dir__)
12
11
 
13
12
  def copy_initializer
14
13
  @skip_webpacker = options[:skip_webpacker]
15
- @auth_model = options[:auth_model]
16
14
 
17
15
  template 'beyond_canvas.rb.erb', 'config/initializers/beyond_canvas.rb'
18
16
  end
@@ -29,12 +27,12 @@ module BeyondCanvas
29
27
  generate 'beyond_canvas:beyond_api'
30
28
  end
31
29
 
32
- def generate_auth_model
33
- generate "beyond_canvas:auth_model #{@auth_model}"
30
+ def generate_model
31
+ generate 'beyond_canvas:model shop'
34
32
  end
35
33
 
36
34
  def setup_routes
37
- route "beyond_canvas_for :#{@auth_model.pluralize}"
35
+ route 'beyond_canvas_routes'
38
36
  end
39
37
 
40
38
  def copy_locale
@@ -1,9 +1,41 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  BeyondCanvas.setup do |config|
4
+ # Carefully read and fill this configuration file.
5
+ #
6
+ # All uncommented configuration parameters are necessary for proper operation
7
+ # of Beyond Canvas.
8
+
9
+ # ==> Engine configuration
10
+
11
+ # Set the namespace where the Engine is going to be mounted.
12
+ #
13
+ # config.namespace = '/'
14
+
15
+ # Set the url or path where a shop is going to be redirected after a
16
+ # succesful authentication.
17
+ #
18
+ config.open_app_url = nil
19
+
20
+ # Set if your app ig going to run as a cockpit app. If you are not sure about
21
+ # this, please contact apps@epages.com.
22
+ #
23
+ # config.cockpit_app = false
24
+
25
+ # Set if your app is going to be preinstalled on packages. If you are not sure
26
+ # about this, please contact apps@epages.com.
27
+ #
28
+ # config.preinstalled = false
29
+
30
+ # Set if you want to enable the available debug mode Beyond Canvas offers.
31
+ # This options displays a parameter debug as well as some custom Beyond Canvas
32
+ # logs.
33
+ #
34
+ # config.debug_mode = false
35
+
4
36
  # ==> Site configuration
5
37
 
6
- # Set the title that is displayed on the main layout..
38
+ # Set the title that is displayed on the main layout.
7
39
  #
8
40
  config.site_title = '<%= Rails.application.class.name.split("::").first.humanize %>'
9
41
 
@@ -17,35 +49,41 @@ BeyondCanvas.setup do |config|
17
49
  #
18
50
  # config.favicon = 'favicon.ico'
19
51
 
52
+ # Set the menu items that will be displayed on the top of your app.
53
+ # It accepts 3 parameters:
54
+ # 1. name: the text displayed on the link tag. Supports any string or an I18n compatible path.
55
+ # 2. url: the href of the link tag. Supports any string or a symbolized route.
56
+ # 3. options: any html attributes that will be added to the link tag.
57
+ # You can also run `rails g beyond_canvas:custom_menu` to generate a menu template you can override.
58
+ # See examples:
59
+ #
60
+ # config.register_menu_item 'Contact', '/contact/, class: 'contact'
61
+ # config.register_menu_item 'menu_item.about_us', :root_path, class: 'about-us', id: 'about-us'
62
+ # config.register_menu_item 'Our website', 'https://epages.com', target: :_blank
63
+
20
64
  # ==> Stylesheets & Javascripts
21
65
 
22
66
  # We recommend using the built in Beyond Canvas layout and loading up your own
23
67
  # stylesheets / javascripts to customize the look and feel.
24
68
  #
25
69
  # To load a stylesheet:
26
- # config.register_stylesheet 'my_stylesheet.css'
70
+ # config.register_stylesheet 'my_stylesheet.css'
27
71
  #
28
- # You can provide an options hash for more control, which is passed along to stylesheet_link_tag():
29
- # config.register_stylesheet 'my_print_stylesheet.css', media: :print
72
+ # You can provide an options hash for more control, which is passed along
73
+ # to stylesheet_link_tag():
74
+ # config.register_stylesheet 'my_print_stylesheet.css', media: :print
30
75
  #
31
76
  # To load a javascript file:
32
- # config.register_javascript 'my_javascript.js'
77
+ # config.register_javascript 'my_javascript.js'
33
78
 
34
79
  # ==> Webpacker
35
80
 
36
- # By default, Active Admin uses Webpacker.
81
+ # By default, Beyond Canvas uses Webpacker.
37
82
  # You can switch to using Sprocket's asset pipeline here.
38
83
  #
39
84
  <% unless @skip_webpacker %># <% end %>config.skip_webpacker = <%= @skip_webpacker %>
40
85
 
41
86
  # ==> Authentication with ePages Beyond API
42
87
 
43
- # Default model is shop
44
- #
45
88
  config.encryption_key = '<%= SecureRandom.hex(32) %>'
46
- config.blind_index_key = '<%= SecureRandom.hex(32) %>'
47
-
48
- # ==> Mountable engine configuration
49
- #
50
- # config.namespace = '/'
51
89
  end
@@ -4,7 +4,7 @@ require 'rails/generators/active_record'
4
4
 
5
5
  module BeyondCanvas
6
6
  module Generators
7
- class AuthModelGenerator < ActiveRecord::Generators::Base # :nodoc:
7
+ class ModelGenerator < ActiveRecord::Generators::Base # :nodoc:
8
8
  desc 'Generates a model with the given name and provides a method to authenticate in Beyond Backend'
9
9
 
10
10
  argument :attributes, type: :array, default: [], banner: 'field:type field:type'
@@ -19,7 +19,7 @@ module BeyondCanvas
19
19
  end
20
20
 
21
21
  def generate_model
22
- template 'model.erb', File.join('app', 'models', "#{file_path}.rb")
22
+ template 'model.erb', File.join("app/models/#{file_path}.rb")
23
23
  end
24
24
 
25
25
  private
@@ -34,15 +34,14 @@ module BeyondCanvas
34
34
 
35
35
  def migration_data
36
36
  <<RUBY
37
- t.string :encrypted_beyond_api_url, null: false
38
- t.string :encrypted_beyond_api_url_iv, null: false
39
- t.string :beyond_api_url_bidx, null: false
37
+ t.string :beyond_api_url, null: false
40
38
 
41
39
  t.text :encrypted_beyond_access_token, null: true
42
40
  t.text :encrypted_beyond_access_token_iv, null: true
43
41
 
44
42
  t.text :encrypted_beyond_refresh_token, null: true
45
43
  t.text :encrypted_beyond_refresh_token_iv, null: true
44
+
46
45
  RUBY
47
46
  end
48
47
  end
@@ -4,16 +4,14 @@ class BeyondCanvasCreate<%= table_name.camelize %> < ActiveRecord::Migration<%=
4
4
  def change
5
5
  create_table :<%= table_name %><%= primary_key_type %> do |t|
6
6
  <%= migration_data -%>
7
-
8
7
  <% attributes.each do |attribute| -%>
9
8
  t.<%= attribute.type %> :<%= attribute.name %>
10
- <% end -%>
11
9
 
10
+ <% end -%>
12
11
  t.timestamps null: false
13
12
  end
14
13
 
15
- add_index :<%= table_name %>, :encrypted_beyond_api_url_iv, unique: true
16
- add_index :<%= table_name %>, :beyond_api_url_bidx, unique: true
14
+ add_index :<%= table_name %>, :beyond_api_url, unique: true
17
15
  add_index :<%= table_name %>, :encrypted_beyond_access_token_iv, unique: true
18
16
  add_index :<%= table_name %>, :encrypted_beyond_refresh_token_iv, unique: true
19
17
  end
@@ -5,14 +5,12 @@ require 'rails/generators/active_record'
5
5
  module BeyondCanvas
6
6
  module Generators
7
7
  class ViewsGenerator < Rails::Generators::Base # :nodoc:
8
- desc 'Creates a view in the app/view folder'
8
+ desc 'Creates all Beyond Canvas views to overwrite them'
9
9
 
10
- argument :scope, required: true, desc: 'The scope to copy views to'
10
+ source_root File.expand_path('../../../../app/views/beyond_canvas', __dir__)
11
11
 
12
- source_root File.expand_path('../../../../app/views/beyond_canvas/authentications', __dir__)
13
-
14
- def create_view
15
- copy_file 'new.html.erb', "app/views/#{scope}/new.html.erb"
12
+ def copy_views
13
+ directory 'authentications', 'app/views/beyond_canvas/authentications'
16
14
  end
17
15
  end
18
16
  end
@@ -0,0 +1,57 @@
1
+ # frozen_string_literal: true
2
+
3
+ module BeyondCanvas
4
+ module Models
5
+ module Concerns
6
+ module Authentication # :nodoc:
7
+ extend ActiveSupport::Concern
8
+
9
+ included do
10
+ attr_accessor :code, :signature, :access_token_url, :api_url, :return_url, :terms
11
+
12
+ ##############################################################################
13
+ # Encrypted attribute configuration
14
+ ##############################################################################
15
+
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
+ ##############################################################################
20
+ # Validations
21
+ ##############################################################################
22
+
23
+ # Database fields
24
+
25
+ validates :beyond_api_url,
26
+ presence: true
27
+ validates :beyond_access_token,
28
+ presence: true,
29
+ unless: -> { encrypted_beyond_access_token_was.blank? }
30
+ validates :beyond_refresh_token,
31
+ presence: true,
32
+ unless: -> { encrypted_beyond_refresh_token_was.blank? }
33
+
34
+ ##############################################################################
35
+ # Instance methods
36
+ ##############################################################################
37
+
38
+ #
39
+ # Get and save access_token and refresh_token using the authentication code
40
+ # NOTE: This method is used during the shop creation, as it is the only point
41
+ # we know about the authentication code
42
+ #
43
+ def authenticate(params_code)
44
+ session = BeyondApi::Session.new(api_url: beyond_api_url)
45
+ session.token.create(params_code)
46
+ update(beyond_access_token: session.access_token,
47
+ beyond_refresh_token: session.refresh_token)
48
+ end
49
+
50
+ def authenticated?
51
+ beyond_access_token.present? && beyond_refresh_token.present?
52
+ end
53
+ end
54
+ end
55
+ end
56
+ end
57
+ end