Files
L-Ami-Fiduciaire/resources/js/pages/workspaces/Edit.vue
Saad Ibn-Ezzoubayr c89d1879bf feat: complete Epic 1 — team management & permission system
- Story 1.1: Permission enum, config, AuthorizesPermissions & HasWorkspaceScope traits, member→worker migration
- Story 1.2: Team page with member list, invitation system with queued email
- Story 1.3: Role assignment (Manager/Worker) and member removal with activity logging
- Story 1.4: Owner-only permission toggle matrix for Managers (manage team, view logs, configure portal)
- Story 1.5: Role-based access enforcement — Workers see only assigned declarations/clients, sidebar scoping
- Story 1.6: Workspace switcher dropdown for multi-workspace users with session-based switching
- 83 new/modified files, 182 tests passing with zero regressions

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-18 00:12:50 +00:00

62 lines
1.7 KiB
Vue

<script setup lang="ts">
import { Head, useForm } from '@inertiajs/vue3';
import Heading from '@/components/Heading.vue';
import WorkspaceForm from '@/components/WorkspaceForm.vue';
import type { WorkspaceFormData } from '@/components/WorkspaceForm.vue';
import AppLayout from '@/layouts/AppLayout.vue';
type Workspace = {
id: number;
name: string;
slug: string;
user_ids: number[];
user_roles: Record<number, string>;
};
type Props = {
workspace: Workspace;
indexUrl: string;
updateUrl: string;
users: Array<{ id: number; name: string; email: string }>;
workspaceUserRoles: Record<string, string>;
};
const props = defineProps<Props>();
const form = useForm<WorkspaceFormData>({
name: props.workspace.name,
slug: props.workspace.slug,
user_ids: props.workspace.user_ids ?? [],
user_roles: props.workspace.user_roles ?? {},
});
function submit() {
form.put(props.updateUrl);
}
</script>
<template>
<AppLayout
:breadcrumbs="[
{ title: 'Workspaces', href: props.indexUrl },
{ title: 'Edit workspace' },
]"
>
<Head :title="`Edit ${props.workspace.name}`" />
<div class="flex flex-col space-y-6 p-4">
<Heading
:title="`Edit ${props.workspace.name}`"
description="Update the workspace information"
/>
<WorkspaceForm
:form="form"
:users="props.users ?? []"
:workspace-user-roles="props.workspaceUserRoles ?? {}"
submit-label="Update workspace"
@submit="submit"
/>
</div>
</AppLayout>
</template>