<?php

declare(strict_types=1);

namespace App\Shared\Domain\Contract;

/**
 * Expose, sans coupler a la classe concrete User (module Core), le moyen de
 * savoir si un utilisateur porte un role METIER donne (par son code, cf.
 * App\Shared\Domain\Security\BusinessRoles).
 *
 * Implementee par App\Module\Core\Domain\Entity\User. Permet a un module tiers
 * de raisonner sur les roles metier via Security::getUser() sans importer User
 * (regle ABSOLUE n°1 : pas d'import inter-modules).
 *
 * Distinct de UserInterface::getRoles() (roles SYSTEME Symfony ROLE_*, derives
 * de is_admin) : ici on parle des roles RBAC metier rattaches a l'utilisateur.
 */
interface BusinessRoleAwareInterface
{
    /**
     * Vrai si l'utilisateur porte le role RBAC metier identifie par $roleCode
     * (compare au champ Role::code).
     */
    public function hasBusinessRole(string $roleCode): bool;
}
