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:
@@ -6,7 +6,9 @@ namespace App\Tests\Fixtures\SiteAware;
|
||||
|
||||
use App\Module\Sites\Domain\Entity\Site;
|
||||
use App\Shared\Domain\Contract\SiteAwareInterface;
|
||||
use App\Shared\Domain\Contract\SiteInterface;
|
||||
use Doctrine\ORM\Mapping as ORM;
|
||||
use InvalidArgumentException;
|
||||
|
||||
/**
|
||||
* Entite fictive utilisee UNIQUEMENT en tests (ticket 4 module Sites).
|
||||
@@ -57,13 +59,16 @@ class FakeSiteAwareEntity implements SiteAwareInterface
|
||||
$this->name = $name;
|
||||
}
|
||||
|
||||
public function getSite(): ?Site
|
||||
public function getSite(): ?SiteInterface
|
||||
{
|
||||
return $this->site;
|
||||
}
|
||||
|
||||
public function setSite(Site $site): void
|
||||
public function setSite(SiteInterface $site): void
|
||||
{
|
||||
if (!$site instanceof Site) {
|
||||
throw new InvalidArgumentException('FakeSiteAwareEntity requires a concrete Site (Doctrine ManyToOne target).');
|
||||
}
|
||||
$this->site = $site;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user