refactor(client-portal) : remove client portal feature entirely
Pull Request — Quality gate / Backend (PHP CS + PHPUnit) (pull_request) Successful in 1m11s
Pull Request — Quality gate / Frontend (build) (pull_request) Successful in 1m17s

- drop ClientPortal module, ClientTicket entity, ROLE_CLIENT and all couplings (Task, TaskDocument, User, Notification) back to an internal-only model

- migration drops client_ticket / user_allowed_projects / related FK columns and removes leftover external client accounts (would otherwise be promoted to ROLE_USER)

- remove client-portal frontend module, admin tickets tab, user portal section, portal nav item and portal/clientTicket i18n keys

- fix directory nav icon (invalid mdi:contact-multiple-outline -> mdi:card-account-details-outline)

- add 'make sync-permissions' target, wire it into install/db-reset and the prod deploy script
This commit is contained in:
Matthieu
2026-06-22 09:49:44 +02:00
parent 8a5b115ccd
commit a18e1f575f
55 changed files with 170 additions and 2599 deletions
+1 -2
View File
@@ -1,4 +1,4 @@
export type NotificationType = 'ticket_created' | 'ticket_status_changed'
export type NotificationType = 'task_assigned' | 'task_collaborator_added'
export type Notification = {
'@id'?: string
@@ -7,7 +7,6 @@ export type Notification = {
type: NotificationType
title: string
message: string
relatedTicket: string | null
isRead: boolean
createdAt: string
}
-16
View File
@@ -1,15 +1,5 @@
export type ContractType = 'CDI' | 'CDD' | 'STAGE' | 'ALTERNANCE' | 'AUTRE'
/**
* Project as embedded in the `me:read` serialization group (id + name).
* On `/me`, `allowedProjects` is returned as embedded objects, not bare IRIs.
*/
export type AllowedProject = {
'@id'?: string
id: number
name: string
}
export type UserData = {
id: number
'@id'?: string
@@ -20,9 +10,6 @@ export type UserData = {
effectivePermissions?: string[]
avatarUrl?: string | null
apiToken?: string | null
// Client portal
client?: string | null // IRI of the linked Client (null = internal user)
allowedProjects?: AllowedProject[] // Projects a client user can access (embedded id + name)
// HR / absence management
isEmployee?: boolean
hireDate?: string | null
@@ -40,9 +27,6 @@ export type UserWrite = {
lastName?: string | null
plainPassword?: string
roles: string[]
// Client portal
client?: string | null
allowedProjects?: string[]
// HR / absence management
isEmployee?: boolean
hireDate?: string | null