Commit cb65d892 authored by Stephane Bouvry's avatar Stephane Bouvry
Browse files

Méthode avancée pour obtenir la liste des personnes ayant un privilège actif...

Méthode avancée pour obtenir la liste des personnes ayant un privilège actif sur une activité en profondeur (teste également les groupes LDAP et les personnes liées à des autentifications avec des rôles attribuées en dur. Test des notifications sur la soumission des déclarations.
parent bccea80c
Loading
Loading
Loading
Loading
+1 −1
Changes for module/Oscar/config/module.config.php: 1 added line, 1 removed line.
Original line number Diff line number Diff line
@@ -38,7 +38,7 @@ return array(
                ],

                [ 'controller' =>  'Notification',
                    'action' => ['indexPerson', 'index'],
                    'action' => ['indexPerson', 'index', 'test'],
                    'roles' => ['user'],
                ],

+7 −0
Changes for module/Oscar/config/routes.yml: 7 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -34,6 +34,13 @@ notification:

    child_routes:
        # Déclarations d'une personne pour une activité
        test:
            type: segment
            options:
                route: /test
                defaults:
                    action: test
        # Déclarations d'une personne pour une activité
        person:
            type: segment
            options:
+18 −6
Changes for module/Oscar/src/Oscar/Controller/NotificationController.php: 18 added lines, 6 removed lines.
Original line number Diff line number Diff line
@@ -7,7 +7,16 @@

namespace Oscar\Controller;

use Doctrine\ORM\NoResultException;
use Oscar\Entity\Activity;
use Oscar\Entity\Authentification;
use Oscar\Entity\Organization;
use Oscar\Entity\OrganizationPerson;
use Oscar\Entity\Person;
use Oscar\Entity\Privilege;
use Oscar\Exception\OscarException;
use Oscar\Form\NotificationForm;
use Oscar\Provider\Privileges;
use Oscar\Service\NotificationService;
use Zend\View\Model\JsonModel;

@@ -19,15 +28,18 @@ class NotificationController extends AbstractOscarController
{
    public function testAction()
    {
        $personsId = [13059, 13060];
        $idActivity = 10090;

        /** @var NotificationService $notificationService */
        $notificationService = $this->getServiceLocator()->get('NotificationService');
        /** @var Activity $activity */
        $activity = $this->getEntityManager()->getRepository(Activity::class)->find($idActivity);
        echo "<h1>$activity</h1>\n";

        $persons = $this->getPersonService()->getAllPersonsWithPrivilegeInActivity(Privileges::ACTIVITY_TIMESHEET_VALIDATE_SCI, $activity);
        foreach( $persons as $id=>$p ){
            echo sprintf('%s - [%s] %s <br>', $id, $p->getId(), $p);
        }

        $notificationService->notification("Test de notification", $personsId);

        die('Fini');
        die('Test');
    }
    public function indexAction()
    {
+10 −0
Changes for module/Oscar/src/Oscar/Entity/Authentification.php: 10 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -325,6 +325,16 @@ class Authentification implements UserInterface, ProviderInterface
        return $this;
    }

    ////////////////////////////////////////////////////////////////////////////
    public function hasRolesIds( array $rolesIds ){
        foreach ($this->getRoles() as $role ){
            if( in_array($role->getRoleId(), $rolesIds) ){
                return true;
            }
        }
        return false;
    }




+1 −0
Changes for module/Oscar/src/Oscar/Entity/Privilege.php: 1 added line, 0 removed lines.
Original line number Diff line number Diff line
@@ -11,6 +11,7 @@ use Doctrine\ORM\Mapping as ORM;
 *
 * @ORM\Entity
 * @ORM\Table(name="privilege")
 * @ORM\Entity(repositoryClass="Oscar\Entity\PrivilegeRepository")
 */
class Privilege implements ResourceInterface
{
Loading