Skip to content
Snippets Groups Projects
Select Git revision
  • f5fdd5dbe70c67b22e861015f205655226a25c56
  • master default protected
  • b24
  • ll-workflow
  • alc-scindage-donnees-pj
  • FJ_LL_Tbl_Contrat
  • alc-docker-node
  • ll-apiplatform
  • php84
  • ll-rgpd
  • b23
  • alc-filtre-type-intervenant
  • ll-sans-mdb5
  • formules-ancienne-infra
  • ll-formules
  • alc-intervenant-dmep
  • ll-suppr-v_vol-s
  • b20
  • ll-postgresql
  • b23.0.1
  • b22
  • 24.8
  • 24.7
  • 24.6
  • 24.5
  • 24.4
  • 24.3
  • 24.2
  • 24.1
  • 24.0
  • 23.15
  • 24.0-beta19
  • 24.0-beta18
  • 24.0-beta17
  • 24.0-beta16
  • 24.0-beta15
  • 24.0-beta14
  • 24.0-beta13
  • 23.14
  • 24.0-beta12
  • 24.0-beta11
41 results

bdd-make-update-diff.php

Blame
  • Code owners
    Assign users and groups as approvers for specific file changes. Learn more.
    Generic.php 4.14 KiB
    <?php
    
    namespace UnicaenLdap\Entity\Base;
    
    use UnicaenLdap\Entity\Entity;
    use UnicaenLdap\Exception;
    use Zend\Ldap\Attribute;
    use Zend\Ldap\Exception\LdapException;
    
    /**
     * Classe mère des entités de la branche "generic" de l'annuaire LDAP.
     *
     * @author David Surville <david.surville@unicaen.fr>
     */
    class Generic extends Entity
    {
        /**
         * @var string
         */
        protected $type = 'Generic';
    
        /**
         * Liste des classes d'objet nécessaires à la création d'une adresse générique
         *
         * @var array
         */
        protected $objectClass = [
            'top',
            'inetOrgPerson',
            'organizationalPerson',
            'person',
        ];
    
        /**
         * Liste des attributs autorisés pour une entité "Generic"
         *
         * @var array
         */
        protected $authorizedAttributes = [
            // Attributes classes
            'objectClass',
            // Attributes
            'cn',
            'description',
            'mail',
            'sn',
            'supannAliasLogin',
            'ucbnServiceIMAP',
            'userPassword',
        ];
    
    
        /**
         * Liste des attributs contenant des dates
         *
         * @var string[]
         */
        protected $dateTimeAttributes = [
        ];
    
        /**
         * Liste des attributs monovalués
         *
         * @var array
         */
        protected $monoValuedAttributes = [
            'supannALiasLogin',
            'ucbnServiceIMAP',
            'userPassword',
        ];
    
    
        /**
         * Attribut Ldap "cn"
         *
         * @param array|string|null $value
         * @param bool $append
         * @return self
         */
        public function setCn($value = null, $append = false)
        {
            $value = $this->preFormat($value);
            $this->appendOrNot('cn', $value, $append);
    
            return $this;
        }
    
        /**
         * Attribut Ldap "description"
         *
         * @param array|string|null $value
         * @param bool $append
         * @return self
         */
        public function setDescription($value = null, $append = false)
        {
            $value = $this->preFormat($value);
            $this->appendOrNot('description', $value, $append);
    
            return $this;
        }
    
        /**
         * Attribut Ldap "mail"
         *
         * @param array|string|null $value
         * @param bool $append
         * @return self
         * @throws Exception
         * @throws LdapException
         */
        public function setMail($value = null, $append = false)
        {
            $value = $this->preFormat($value);
            $value = array_filter(filter_var_array($value, FILTER_VALIDATE_EMAIL));
            $this->appendOrNot('mail', $value, $append);
    
            return $this;
        }
    
        /**
         * Attribut Ldap "sn"
         *
         * @param array|string|null $value
         * @param bool $append
         * @return self
         */
        public function setSn($value = null, $append = false)
        {
            $value = $this->preFormat($value);
            $this->appendOrNot('sn', $value, $append);
    
            return $this;
        }
    
        /**
         * Attribut Ldap "supannALiasLogin"
         *
         * @param array|string|null $value
         * @param bool $append
         * @return self
         * @throws Exception
         * @throws LdapException
         */
        public function setSupannAliasLogin($value = null, $append = false)
        {
            $value = $this->preFormat($value);
            $value = array_map('strtolower', $value);
            $value = array_filter($value, function ($v) {
                return preg_match('/^[0-9a-z\-]+$/', $v);
            });
    
            $this->appendOrNot('supannAliasLogin', $value, $append);
    
            return $this;
        }
    
        /**
         * Attribut Ldap "ucbnServiceIMAP"
         *
         * @param array|string|null $value
         * @param bool $append
         * @return self
         * @throws Exception
         * @throws LdapException
         */
        public function setUcbnServiceIMAP($value = null, $append = false)
        {
            $value = $this->preFormat($value);
            $value = array_map([$this, 'formatBoolean'], $value);
            $this->appendOrNot('ucbnServiceIMAP', $value, $append);
    
            return $this;
        }
    
        /**
         * Attribut Ldap "userPassword"
         *
         * @param string $value
         * @return self
         * @throws LdapException
         */
        public function setUserPassword(string $value)
        {
            $this->getNode()->setPasswordAttribute($value, Attribute::PASSWORD_HASH_SHA, 'userPassword');
    
            return $this;
        }
    }