easy-admin-rails 0.2.5 → 0.2.6

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 (41) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/builds/easy_admin.base.js +88 -0
  3. data/app/assets/builds/easy_admin.base.js.map +3 -3
  4. data/app/assets/builds/easy_admin.css +54 -0
  5. data/app/components/easy_admin/navbar_component.rb +19 -4
  6. data/app/components/easy_admin/profile/change_password_modal_component.rb +75 -0
  7. data/app/components/easy_admin/profile/profile_tab_component.rb +92 -0
  8. data/app/components/easy_admin/profile/security_tab_component.rb +53 -0
  9. data/app/components/easy_admin/profile/settings_component.rb +103 -0
  10. data/app/components/easy_admin/two_factor/backup_codes_component.rb +118 -0
  11. data/app/components/easy_admin/two_factor/setup_component.rb +124 -0
  12. data/app/components/easy_admin/two_factor/status_component.rb +92 -0
  13. data/app/controllers/concerns/easy_admin/two_factor.rb +110 -0
  14. data/app/controllers/easy_admin/application_controller.rb +10 -0
  15. data/app/controllers/easy_admin/profile_controller.rb +25 -0
  16. data/app/controllers/easy_admin/sessions_controller.rb +107 -1
  17. data/app/javascript/easy_admin/controllers/vertical_tabs_controller.js +112 -0
  18. data/app/javascript/easy_admin/controllers.js +3 -1
  19. data/app/models/easy_admin/admin_user.rb +3 -0
  20. data/app/views/easy_admin/profile/backup_codes_regenerated.turbo_stream.erb +12 -0
  21. data/app/views/easy_admin/profile/change_password.html.erb +24 -0
  22. data/app/views/easy_admin/profile/index.html.erb +1 -0
  23. data/app/views/easy_admin/profile/password_error.turbo_stream.erb +6 -0
  24. data/app/views/easy_admin/profile/password_invalid_current.turbo_stream.erb +6 -0
  25. data/app/views/easy_admin/profile/password_updated.turbo_stream.erb +9 -0
  26. data/app/views/easy_admin/profile/two_factor_backup_codes.html.erb +24 -0
  27. data/app/views/easy_admin/profile/two_factor_enabled.turbo_stream.erb +12 -0
  28. data/app/views/easy_admin/profile/two_factor_invalid_code.turbo_stream.erb +6 -0
  29. data/app/views/easy_admin/profile/two_factor_not_enabled.turbo_stream.erb +6 -0
  30. data/app/views/easy_admin/profile/two_factor_setup.html.erb +24 -0
  31. data/app/views/easy_admin/profile/two_factor_unavailable.turbo_stream.erb +6 -0
  32. data/app/views/easy_admin/sessions/two_factor_verification.html.erb +48 -0
  33. data/app/views/easy_admin/sessions/verify_2fa_error.turbo_stream.erb +13 -0
  34. data/config/routes.rb +20 -1
  35. data/lib/easy-admin-rails.rb +1 -0
  36. data/lib/easy_admin/two_factor_authentication.rb +156 -0
  37. data/lib/easy_admin/version.rb +1 -1
  38. data/lib/generators/easy_admin/two_factor/templates/README +29 -0
  39. data/lib/generators/easy_admin/two_factor/templates/migration.rb +10 -0
  40. data/lib/generators/easy_admin/two_factor/two_factor_generator.rb +22 -0
  41. metadata +30 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7a4f75393aa2ccd50a842d05ddb8f358f05ccaf8df0ff97952d1549c9a179b22
4
- data.tar.gz: 00b030d700c2e11b21ee4027f5ee48385577b2fe5abcdef97f38fc109441b8dc
3
+ metadata.gz: 5e90957dc32728330bda3441bc02e107bfc373904b190cce9e355fa4c2072a1e
4
+ data.tar.gz: c1c820f50d74a7894ba43ba9aa8d90925fdaa747466673b2145eeee52e4546f4
5
5
  SHA512:
6
- metadata.gz: cd64222eeba34c8050ec8b35f2f4b4141a940af622fd9e076f5f9f5bc78ad60f734bb4c646a442ec7160c9ad53b238a06fd6094d4929d9bd0e29c49fe968bddf
7
- data.tar.gz: 6883d05f2bcb09da402acee060e0b17856b023c3aef73ae449ffed53d3889e03bb6b505c1958f28d3f6ed00c2a25b42f9d3af719d0645761abd982bca18f1881
6
+ metadata.gz: 40cdbf9df46b9982287bcd510c01b17f198e7b74459c68736328315a012dbb4b708b915f58c469f98da8d0f40eba96d55de3fdd8fd7393c7256dbb04f2a72d72
7
+ data.tar.gz: b5b047fe2779423f9d64d88ff8118f538496253dbfbf2cc38969a813ec2fe2a6e81c9d9822b9bbabc66b6bef9a5d50cf3608d2da1bbac2565bb40e2135892c3f
@@ -41273,6 +41273,93 @@ ${m = t3 ? m : H(m, ",")}
41273
41273
  }
41274
41274
  };
41275
41275
 
41276
+ // app/javascript/easy_admin/controllers/vertical_tabs_controller.js
41277
+ var vertical_tabs_controller_default = class extends Controller {
41278
+ static targets = ["tab", "content"];
41279
+ connect() {
41280
+ const urlParams = new URLSearchParams(window.location.search);
41281
+ const tabFromUrl = urlParams.get("tab");
41282
+ if (tabFromUrl && this.isValidTab(tabFromUrl)) {
41283
+ this.activateTab(tabFromUrl);
41284
+ } else {
41285
+ const firstTab = this.tabTargets[0];
41286
+ if (firstTab) {
41287
+ this.activateTab(firstTab.dataset.tabId);
41288
+ }
41289
+ }
41290
+ this.handlePopState = this.handlePopState.bind(this);
41291
+ window.addEventListener("popstate", this.handlePopState);
41292
+ }
41293
+ disconnect() {
41294
+ window.removeEventListener("popstate", this.handlePopState);
41295
+ }
41296
+ switchTab(event) {
41297
+ event.preventDefault();
41298
+ const tabId = event.currentTarget.dataset.tabId;
41299
+ this.activateTab(tabId);
41300
+ }
41301
+ activateTab(tabId) {
41302
+ this.tabTargets.forEach((tab) => {
41303
+ const isActive = tab.dataset.tabId === tabId;
41304
+ if (isActive) {
41305
+ tab.classList.remove("text-gray-700", "hover:bg-gray-100", "hover:text-gray-900");
41306
+ tab.classList.add("bg-blue-50", "text-blue-700", "border-blue-200");
41307
+ } else {
41308
+ tab.classList.remove("bg-blue-50", "text-blue-700", "border-blue-200");
41309
+ tab.classList.add("text-gray-700", "hover:bg-gray-100", "hover:text-gray-900");
41310
+ }
41311
+ });
41312
+ this.contentTargets.forEach((content) => {
41313
+ const isActive = content.dataset.tabId === tabId;
41314
+ if (isActive) {
41315
+ content.classList.remove("hidden");
41316
+ } else {
41317
+ content.classList.add("hidden");
41318
+ }
41319
+ });
41320
+ if (history.replaceState) {
41321
+ const url = new URL(window.location);
41322
+ url.searchParams.set("tab", tabId);
41323
+ history.replaceState(null, "", url);
41324
+ }
41325
+ }
41326
+ isValidTab(tabId) {
41327
+ return this.tabTargets.some((tab) => tab.dataset.tabId === tabId);
41328
+ }
41329
+ handlePopState() {
41330
+ const urlParams = new URLSearchParams(window.location.search);
41331
+ const tabFromUrl = urlParams.get("tab");
41332
+ if (tabFromUrl && this.isValidTab(tabFromUrl)) {
41333
+ this.activateTabSilently(tabFromUrl);
41334
+ } else {
41335
+ const firstTab = this.tabTargets[0];
41336
+ if (firstTab) {
41337
+ this.activateTabSilently(firstTab.dataset.tabId);
41338
+ }
41339
+ }
41340
+ }
41341
+ activateTabSilently(tabId) {
41342
+ this.tabTargets.forEach((tab) => {
41343
+ const isActive = tab.dataset.tabId === tabId;
41344
+ if (isActive) {
41345
+ tab.classList.remove("text-gray-700", "hover:bg-gray-100", "hover:text-gray-900");
41346
+ tab.classList.add("bg-blue-50", "text-blue-700", "border-blue-200");
41347
+ } else {
41348
+ tab.classList.remove("bg-blue-50", "text-blue-700", "border-blue-200");
41349
+ tab.classList.add("text-gray-700", "hover:bg-gray-100", "hover:text-gray-900");
41350
+ }
41351
+ });
41352
+ this.contentTargets.forEach((content) => {
41353
+ const isActive = content.dataset.tabId === tabId;
41354
+ if (isActive) {
41355
+ content.classList.remove("hidden");
41356
+ } else {
41357
+ content.classList.add("hidden");
41358
+ }
41359
+ });
41360
+ }
41361
+ };
41362
+
41276
41363
  // app/javascript/easy_admin/controllers.js
41277
41364
  application.register("sidebar", sidebar_controller_default);
41278
41365
  application.register("sidebar-nav", sidebar_nav_controller_default);
@@ -41302,6 +41389,7 @@ ${m = t3 ? m : H(m, ",")}
41302
41389
  application.register("version-revert", version_revert_controller_default);
41303
41390
  application.register("role-preview", role_preview_controller_default);
41304
41391
  application.register("permission-toggle", permission_toggle_controller_default);
41392
+ application.register("vertical-tabs", vertical_tabs_controller_default);
41305
41393
 
41306
41394
  // node_modules/@hotwired/turbo/dist/turbo.es2017-esm.js
41307
41395
  var turbo_es2017_esm_exports = {};