diff --git a/frontend/layouts/admin.vue b/frontend/layouts/admin.vue index 5e63f38e9dea..c6222faa40bd 100644 --- a/frontend/layouts/admin.vue +++ b/frontend/layouts/admin.vue @@ -34,7 +34,7 @@ import { SidebarLinks } from "~/types/application-types"; export default defineComponent({ components: { AppHeader, AppSidebar, TheSnackbar }, - middleware: "auth", + middleware: ["auth", "admin-only"], auth: true, setup() { const { $globals, i18n, $vuetify } = useContext(); diff --git a/frontend/middleware/admin-only.ts b/frontend/middleware/admin-only.ts new file mode 100644 index 000000000000..66a4e00f3566 --- /dev/null +++ b/frontend/middleware/admin-only.ts @@ -0,0 +1,10 @@ +interface AuthRedirectParams { + $auth: any + redirect: (path: string) => void +} +export default function ({ $auth, redirect }: AuthRedirectParams) { + // If the user is not an admin redirect to the home page + if (!$auth.user.admin) { + return redirect("/") + } +}