From a170eff37a16655b381f07d9d4b600afaf54876c Mon Sep 17 00:00:00 2001 From: Zsolt Tasnadi Date: Wed, 29 Jul 2026 13:27:39 +0200 Subject: [PATCH] isAdmin trick --- apps/api/config/initializers/admin_cookie.rb | 20 ++++++++++++++++++++ apps/frontend/src/layout/AppLayout.vue | 2 +- 2 files changed, 21 insertions(+), 1 deletion(-) create mode 100644 apps/api/config/initializers/admin_cookie.rb diff --git a/apps/api/config/initializers/admin_cookie.rb b/apps/api/config/initializers/admin_cookie.rb new file mode 100644 index 0000000..b1d33de --- /dev/null +++ b/apps/api/config/initializers/admin_cookie.rb @@ -0,0 +1,20 @@ +# Set a JS-readable cookie when an admin signs in/out. +# Devise's remember_admin_user_token cookie is HttpOnly, +# so the frontend cannot read it. This non-HttpOnly cookie +# lets the frontend show/hide the Admin menu link. + +Rails.application.config.to_prepare do + ApplicationController.class_eval do + after_action :sync_admin_cookie + + private + + def sync_admin_cookie + if current_admin_user + cookies[:is_admin] = { value: "1", httponly: false, same_site: :lax, path: "/" } + elsif cookies[:is_admin] + cookies.delete(:is_admin, path: "/") + end + end + end +end diff --git a/apps/frontend/src/layout/AppLayout.vue b/apps/frontend/src/layout/AppLayout.vue index e8487c1..d5da1be 100644 --- a/apps/frontend/src/layout/AppLayout.vue +++ b/apps/frontend/src/layout/AppLayout.vue @@ -87,7 +87,7 @@ const ui = useUiStore() const { isRetroMode, menuOpen } = storeToRefs(ui) const { toggleMenu, toggleRetroMode } = ui const route = useRoute() -const isAdmin = computed(() => !!getCookie('remember_admin_user_token')) +const isAdmin = computed(() => !!getCookie('is_admin')) watch(() => route.path, () => { ui.closeMenu()