refactor(client-portal) : remove client portal feature entirely
- 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:
@@ -9,9 +9,6 @@ use App\Module\Absence\Domain\Entity\AbsencePolicy;
|
||||
use App\Module\Absence\Domain\Entity\AbsenceRequest;
|
||||
use App\Module\Absence\Domain\Enum\AbsenceStatus;
|
||||
use App\Module\Absence\Domain\Enum\AbsenceType;
|
||||
use App\Module\ClientPortal\Domain\Entity\ClientTicket;
|
||||
use App\Module\ClientPortal\Domain\Enum\ClientTicketStatus;
|
||||
use App\Module\ClientPortal\Domain\Enum\ClientTicketType;
|
||||
use App\Module\Core\Application\Rbac\RbacSeeder;
|
||||
use App\Module\Core\Domain\Entity\User;
|
||||
use App\Module\Core\Domain\Enum\ContractType;
|
||||
@@ -218,53 +215,6 @@ class AppFixtures extends Fixture
|
||||
$projectInterne->setWorkflow($standardWorkflow);
|
||||
$manager->persist($projectInterne);
|
||||
|
||||
// Client portal users (ROLE_CLIENT) — linked to a client + allowed projects.
|
||||
$clientUserLiot = new User();
|
||||
$clientUserLiot->setUsername('client-liot');
|
||||
$clientUserLiot->setFirstName('Camille');
|
||||
$clientUserLiot->setLastName('LIOT');
|
||||
$clientUserLiot->setRoles(['ROLE_CLIENT']);
|
||||
$clientUserLiot->setPassword($this->passwordHasher->hashPassword($clientUserLiot, 'client-liot'));
|
||||
$clientUserLiot->setClient($clientLiot);
|
||||
$clientUserLiot->addAllowedProject($projectSirh);
|
||||
$manager->persist($clientUserLiot);
|
||||
|
||||
$clientUserAcme = new User();
|
||||
$clientUserAcme->setUsername('client-acme');
|
||||
$clientUserAcme->setFirstName('Sophie');
|
||||
$clientUserAcme->setLastName('ACME');
|
||||
$clientUserAcme->setRoles(['ROLE_CLIENT']);
|
||||
$clientUserAcme->setPassword($this->passwordHasher->hashPassword($clientUserAcme, 'client-acme'));
|
||||
$clientUserAcme->setClient($clientAcme);
|
||||
$clientUserAcme->addAllowedProject($projectCrm);
|
||||
$manager->persist($clientUserAcme);
|
||||
|
||||
// Demo client tickets.
|
||||
$ticketLiot = new ClientTicket();
|
||||
$ticketLiot->setNumber(1);
|
||||
$ticketLiot->setType(ClientTicketType::Bug);
|
||||
$ticketLiot->setTitle('Erreur lors de l\'export des congés');
|
||||
$ticketLiot->setDescription('L\'export PDF des congés échoue avec une erreur 500.');
|
||||
$ticketLiot->setUrl('https://app.example.com/sirh/conges');
|
||||
$ticketLiot->setStatus(ClientTicketStatus::New);
|
||||
$ticketLiot->setProject($projectSirh);
|
||||
$ticketLiot->setSubmittedBy($clientUserLiot);
|
||||
$ticketLiot->setCreatedAt(new DateTimeImmutable());
|
||||
$ticketLiot->setUpdatedAt(new DateTimeImmutable());
|
||||
$manager->persist($ticketLiot);
|
||||
|
||||
$ticketAcme = new ClientTicket();
|
||||
$ticketAcme->setNumber(1);
|
||||
$ticketAcme->setType(ClientTicketType::Improvement);
|
||||
$ticketAcme->setTitle('Ajouter un filtre par commercial');
|
||||
$ticketAcme->setDescription('Pouvoir filtrer la liste des opportunités par commercial assigné.');
|
||||
$ticketAcme->setStatus(ClientTicketStatus::InProgress);
|
||||
$ticketAcme->setProject($projectCrm);
|
||||
$ticketAcme->setSubmittedBy($clientUserAcme);
|
||||
$ticketAcme->setCreatedAt(new DateTimeImmutable());
|
||||
$ticketAcme->setUpdatedAt(new DateTimeImmutable());
|
||||
$manager->persist($ticketAcme);
|
||||
|
||||
// Task Efforts
|
||||
$effortS = new TaskEffort();
|
||||
$effortS->setLabel('S');
|
||||
|
||||
Reference in New Issue
Block a user