adminterface 0.2.0 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (53) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE.md +19 -109
  3. data/README.md +33 -27
  4. data/Rakefile +1 -1
  5. data/app/assets/stylesheets/adminterface/components/_form.scss +1 -0
  6. data/app/assets/stylesheets/adminterface/mixins/_utilities.scss +4 -0
  7. data/app/assets/stylesheets/adminterface/vendors/bootstrap/_all.scss +1 -0
  8. data/app/assets/stylesheets/adminterface/vendors/bootstrap/components/_breadcrumb.scss +1 -0
  9. data/app/assets/stylesheets/adminterface/vendors/flatpickr/{main.scss → _main.scss} +6 -0
  10. data/app/javascript/adminterface/initializers/header_toggler.js +1 -1
  11. data/app/javascript/adminterface/initializers/plugins/flatpickr.js +1 -1
  12. data/app/javascript/adminterface/initializers/plugins/input_counter.js +1 -1
  13. data/app/javascript/adminterface/initializers/plugins/password_visibility.js +1 -1
  14. data/app/javascript/adminterface/initializers/plugins/tom_select.js +1 -1
  15. data/app/javascript/adminterface/lib/__tests__/checkbox_toggler.html +5 -0
  16. data/app/javascript/adminterface/lib/__tests__/checkbox_toggler.spec.js +110 -0
  17. data/app/javascript/adminterface/lib/__tests__/detached_dropdown.spec.js +69 -70
  18. data/app/javascript/adminterface/lib/__tests__/filters.spec.js +0 -1
  19. data/app/javascript/adminterface/lib/__tests__/has_many.html +14 -0
  20. data/app/javascript/adminterface/lib/__tests__/has_many.spec.js +224 -0
  21. data/app/javascript/adminterface/lib/__tests__/header_toggler.html +2 -0
  22. data/app/javascript/adminterface/lib/__tests__/header_toggler.spec.js +212 -0
  23. data/app/javascript/adminterface/lib/__tests__/per_page.spec.js +75 -0
  24. data/app/javascript/adminterface/lib/__tests__/utils.spec.js +0 -1
  25. data/app/javascript/adminterface/lib/has_many.js +41 -38
  26. data/app/javascript/adminterface/lib/header_toggler.js +10 -8
  27. data/app/views/layouts/active_admin_logged_out.html.erb +1 -1
  28. data/lib/adminterface/configs.rb +5 -1
  29. data/lib/adminterface/engine.rb +0 -7
  30. data/lib/adminterface/extensions/base_controller.rb +16 -12
  31. data/lib/adminterface/extensions/namespace_settings.rb +3 -0
  32. data/lib/adminterface/extensions/view_helpers/alert_helper.rb +3 -1
  33. data/lib/adminterface/extensions/views/components/dropdown_menu.rb +4 -1
  34. data/lib/adminterface/extensions/views/components/menu_item.rb +8 -3
  35. data/lib/adminterface/extensions/views/components/tabs.rb +38 -13
  36. data/lib/adminterface/extensions/views/header.rb +2 -1
  37. data/lib/adminterface/extensions/views/pages/base.rb +4 -1
  38. data/lib/adminterface/initializers/configurations.rb +1 -1
  39. data/lib/adminterface/version.rb +1 -1
  40. data/lib/adminterface.rb +0 -31
  41. data/lib/generators/adminterface/comments/comments_generator.rb +4 -0
  42. data/lib/generators/adminterface/configs/configs_generator.rb +2 -2
  43. data/lib/generators/adminterface/install/install_generator.rb +21 -23
  44. data/lib/generators/adminterface/views/views_generator.rb +2 -2
  45. data/lib/generators/adminterface/webpacker/webpacker_generator.rb +20 -6
  46. metadata +16 -14
  47. data/lib/adminterface/encryption/encryptor.rb +0 -26
  48. data/lib/adminterface/license.rb +0 -18
  49. data/lib/adminterface/licensing/base.rb +0 -99
  50. data/lib/adminterface/licensing/commercial.rb +0 -7
  51. data/lib/adminterface/licensing/notice.rb +0 -54
  52. data/lib/adminterface/licensing/personal.rb +0 -13
  53. data/lib/adminterface/public.pem +0 -9
@@ -1,99 +0,0 @@
1
- module Adminterface
2
- module Licensing
3
- class Base
4
- extend Adminterface::Callable
5
-
6
- ENDPOINT = "https://app.adminterface.io/api/v1/licenses/verify".freeze
7
- CACHE_KEY = "adminterface.licensing.response".freeze
8
- TIMEOUT = 5
9
-
10
- attr_reader :license_key
11
- delegate :cache_store, :rails6_and_up?, to: :Adminterface
12
-
13
- def initialize(license_key = Adminterface.license_key)
14
- @license_key = license_key
15
- end
16
-
17
- def call
18
- response = send_and_cache_request.with_indifferent_access
19
- Adminterface::Licensing::Notice
20
- .call(response, license_key, **{external: request?, endpoint: ENDPOINT})
21
- response
22
- end
23
-
24
- def payload
25
- {
26
- license_key: encrypted_license_key,
27
- license: license,
28
- adminterface_version: Adminterface::VERSION,
29
- rails_version: Rails::VERSION::STRING,
30
- ruby_version: RUBY_VERSION,
31
- environment: Rails.env,
32
- app_name: app_name,
33
- verified: false
34
- }
35
- end
36
-
37
- private
38
-
39
- def encrypted_license_key
40
- @encrypted_license_key ||=
41
- license_key && Adminterface::Encryption::Encryptor.call(license_key)
42
- end
43
-
44
- def send_and_cache_request
45
- return cached_response if has_cached_response?
46
- return local_response unless request?
47
-
48
- response = HTTParty.post(
49
- ENDPOINT,
50
- body: payload.to_json,
51
- headers: {'Content-type': "application/json"},
52
- timeout: TIMEOUT
53
- )
54
-
55
- case response.code
56
- when 200 then cache_response response.code, response.parsed_response
57
- else return_error response.code, response.body
58
- end
59
- rescue => e
60
- return_error e.class, e.message
61
- end
62
-
63
- def local_response
64
- payload.merge(verified: true)
65
- end
66
-
67
- def request?
68
- true
69
- end
70
-
71
- def return_error(status, exception_message = "")
72
- payload.merge(status: status, message: exception_message).stringify_keys!
73
- end
74
-
75
- def cache_response(status, response, time: 1.hour.to_i)
76
- response = payload.merge!(status: status, expiry: time, **response).stringify_keys!
77
- cache_store.write(CACHE_KEY, response, expires_in: time)
78
- response
79
- end
80
-
81
- def license
82
- self.class.name.split("::").last.underscore
83
- end
84
-
85
- def app_name
86
- klass = Rails.application.class
87
- rails6_and_up? ? klass.module_parent.name : klass.parent.name
88
- end
89
-
90
- def has_cached_response?
91
- cache_store.exist? CACHE_KEY
92
- end
93
-
94
- def cached_response
95
- cache_store.read CACHE_KEY
96
- end
97
- end
98
- end
99
- end
@@ -1,7 +0,0 @@
1
- require_relative "./base"
2
-
3
- module Adminterface
4
- module Licensing
5
- class Commercial < Base; end
6
- end
7
- end
@@ -1,54 +0,0 @@
1
- module Adminterface
2
- module Licensing
3
- class Notice
4
- extend Adminterface::Callable
5
- attr_reader :response, :license_key, :external, :endpoint
6
-
7
- def initialize(response, license_key, external: true, endpoint: nil)
8
- @response = response
9
- @license_key = license_key
10
- @external = external
11
- @endpoint = endpoint
12
- end
13
-
14
- def call
15
- return unless Rails.env.development?
16
-
17
- log("========================================")
18
- log(messages)
19
- log("========================================")
20
- end
21
-
22
- private
23
-
24
- def log(*msgs)
25
- msgs.each { |x| puts(x) }
26
- end
27
-
28
- def external?
29
- !!external
30
- end
31
-
32
- def title
33
- "Adminterface #{response[:adminterface_version]} (\"#{response[:license]}\")"
34
- end
35
-
36
- def messages
37
- return title unless external?
38
-
39
- [title, "=> Verifying license on #{endpoint}", verified].flatten
40
- end
41
-
42
- def verified
43
- if !!response[:verified]
44
- Rainbow("=> [#{response[:status]}] #{response[:message]}").green
45
- else
46
- [
47
- Rainbow("=> [#{response[:status]}] #{response[:message]}").red,
48
- Rainbow("=> license_key: #{license_key}").red
49
- ]
50
- end
51
- end
52
- end
53
- end
54
- end
@@ -1,13 +0,0 @@
1
- require_relative "./base"
2
-
3
- module Adminterface
4
- module Licensing
5
- class Personal < Base
6
- private
7
-
8
- def request?
9
- false
10
- end
11
- end
12
- end
13
- end
@@ -1,9 +0,0 @@
1
- -----BEGIN PUBLIC KEY-----
2
- MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuH2AdyyQycs7DhFQo1f/
3
- 9ssIqc5ek7OYZHlfwSYSFuWaTfq46HK66QZ1ebkUva/U33QzNyaxcMxYpTpRY2dF
4
- IPLtS1QNktC4U0T3Nz0sY3tZp/IwnWcE9b8MpS2FDFtMRiHu+/dtthWoG6kP6w5y
5
- P8pWDLwQuYPbPnqlLbp6yWaJB1G1qHoLmgKD1VPUxjk0gB0tGPPvaiciESObbGC3
6
- IgzeUKtz/+dhR4UBOZc1pmrftwacUfvNHrSuot0jaYCNrb98Oq8kkBpp79MgRghK
7
- SkPdTRidSlIokdxlEOrcRhoJsVka5w9fYLShJdv1yhmGh3VZdKkvSqM7MhwE+zML
8
- 0QIDAQAB
9
- -----END PUBLIC KEY-----