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.
- checksums.yaml +4 -4
- data/app/assets/builds/easy_admin.base.js +88 -0
- data/app/assets/builds/easy_admin.base.js.map +3 -3
- data/app/assets/builds/easy_admin.css +54 -0
- data/app/components/easy_admin/navbar_component.rb +19 -4
- data/app/components/easy_admin/profile/change_password_modal_component.rb +75 -0
- data/app/components/easy_admin/profile/profile_tab_component.rb +92 -0
- data/app/components/easy_admin/profile/security_tab_component.rb +53 -0
- data/app/components/easy_admin/profile/settings_component.rb +103 -0
- data/app/components/easy_admin/two_factor/backup_codes_component.rb +118 -0
- data/app/components/easy_admin/two_factor/setup_component.rb +124 -0
- data/app/components/easy_admin/two_factor/status_component.rb +92 -0
- data/app/controllers/concerns/easy_admin/two_factor.rb +110 -0
- data/app/controllers/easy_admin/application_controller.rb +10 -0
- data/app/controllers/easy_admin/profile_controller.rb +25 -0
- data/app/controllers/easy_admin/sessions_controller.rb +107 -1
- data/app/javascript/easy_admin/controllers/vertical_tabs_controller.js +112 -0
- data/app/javascript/easy_admin/controllers.js +3 -1
- data/app/models/easy_admin/admin_user.rb +3 -0
- data/app/views/easy_admin/profile/backup_codes_regenerated.turbo_stream.erb +12 -0
- data/app/views/easy_admin/profile/change_password.html.erb +24 -0
- data/app/views/easy_admin/profile/index.html.erb +1 -0
- data/app/views/easy_admin/profile/password_error.turbo_stream.erb +6 -0
- data/app/views/easy_admin/profile/password_invalid_current.turbo_stream.erb +6 -0
- data/app/views/easy_admin/profile/password_updated.turbo_stream.erb +9 -0
- data/app/views/easy_admin/profile/two_factor_backup_codes.html.erb +24 -0
- data/app/views/easy_admin/profile/two_factor_enabled.turbo_stream.erb +12 -0
- data/app/views/easy_admin/profile/two_factor_invalid_code.turbo_stream.erb +6 -0
- data/app/views/easy_admin/profile/two_factor_not_enabled.turbo_stream.erb +6 -0
- data/app/views/easy_admin/profile/two_factor_setup.html.erb +24 -0
- data/app/views/easy_admin/profile/two_factor_unavailable.turbo_stream.erb +6 -0
- data/app/views/easy_admin/sessions/two_factor_verification.html.erb +48 -0
- data/app/views/easy_admin/sessions/verify_2fa_error.turbo_stream.erb +13 -0
- data/config/routes.rb +20 -1
- data/lib/easy-admin-rails.rb +1 -0
- data/lib/easy_admin/two_factor_authentication.rb +156 -0
- data/lib/easy_admin/version.rb +1 -1
- data/lib/generators/easy_admin/two_factor/templates/README +29 -0
- data/lib/generators/easy_admin/two_factor/templates/migration.rb +10 -0
- data/lib/generators/easy_admin/two_factor/two_factor_generator.rb +22 -0
- metadata +30 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5e90957dc32728330bda3441bc02e107bfc373904b190cce9e355fa4c2072a1e
|
4
|
+
data.tar.gz: c1c820f50d74a7894ba43ba9aa8d90925fdaa747466673b2145eeee52e4546f4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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 = {};
|