mirror of
https://github.com/mealie-recipes/mealie.git
synced 2025-07-09 03:04:54 -04:00
manage-data pages
This commit is contained in:
parent
02997cd36e
commit
19e776a772
@ -1,8 +1,8 @@
|
||||
interface AuthRedirectParams {
|
||||
interface AdminRedirectParams {
|
||||
$auth: any
|
||||
redirect: (path: string) => void
|
||||
}
|
||||
export default function ({ $auth, redirect }: AuthRedirectParams) {
|
||||
export default function ({ $auth, redirect }: AdminRedirectParams) {
|
||||
// If the user is not an admin redirect to the home page
|
||||
if (!$auth.user.admin) {
|
||||
return redirect("/")
|
||||
|
12
frontend/middleware/can-organize-only.ts
Normal file
12
frontend/middleware/can-organize-only.ts
Normal file
@ -0,0 +1,12 @@
|
||||
interface CanOrganizeRedirectParams {
|
||||
$auth: any
|
||||
redirect: (path: string) => void
|
||||
}
|
||||
export default function ({ $auth, redirect }: CanOrganizeRedirectParams) {
|
||||
console.log($auth.user);
|
||||
// If the user is not allowed to organize redirect to the home page
|
||||
if (!$auth.user.canOrganize) {
|
||||
console.warn("User is not allowed to organize data");
|
||||
return redirect("/")
|
||||
}
|
||||
}
|
@ -73,6 +73,7 @@ import { useCategoryStore, useCategoryData } from "~/composables/store";
|
||||
import { RecipeCategory } from "~/lib/api/types/admin";
|
||||
|
||||
export default defineComponent({
|
||||
middleware: ["auth", "can-organize-only"],
|
||||
setup() {
|
||||
const { i18n } = useContext();
|
||||
const tableConfig = {
|
||||
|
@ -201,8 +201,8 @@ import { useFoodStore, useLabelStore } from "~/composables/store";
|
||||
import { VForm } from "~/types/vuetify";
|
||||
|
||||
export default defineComponent({
|
||||
|
||||
components: { MultiPurposeLabel, RecipeDataAliasManagerDialog },
|
||||
middleware: ["auth", "can-organize-only"],
|
||||
setup() {
|
||||
const userApi = useUserApi();
|
||||
const { i18n } = useContext();
|
||||
|
@ -122,6 +122,7 @@ import { useLabelData, useLabelStore } from "~/composables/store";
|
||||
|
||||
export default defineComponent({
|
||||
components: { MultiPurposeLabel },
|
||||
middleware: ["auth", "can-organize-only"],
|
||||
setup() {
|
||||
const userApi = useUserApi();
|
||||
const { i18n } = useContext();
|
||||
|
@ -176,6 +176,7 @@ enum MODES {
|
||||
|
||||
export default defineComponent({
|
||||
components: { RecipeDataTable, RecipeOrganizerSelector, GroupExportData, RecipeSettingsSwitches },
|
||||
middleware: ["auth", "can-organize-only"],
|
||||
scrollToTop: true,
|
||||
setup() {
|
||||
const { getAllRecipes, refreshRecipes } = useRecipes(true, true);
|
||||
|
@ -73,6 +73,7 @@ import { useTagStore, useTagData } from "~/composables/store";
|
||||
import { RecipeTag } from "~/lib/api/types/admin";
|
||||
|
||||
export default defineComponent({
|
||||
middleware: ["auth", "can-organize-only"],
|
||||
setup() {
|
||||
const { i18n } = useContext();
|
||||
const tableConfig = {
|
||||
|
@ -80,6 +80,7 @@ import { useToolStore, useToolData } from "~/composables/store";
|
||||
import { RecipeTool } from "~/lib/api/types/admin";
|
||||
|
||||
export default defineComponent({
|
||||
middleware: ["auth", "can-organize-only"],
|
||||
setup() {
|
||||
const { i18n } = useContext();
|
||||
const tableConfig = {
|
||||
|
@ -218,6 +218,7 @@ import { VForm } from "~/types/vuetify";
|
||||
|
||||
export default defineComponent({
|
||||
components: { RecipeDataAliasManagerDialog },
|
||||
middleware: ["auth", "can-organize-only"],
|
||||
setup() {
|
||||
const userApi = useUserApi();
|
||||
const { i18n } = useContext();
|
||||
|
@ -162,17 +162,16 @@
|
||||
</UserProfileLinkCard>
|
||||
</v-col>
|
||||
</AdvancedOnly>
|
||||
<AdvancedOnly>
|
||||
<v-col cols="12" sm="12" md="6">
|
||||
<UserProfileLinkCard
|
||||
:link="{ text: $tc('profile.manage-data'), to: `/group/data/foods` }"
|
||||
:image="require('~/static/svgs/manage-recipes.svg')"
|
||||
>
|
||||
<template #title> {{ $t('profile.manage-data') }} </template>
|
||||
{{ $t('profile.manage-data-description') }}
|
||||
</UserProfileLinkCard>
|
||||
</v-col>
|
||||
</AdvancedOnly>
|
||||
<!-- $auth.user.canOrganize should not be null because of the auth middleware -->
|
||||
<v-col v-if="$auth.user.canOrganize" cols="12" sm="12" md="6">
|
||||
<UserProfileLinkCard
|
||||
:link="{ text: $tc('profile.manage-data'), to: `/group/data/foods` }"
|
||||
:image="require('~/static/svgs/manage-recipes.svg')"
|
||||
>
|
||||
<template #title> {{ $t('profile.manage-data') }} </template>
|
||||
{{ $t('profile.manage-data-description') }}
|
||||
</UserProfileLinkCard>
|
||||
</v-col>
|
||||
<AdvancedOnly>
|
||||
<v-col cols="12" sm="12" md="6">
|
||||
<UserProfileLinkCard
|
||||
@ -208,6 +207,7 @@ export default defineComponent({
|
||||
UserAvatar,
|
||||
StatsCards,
|
||||
},
|
||||
middleware: ["auth"],
|
||||
scrollToTop: true,
|
||||
setup() {
|
||||
const { $auth, i18n } = useContext();
|
||||
|
Loading…
x
Reference in New Issue
Block a user