refactor(sites) : decouple module Sites via SiteInterface + leaks groupes user:list
- Introduit Shared/Domain/Contract/SiteInterface que Site implemente - SiteAwareInterface + User.php typent contre SiteInterface (plus d'import direct Core -> Sites, respect regle CLAUDE.md 138) - Exception SiteNotAuthorizedException deplacee dans Shared/, alias retrocompat dans le module - Retire `sites` et `currentSite` des groupes `user:list` et `user:rbac:write` (info leak via /api/users, escalade core.users.manage -> sites.manage) - User::$sites et User::$currentSite en fetch LAZY (N+1 sur /api/users paginee)
This commit is contained in:
@@ -4,24 +4,15 @@ declare(strict_types=1);
|
||||
|
||||
namespace App\Module\Sites\Domain\Exception;
|
||||
|
||||
use App\Module\Sites\Domain\Entity\Site;
|
||||
use DomainException;
|
||||
use App\Shared\Domain\Exception\SiteNotAuthorizedException as SharedSiteNotAuthorizedException;
|
||||
|
||||
/**
|
||||
* Levee lorsqu'un utilisateur tente de selectionner comme site courant un
|
||||
* site qui ne fait pas partie de ses sites autorises.
|
||||
* Alias de retrocompatibilite vers Shared\Domain\Exception\SiteNotAuthorizedException.
|
||||
*
|
||||
* Exception purement domaine : la traduction HTTP (403) est faite par le
|
||||
* CurrentSiteProcessor via try/catch, aligne sur le pattern
|
||||
* SystemRoleDeletionException du module Core.
|
||||
* La classe canonique a ete deplacee dans Shared pour rompre le couplage
|
||||
* Core → Sites. Les consommateurs existants dans le module Sites
|
||||
* (CurrentSiteProcessor) continuent de l'attraper ici sans modification.
|
||||
*
|
||||
* @see SharedSiteNotAuthorizedException
|
||||
*/
|
||||
final class SiteNotAuthorizedException extends DomainException
|
||||
{
|
||||
public static function forSite(Site $site): self
|
||||
{
|
||||
return new self(sprintf(
|
||||
'Le site "%s" ne fait pas partie de vos sites autorises.',
|
||||
$site->getName(),
|
||||
));
|
||||
}
|
||||
}
|
||||
final class SiteNotAuthorizedException extends SharedSiteNotAuthorizedException {}
|
||||
|
||||
Reference in New Issue
Block a user