katalyst-koi 5.11.4 → 5.12.0

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.
Files changed (35) hide show
  1. checksums.yaml +4 -4
  2. data/app/controllers/concerns/koi/controller/has_webauthn.rb +5 -2
  3. data/app/helpers/koi/header_helper.rb +3 -3
  4. data/app/views/admin/admin_users/show.html.erb +1 -1
  5. data/app/views/katalyst/navigation/menus/edit.html.erb +7 -2
  6. data/app/views/katalyst/navigation/menus/new.html.erb +7 -2
  7. metadata +2 -30
  8. data/app/assets/images/koi/application/chevron-right.svg +0 -10
  9. data/app/assets/images/koi/application/glyphicons-halflings-white.png +0 -0
  10. data/app/assets/images/koi/application/glyphicons-halflings.png +0 -0
  11. data/app/assets/images/koi/application/icon-collapse-down.png +0 -0
  12. data/app/assets/images/koi/application/icon-collapse-up.png +0 -0
  13. data/app/assets/images/koi/application/icon-file-doc.png +0 -0
  14. data/app/assets/images/koi/application/icon-file-img.png +0 -0
  15. data/app/assets/images/koi/application/icon-file-pdf.png +0 -0
  16. data/app/assets/images/koi/application/icon-file-ppt.png +0 -0
  17. data/app/assets/images/koi/application/icon-file-unknown.png +0 -0
  18. data/app/assets/images/koi/application/icon-file-xls.png +0 -0
  19. data/app/assets/images/koi/application/icon-file-zip.png +0 -0
  20. data/app/assets/images/koi/application/icon-form-date-picker.png +0 -0
  21. data/app/assets/images/koi/application/icon-form-error.png +0 -0
  22. data/app/assets/images/koi/application/icon-index-sort-ascending.png +0 -0
  23. data/app/assets/images/koi/application/icon-index-sort-descending.png +0 -0
  24. data/app/assets/images/koi/application/icon-index-sort.png +0 -0
  25. data/app/assets/images/koi/application/icon-index-sortable.png +0 -0
  26. data/app/assets/images/koi/application/icon-menu-cursor.png +0 -0
  27. data/app/assets/images/koi/application/icon-overlay-add.png +0 -0
  28. data/app/assets/images/koi/application/icon-overlay-close.png +0 -0
  29. data/app/assets/images/koi/application/icon-sortable.png +0 -0
  30. data/app/assets/images/koi/application/jcrop.gif +0 -0
  31. data/app/assets/images/koi/application/loading.gif +0 -0
  32. data/app/assets/images/koi/application/select-arrow.svg +0 -3
  33. data/app/assets/images/koi/application/select_arrow.png +0 -0
  34. data/app/assets/images/koi/application/sort-ascending.png +0 -0
  35. data/app/assets/images/koi/application/sort-descending.png +0 -0
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 211e9c496f7004d0732a7f00830d9d745708dfcdfc97a0c5335d1cd35676b121
4
- data.tar.gz: 2962081c2b698644576c134cfd3cc34a3e5ecede627b27def1242a71c3d395e1
3
+ metadata.gz: afee7b805fac88ecb5a44d5c133496622e254163996ff365dfd25a80c61bf280
4
+ data.tar.gz: 23245c78eba9d5cf35c489811939c290c54ad0e3ec3adca50fb99cac612f394b
5
5
  SHA512:
6
- metadata.gz: 71f2e398beb2f61ea05031ffd1b55659a257ed36463c56c10cd895e071a50e08f2fdb556c3573fdf1e44eb1ad6e8f0c2409d762aa6fb4b9f17d98cf2babe3516
7
- data.tar.gz: 147b0f64587328344df0cc2540f981a381436db06ef194cedfdd11506b007beba01624e88cb808be5340fc931becf76c48eab21a869243ff6bcd7465e4ebc588
6
+ metadata.gz: 474bfc88b55a6666838dfe870359e3c647d099120b48673e17242666ea30f60a0a82d25ec02e7277cf220be45b1f250a8bd8a1f02e86580e8b9042e8b7a74503
7
+ data.tar.gz: bda368a27d974f89bfa75371643c74a2bbf424202fc6304a1f1fee7b61173a574e1134b19eb8e9269259691d6cec46db06f3c47a58f6317be7c3a0d8f207c3e5
@@ -49,8 +49,11 @@ module Koi
49
49
  def webauthn_authenticate!(response)
50
50
  return if response.blank?
51
51
 
52
+ credential = JSON.parse(response)
53
+ return false unless credential.is_a?(Hash)
54
+
52
55
  webauthn_credential, stored_credential = webauthn_relying_party.verify_authentication(
53
- JSON.parse(response),
56
+ credential,
54
57
  session.delete(:authentication_challenge),
55
58
  ) do |credential|
56
59
  Admin::Credential.find_by!(external_id: credential.id)
@@ -62,7 +65,7 @@ module Koi
62
65
  )
63
66
 
64
67
  stored_credential.admin
65
- rescue ActiveRecord::RecordNotFound, WebAuthn::VerificationError
68
+ rescue ActiveRecord::RecordNotFound, WebAuthn::VerificationError, JSON::ParserError
66
69
  false
67
70
  end
68
71
 
@@ -75,8 +75,8 @@ module Koi
75
75
  # @param model [ActiveRecord::Base] The record to create an archive/delete link for
76
76
  # @param archive_text [String] Text to display for archive link (default: "Archive")
77
77
  # @param delete_text [String] Text to display for delete link (default: "Delete")
78
- # @param confirm [String] Confirmation message for delete action (default: "Are you sure?")
79
- # @param url [String] Target url for delete actions (defaults to admin_<record>_path)
78
+ # @param confirm [String] Confirmation message for archive and delete actions (default: "Are you sure?")
79
+ # @param url [String] Target url for archive and delete actions (defaults to admin_<record>_path)
80
80
  # @param ** Additional HTML attributes to pass to the link
81
81
  # @return [String, nil] Returns the HTML link element, or nil if record is not persisted
82
82
  #
@@ -97,7 +97,7 @@ module Koi
97
97
  if model.archived?
98
98
  link_to(delete_text, url, data: { turbo_method: :delete, turbo_confirm: confirm }, **)
99
99
  else
100
- link_to(archive_text, url, data: { turbo_method: :delete }, **)
100
+ link_to(archive_text, url, data: { turbo_method: :delete, turbo_confirm: confirm }, **)
101
101
  end
102
102
  end
103
103
 
@@ -24,7 +24,7 @@
24
24
  <% row.text(:sign_in_count, label: "Total logins") %>
25
25
  <% row.boolean(:passkey) %>
26
26
  <% row.boolean(:otp, label: "MFA") %>
27
- <% row.boolean(:archived?) %>
27
+ <% row.boolean(:archived) %>
28
28
  <% end %>
29
29
 
30
30
  <% unless admin_user.archived? %>
@@ -12,8 +12,13 @@
12
12
  <% end %>
13
13
 
14
14
  <%= form_with model: menu, url: katalyst_navigation.menu_path(menu) do |form| %>
15
- <%= form.govuk_text_field :title %>
16
- <%= form.govuk_text_field :slug %>
15
+ <%= form.govuk_fieldset legend: nil, data: { controller: "sluggable", sluggable_slug_value: form.object.slug } do %>
16
+ <%= form.govuk_text_field :title,
17
+ data: { sluggable_target: "source", action: "keyup->sluggable#sourceChanged" } %>
18
+ <%= form.govuk_text_field :slug,
19
+ data: { sluggable_target: "slug", action: "keyup->sluggable#slugChanged" } %>
20
+ <% end %>
21
+
17
22
  <%= form.govuk_text_field :depth %>
18
23
  <%= form.button(type: :submit, class: "button", name: :commit, value: :save) %>
19
24
  <% end %>
@@ -7,8 +7,13 @@
7
7
  <% end %>
8
8
 
9
9
  <%= form_with model: menu, url: katalyst_navigation.menus_path do |form| %>
10
- <%= form.govuk_text_field :title %>
11
- <%= form.govuk_text_field :slug %>
10
+ <%= form.govuk_fieldset legend: nil, data: { controller: "sluggable", sluggable_slug_value: form.object.slug } do %>
11
+ <%= form.govuk_text_field :title,
12
+ data: { sluggable_target: "source", action: "keyup->sluggable#sourceChanged" } %>
13
+ <%= form.govuk_text_field :slug,
14
+ data: { sluggable_target: "slug", action: "keyup->sluggable#slugChanged" } %>
15
+ <% end %>
16
+
12
17
  <%= form.govuk_text_field :depth %>
13
18
  <%= form.button(type: :submit, class: "button") %>
14
19
  <% end %>
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: katalyst-koi
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.11.4
4
+ version: 5.12.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Katalyst Interactive
@@ -279,34 +279,6 @@ files:
279
279
  - app/assets/fonts/koi/inter-license.txt
280
280
  - app/assets/fonts/koi/inter-variable-v4-1-italic.woff2
281
281
  - app/assets/fonts/koi/inter-variable-v4-1.woff2
282
- - app/assets/images/koi/application/chevron-right.svg
283
- - app/assets/images/koi/application/glyphicons-halflings-white.png
284
- - app/assets/images/koi/application/glyphicons-halflings.png
285
- - app/assets/images/koi/application/icon-collapse-down.png
286
- - app/assets/images/koi/application/icon-collapse-up.png
287
- - app/assets/images/koi/application/icon-file-doc.png
288
- - app/assets/images/koi/application/icon-file-img.png
289
- - app/assets/images/koi/application/icon-file-pdf.png
290
- - app/assets/images/koi/application/icon-file-ppt.png
291
- - app/assets/images/koi/application/icon-file-unknown.png
292
- - app/assets/images/koi/application/icon-file-xls.png
293
- - app/assets/images/koi/application/icon-file-zip.png
294
- - app/assets/images/koi/application/icon-form-date-picker.png
295
- - app/assets/images/koi/application/icon-form-error.png
296
- - app/assets/images/koi/application/icon-index-sort-ascending.png
297
- - app/assets/images/koi/application/icon-index-sort-descending.png
298
- - app/assets/images/koi/application/icon-index-sort.png
299
- - app/assets/images/koi/application/icon-index-sortable.png
300
- - app/assets/images/koi/application/icon-menu-cursor.png
301
- - app/assets/images/koi/application/icon-overlay-add.png
302
- - app/assets/images/koi/application/icon-overlay-close.png
303
- - app/assets/images/koi/application/icon-sortable.png
304
- - app/assets/images/koi/application/jcrop.gif
305
- - app/assets/images/koi/application/loading.gif
306
- - app/assets/images/koi/application/select-arrow.svg
307
- - app/assets/images/koi/application/select_arrow.png
308
- - app/assets/images/koi/application/sort-ascending.png
309
- - app/assets/images/koi/application/sort-descending.png
310
282
  - app/assets/images/koi/icons/add.svg
311
283
  - app/assets/images/koi/icons/close.svg
312
284
  - app/assets/images/koi/icons/cube.svg
@@ -603,7 +575,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
603
575
  - !ruby/object:Gem::Version
604
576
  version: '0'
605
577
  requirements: []
606
- rubygems_version: 4.0.16
578
+ rubygems_version: 4.0.20
607
579
  specification_version: 4
608
580
  summary: Koi CMS admin framework
609
581
  test_files: []
@@ -1,10 +0,0 @@
1
- <svg width="48" height="48" viewBox="0 0 48 48" fill="none" xmlns="http://www.w3.org/2000/svg">
2
- <g clip-path="url(#clip0_19_2)">
3
- <path d="M19.9999 12L17.1799 14.82L26.3399 24L17.1799 33.18L19.9999 36L31.9999 24L19.9999 12Z" fill="black"/>
4
- </g>
5
- <defs>
6
- <clipPath id="clip0_19_2">
7
- <rect width="48" height="48" fill="white"/>
8
- </clipPath>
9
- </defs>
10
- </svg>
@@ -1,3 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 13">
2
- <path d="M.541 0l11.125 12.573a.5.5 0 00.749 0L23.541 0h-23z" fill="#000" fill-rule="evenodd"/>
3
- </svg>