Commit 7e3cf398 authored by Bertrand Gauthier's avatar Bertrand Gauthier
Browse files

UtilisateurController: utilisation du RoleFormatter ; amélioration du RoleFormatter.

parent 6973a6e4
Loading
Loading
Loading
Loading
+6 −3
Original line number Diff line number Diff line
@@ -7,8 +7,8 @@ use UnicaenApp\Mapper\Ldap\People as LdapPeopleMapper;
use UnicaenAuth\Entity\Db\AbstractUser;
use UnicaenAuth\Entity\Ldap\People;
use UnicaenAuth\Entity\Shibboleth\ShibUser;
use UnicaenAuth\Formatter\RoleFormatter;
use UnicaenAuth\Options\ModuleOptions;
use UnicaenAuth\Service\ShibService;
use UnicaenAuth\Service\Traits\ShibServiceAwareTrait;
use UnicaenAuth\Service\Traits\UserContextServiceAwareTrait;
use UnicaenAuth\Service\UserContext;
@@ -111,8 +111,11 @@ class UtilisateurController extends AbstractActionController
        }

        if ($addFlashMessage) {
            $selectedRole = $this->serviceUserContext->getSelectedIdentityRoleToString();
            $message = sprintf("Vous endossez à présent le profil utilisateur <strong>%s</strong>.", $selectedRole);
            $selectedRole = $this->serviceUserContext->getSelectedIdentityRole();
            $message = sprintf(
                "Vous endossez à présent le rôle utilisateur '<strong>%s</strong>'.",
                (new RoleFormatter())->format($selectedRole)
            );
            $this->flashMessenger()->setNamespace('UnicaenAuth/success')->addMessage($message);
        }

+39 −14
Original line number Diff line number Diff line
@@ -2,41 +2,66 @@

namespace UnicaenAuth\Formatter;

use Zend\Permissions\Rbac\RoleInterface;
use Zend\Permissions\Acl\Role\RoleInterface;

class RoleFormatter
{
    /**
     * Retourne le rôle utilisateur spécifié au format littéral.
     * Retourne le rôle spécifié au format littéral.
     *
     * @param $role
     * @param object|RoleInterface|string $role
     * @return string
     *
     * @see formatOne()
     */
    public function format($role)
    {
        return $this->roleToString($role);
        return $this->formatOne($role);
    }

    /**
     * Retourne le rôle utilisateur spécifié au format littéral.
     * Retourne le rôle spécifié au format littéral.
     *
     * @param object|RoleInterface|string $role
     * @return string
     */
    private function roleToString($role)
    public function formatOne($role)
    {
        $string = '?';
        $formattedRole = '?';

        if ($role instanceof RoleInterface) {
            $formattedRole = $role->getRoleId();
        }
        elseif (is_string($role)) {
            $formattedRole = (string) $role;
        }
        elseif (is_object($role) && method_exists($role, '__toString')) {
            $formattedRole = $role;
        }

        if (is_object($role) && method_exists($role, '__toString')) {
            $string = (string) $role;
        return $formattedRole;
    }
        elseif ($role instanceof RoleInterface) {
            $string = $role->getRoleId();

    /**
     * Retourne les rôles spécifiés au format littéral.
     *
     * @param object[]|RoleInterface[]|string[] $roles
     * @return string[]
     */
    public function formatMany(array $roles)
    {
        $formattedRoles = [];

        foreach ($roles as $key => $role) {
            if ($role instanceof RoleInterface) {
                $key = $role->getRoleId();
            }
            elseif (is_string($role)) {
            $string = $role;
                $key = $role;
            }
            $formattedRoles[$key] = $this->formatOne($role);
        }

        return $string;
        return $formattedRoles;
    }
}
 No newline at end of file