Commit 75d14ed2 authored by Laurent Lecluse's avatar Laurent Lecluse
Browse files

Merge remote-tracking branch 'origin/master' into php84

parents 20d8b259 7abe965c
Loading
Loading
Loading
Loading
Loading
+65 −61
Original line number Diff line number Diff line
@@ -17,63 +17,6 @@ class ShibUser implements UserInterface
    protected ?string $civilite = null;
    protected int $state = 1;

    /**
     * Teste si une chaîne ressemble à un EPPN.
     */
    static public function isEppn(string $string): bool
    {
        if (($pos = strpos($string, '@')) === false) {
            return false;
        }

        $domain = substr($string, $pos + 1);
        if (filter_var($domain, FILTER_VALIDATE_DOMAIN, FILTER_FLAG_HOSTNAME) === false) {
            return false;
        }

        return true;
    }

    /**
     * Extrait le domaine de l'EPPN spécifié.
     */
    static public function extractDomainFromEppn(string $eppn): string
    {
        Assert::true(static::isEppn($eppn), "La chaîne suivante n'est pas un EPPN valide : " . $eppn);

        $parts = explode('@', $eppn);

        return $parts[1];
    }

    /**
     * Retourne la partie domaine DNS de l'EPPN.
     * Retourne par exemple "unicaen.fr" lorsque l'EPPN est "tartempion@unicaen.fr"
     */
    public function getEppnDomain(): string
    {
        return static::extractDomainFromEppn($this->getEppn());
    }

    /**
     * Retourne l'eduPersonPrincipalName (EPPN), ex: 'gauthierb@unicaen.fr'
     */
    public function getEppn(): string
    {
        return $this->getUsername();
    }

    /**
     * Spécifie l'eduPersonPrincipalName (EPPN).
     *
     * @param string $eppn eduPersonPrincipalName (EPPN), ex: 'gauthierb@unicaen.fr'
     */
    public function setEppn(string $eppn): void
    {
        Assert::true(static::isEppn($eppn), "La chaîne suivante n'est pas un EPPN valide : " . $eppn);

        $this->setUsername($eppn);
    }

    /**
     * Retourne l'identifiant unique de cet utilisateur.
@@ -123,22 +66,22 @@ class ShibUser implements UserInterface
        $this->displayName = $displayName;
    }

    public function getNom(): string
    public function getNom(): ?string
    {
        return $this->nom;
    }

    public function setNom(string $nom): void
    public function setNom(?string $nom): void
    {
        $this->nom = $nom;
    }

    public function getPrenom(): string
    public function getPrenom(): ?string
    {
        return $this->prenom;
    }

    public function setPrenom(string $prenom): void
    public function setPrenom(?string $prenom): void
    {
        $this->prenom = $prenom;
    }
@@ -176,6 +119,67 @@ class ShibUser implements UserInterface
        $this->state = $state;
    }

    /**  */

    /**
     * Teste si une chaîne ressemble à un EPPN.
     */
    static public function isEppn(string $string): bool
    {
        if (($pos = strpos($string, '@')) === false) {
            return false;
        }

        $domain = substr($string, $pos + 1);
        if (filter_var($domain, FILTER_VALIDATE_DOMAIN, FILTER_FLAG_HOSTNAME) === false) {
            return false;
        }

        return true;
    }

    /**
     * Extrait le domaine de l'EPPN spécifié.
     */
    static public function extractDomainFromEppn(string $eppn): string
    {
        Assert::true(static::isEppn($eppn), "La chaîne suivante n'est pas un EPPN valide : " . $eppn);

        $parts = explode('@', $eppn);

        return $parts[1];
    }

    /**
     * Retourne la partie domaine DNS de l'EPPN.
     * Retourne par exemple "unicaen.fr" lorsque l'EPPN est "tartempion@unicaen.fr"
     */
    public function getEppnDomain(): string
    {
        return static::extractDomainFromEppn($this->getEppn());
    }

    /**
     * Retourne l'eduPersonPrincipalName (EPPN), ex: 'gauthierb@unicaen.fr'
     */
    public function getEppn(): string
    {
        return $this->getUsername();
    }

    /**
     * Spécifie l'eduPersonPrincipalName (EPPN).
     *
     * @param string $eppn eduPersonPrincipalName (EPPN), ex: 'gauthierb@unicaen.fr'
     */
    public function setEppn(string $eppn): void
    {
        Assert::true(static::isEppn($eppn), "La chaîne suivante n'est pas un EPPN valide : " . $eppn);

        $this->setUsername($eppn);
    }


    public function __toString(): string
    {
        return $this->getDisplayName();