diff --git a/resources/ts/back/Components/ModelActions.tsx b/resources/ts/back/Components/ModelActions.tsx index 76142458..8b98b4c5 100644 --- a/resources/ts/back/Components/ModelActions.tsx +++ b/resources/ts/back/Components/ModelActions.tsx @@ -64,12 +64,12 @@ export default function ModelActions({ const routeAction = route(`back.${modelRoute}.${action.value}`, model.id); // All post actions mapping. - const actionMap: Record = { - [Views.ARCHIVATION.value]: { + [Views.ARCHIVATION.label]: { method: destroy, success: { title: "Archivation réussie !", @@ -80,7 +80,7 @@ export default function ModelActions({ description: "Un problème est survenu lors de l'archivation de cette entrée.", }, }, - [Views.RESTORATION.value]: { + [Views.RESTORATION.label]: { method: patch, success: { title: "Restoration réussie !", @@ -91,7 +91,7 @@ export default function ModelActions({ description: "Un problème est survenu lors de la restoration de cette entrée.", }, }, - [Views.DELETION.value]: { + [Views.DELETION.label || Views.FORCEDELETION.label]: { method: destroy, success: { title: "Suppression réussie !", @@ -103,9 +103,9 @@ export default function ModelActions({ }, }, }; - const config = actionMap[action.value]; + const config = actionMap[action.label]; if (!config) { - throw new Error(`Unknown action: ${action.value}`); + throw new Error(`Unknown action: ${action.label}`); } config.method(routeAction, { @@ -126,6 +126,7 @@ export default function ModelActions({ action.value === Views.ARCHIVATION.value || action.value === Views.RESTORATION.value || action.value === Views.DELETION.value + || action.value === Views.FORCEDELETION.value ? inDialog && index != 0 ? ( <> @@ -144,8 +145,8 @@ export default function ModelActions({ * @returns Element */ const PostAction = ({ action }: { action: ViewsType[number] }) => { - const isRestoreAction = action.value === Views.RESTORATION.value; - const isArchiveAction = action.value === Views.ARCHIVATION.value; + const isRestoreAction = action.label === Views.RESTORATION.label; + const isArchiveAction = action.label === Views.ARCHIVATION.label; const btnVariantType = isRestoreAction ? "ghost" : "destructive"; const btnConfirm = useTrans(isRestoreAction ? "back.yes_restore" : "back.yes_delete"); const btnDesc = useTrans(isRestoreAction ? "back.restore_data" : isArchiveAction ? "back.trash_data" : "back.lost_data"); diff --git a/resources/ts/back/Pages/DynamicPages/Index.tsx b/resources/ts/back/Pages/DynamicPages/Index.tsx index 7f65f032..81e8814d 100644 --- a/resources/ts/back/Pages/DynamicPages/Index.tsx +++ b/resources/ts/back/Pages/DynamicPages/Index.tsx @@ -45,7 +45,7 @@ export default function Dashboard({ const isArchiveRoute = route().current("back.dynamic-pages.trash"); const actionModels = isArchiveRoute ? [ Views.RESTORATION, - Views.DELETION, + Views.FORCEDELETION, ] : [ Views.VISUALIZATION, Views.EDITION, diff --git a/resources/ts/back/Pages/DynamicPages/Show.tsx b/resources/ts/back/Pages/DynamicPages/Show.tsx index 3a44143e..62e017d6 100644 --- a/resources/ts/back/Pages/DynamicPages/Show.tsx +++ b/resources/ts/back/Pages/DynamicPages/Show.tsx @@ -42,7 +42,7 @@ export default function Show({ data }: { data: SingleResource }) { auth: AuthProp; appEnv: AppEnv; }; - const { viewAny } = auth.policies.users; + const { viewAny } = auth.policies.dynamicPages; const dynamicPageModel = data.data as DynamicPageModel; const enumDynamicPageStatus = usePage().props.enumDynamicPageStatus as LaravelEnum; const actionModels = [ diff --git a/resources/ts/back/Pages/PageConfigs/Index.tsx b/resources/ts/back/Pages/PageConfigs/Index.tsx index d78347e2..ab94083d 100644 --- a/resources/ts/back/Pages/PageConfigs/Index.tsx +++ b/resources/ts/back/Pages/PageConfigs/Index.tsx @@ -41,7 +41,7 @@ export default function Dashboard({ const isArchiveRoute = route().current("back.page-configs.trash"); const actionModels = isArchiveRoute ? [ Views.RESTORATION, - Views.DELETION, + Views.FORCEDELETION, ] : [ Views.VISUALIZATION, Views.EDITION, diff --git a/resources/ts/back/Pages/Users/Show.tsx b/resources/ts/back/Pages/Users/Show.tsx index 4ae8ec40..65f23c25 100644 --- a/resources/ts/back/Pages/Users/Show.tsx +++ b/resources/ts/back/Pages/Users/Show.tsx @@ -27,7 +27,11 @@ export default function Show({ data }: { data: SingleResource }) { }; const { viewAny } = auth.policies.users; const userModel = data.data as UserModel; - const actionModels = [Views.EDITION, Views.DUPLICATION, Views.DELETION]; + const actionModels = [ + Views.EDITION, + Views.DUPLICATION, + Views.DELETION, + ]; const columns = [ { accessorKey: "first_name", diff --git a/resources/ts/lib/utils.ts b/resources/ts/lib/utils.ts index af9dab6a..2c2380d6 100644 --- a/resources/ts/lib/utils.ts +++ b/resources/ts/lib/utils.ts @@ -62,6 +62,12 @@ export const Views = { icon: ArchiveRestore, }, DELETION: { + label: "suppression", + value: "destroy", + policy: "delete", + icon: Trash2, + }, + FORCEDELETION: { label: "suppression", value: "forceDestroy", policy: "forceDelete", diff --git a/routes/web-back.php b/routes/web-back.php index a5733a55..725f9482 100644 --- a/routes/web-back.php +++ b/routes/web-back.php @@ -28,9 +28,7 @@ Route::prefix('admin') })->name('dashboard.index'); // * USERS. - Route::delete('/users/{user}/force', [UserController::class, 'forceDestroy']) - ->name('users.forceDestroy'); - Route::resource('users', UserController::class)->except("destroy"); + Route::resource('users', UserController::class); Route::get('/users/{user}/duplicate', [UserController::class, 'duplicate'])->name('users.duplicate'); // * DYNAMIC PAGES.