Commit 9004ddea authored by David Surville's avatar David Surville
Browse files

Déplacement du périmètre associé à un utilisateur et un rôle dans une entité...

Déplacement du périmètre associé à un utilisateur et un rôle dans une entité spécifique "UserRolePerimetre" au lieu de "UserRole" :
- un rôle n'est défini qu'une seule fois pour un utilisateur dans l'entité "UserRole"
- possibilité de définir plusieurs périmètres pour un même rôle
parent e533dd43
Loading
Loading
Loading
Loading
+1 −2
Changes for src/UnicaenUtilisateur/Entity/Db/AbstractRole.php: 1 added line, 2 removed lines.
Original line number Diff line number Diff line
@@ -2,7 +2,6 @@

namespace UnicaenUtilisateur\Entity\Db;

use Application\Entity\Db\UtilisateurRolePerimetre;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use UnicaenPrivilege\Entity\Db\PerimetreCategorieInterface;
@@ -275,7 +274,7 @@ abstract class AbstractRole implements RoleInterface
    public function getUsers()
    {
        return $this->users->map(function ($item) {
            /** @var UtilisateurRolePerimetre $item */
            /** @var UserRoleInterface $item */
            return $item->getUser();
        });
    }
+2 −4
Changes for src/UnicaenUtilisateur/Entity/Db/AbstractUser.php: 2 added lines, 4 removed lines.
Original line number Diff line number Diff line
@@ -2,8 +2,6 @@

namespace UnicaenUtilisateur\Entity\Db;

use Application\Entity\Db\UtilisateurRoleLinker;
use Application\Entity\Db\UtilisateurRolePerimetre;
use BjyAuthorize\Provider\Role\ProviderInterface;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
@@ -276,7 +274,7 @@ abstract class AbstractUser implements UserInterface, ProviderInterface, Recherc
    public function getRoles()
    {
        return $this->roles->map(function ($item) {
            /** @var UtilisateurRoleLinker $item */
            /** @var UserRoleInterface $item */
            return $item->getRole();
        });
    }
@@ -290,7 +288,7 @@ abstract class AbstractUser implements UserInterface, ProviderInterface, Recherc
    function hasRole(RoleInterface $role)
    {
        $roles = $this->roles->map(function ($item) {
            /** @var UtilisateurRolePerimetre $item */
            /** @var UserRoleInterface $item */
            return $item->getRole();
        });

+23 −28
Changes for src/UnicaenUtilisateur/Entity/Db/AbstractUserRole.php: 23 added lines, 28 removed lines.
Original line number Diff line number Diff line
@@ -2,6 +2,8 @@

namespace UnicaenUtilisateur\Entity\Db;

use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use UnicaenPrivilege\Entity\Db\PerimetreCategorieInterface;
use UnicaenPrivilege\Entity\Db\PerimetreInterface;

@@ -23,15 +25,18 @@ abstract class AbstractUserRole implements UserRoleInterface
    protected $role;

    /**
     * @var PerimetreCategorieInterface
     * @var Collection
     */
    protected $perimetreCategorie;
    protected $perimetres;


    /**
     * @var PerimetreInterface
     * Constructor
     */
    protected $perimetre;

    public function __construct()
    {
        $this->perimetres = new ArrayCollection();
    }

    /**
     * Get id.
@@ -90,48 +95,38 @@ abstract class AbstractUserRole implements UserRoleInterface
    }

    /**
     * Set perimetreCategorie.
     * Add role.
     *
     * @param PerimetreCategorieInterface|null $perimetreCategorie
     * @param UserRolePerimetreInterface $perimetre
     * @return UserRoleInterface
     */
    public function setPerimetreCategorie(PerimetreCategorieInterface $perimetreCategorie = null)
    public function addPerimetre(UserRolePerimetreInterface $perimetre)
    {
        $this->perimetreCategorie = $perimetreCategorie;
        $this->perimetres->add($perimetre);
        $perimetre->setUserRole($this);

        return $this;
    }

    /**
     * Get perimetreCategorie.
     * Remove role.
     *
     * @return PerimetreCategorieInterface|null
     */
    public function getPerimetreCategorie()
    {
        return $this->perimetreCategorie;
    }

    /**
     * Set perimetre.
     *
     * @param PerimetreInterface|null $perimetre
     * @param UserRolePerimetreInterface $perimetre
     * @return UserRoleInterface
     */
    public function setPerimetre(PerimetreInterface $perimetre = null)
    public function removePerimetre(UserRolePerimetreInterface $perimetre)
    {
        $this->perimetre = $perimetre;
        $this->perimetres->removeElement($role);
        $perimetre->setUserRole(null);

        return $this;
    }

    /**
     * Get perimetre.
     *
     * @return PerimetreInterface|null
     * @return Collection
     */
    public function getPerimetre()
    public function getPerimetres()
    {
        return $this->perimetre;
        return $this->perimetres;
    }
}
+111 −0
Changes for src/UnicaenUtilisateur/Entity/Db/AbstractUserRolePerimetre.php: 111 added lines, 0 removed lines.
Original line number Diff line number Diff line
<?php

namespace UnicaenUtilisateur\Entity\Db;

use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use UnicaenPrivilege\Entity\Db\PerimetreCategorieInterface;
use UnicaenPrivilege\Entity\Db\PerimetreInterface;

abstract class AbstractUserRolePerimetre implements UserRolePerimetreInterface
{
    /**
     * @var int
     */
    protected $id;

    /**
     * @var UserRoleInterface
     */
    protected $userRole;

    /**
     * @var PerimetreCategorieInterface
     */
    protected $perimetreCategorie;

    /**
     * @var PerimetreInterface
     */
    protected $perimetre;


    /**
     * Get id.
     *
     * @return int
     */
    public function getId()
    {
        return $this->id;
    }

    /**
     * Set userRole.
     *
     * @param UserRoleInterface $userRole
     * @return UserRolePerimetreInterface
     */
    public function setUserRole(UserRoleInterface $userRole)
    {
        $this->user = $userRole;

        return $this;
    }

    /**
     * Get userRole.
     *
     * @return UserRoleInterface
     */
    public function getUserRole()
    {
        return $this->userRole;
    }

    /**
     * Set perimetreCategorie.
     *
     * @param PerimetreCategorieInterface $perimetreCategorie
     * @return UserRolePerimetreInterface
     */
    public function setPerimetreCategorie(PerimetreCategorieInterface $perimetreCategorie)
    {
        $this->perimetreCategorie = $perimetreCategorie;

        return $this;
    }

    /**
     * Get perimetreCategorie.
     *
     * @return PerimetreCategorieInterface
     */
    public function getPerimetreCategorie()
    {
        return $this->perimetreCategorie;
    }

    /**
     * Set perimetre.
     *
     * @param PerimetreInterface $perimetre
     * @return UserRolePerimetreInterface
     */
    public function setPerimetre(PerimetreInterface $perimetre)
    {
        $this->perimetre = $perimetre;

        return $this;
    }

    /**
     * Get perimetre.
     *
     * @return PerimetreInterface
     */
    public function getPerimetre()
    {
        return $this->perimetre;
    }
}
+8 −12
Changes for src/UnicaenUtilisateur/Entity/Db/Mapping/UnicaenUtilisateur.Entity.Db.UserRole.dcm.xml: 8 added lines, 12 removed lines.
Original line number Diff line number Diff line
@@ -7,11 +7,10 @@
        <indexes>
            <index name="ix_unicaen_utilisateur_role_linker_utilisateur" columns="UTILISATEUR_ID"/>
            <index name="ix_unicaen_utilisateur_role_linker_role" columns="ROLE_ID"/>
            <index name="ix_unicaen_utilisateur_role_linker_perimetre" columns="PERIMETRE_ID"/>
        </indexes>

        <unique-constraints>
            <unique-constraint name="un_unicaen_utilisateur_role_linker" columns="UTILISATEUR_ID,ROLE_ID,PERIMETRE_ID"/>
            <unique-constraint name="un_unicaen_utilisateur_role_linker" columns="UTILISATEUR_ID,ROLE_ID"/>
        </unique-constraints>

        <id name="id" type="integer" column="ID">
@@ -28,16 +27,13 @@
                <join-column name="ROLE_ID" referenced-column-name="ID"/>
            </join-columns>
        </many-to-one>
        <many-to-one field="perimetreCategorie" target-entity="UnicaenPrivilege\Entity\Db\PerimetreCategorie">
            <join-columns>
                <join-column name="PERIMETRE_CATEGORIE_ID" referenced-column-name="ID"/>
            </join-columns>
        </many-to-one>
        <many-to-one field="perimetre" target-entity="UnicaenPrivilege\Entity\Db\Perimetre">
            <join-columns>
                <join-column name="PERIMETRE_ID" referenced-column-name="ID"/>
            </join-columns>
        </many-to-one>

        <one-to-many field="perimetres" target-entity="UnicaenUtilisateur\Entity\Db\UserRolePerimetre" mapped-by="userRole">
            <cascade>
                <cascade-persist/>
                <cascade-remove/>
            </cascade>
        </one-to-many>

    </entity>
</doctrine-mapping>
Loading