galmi/xacmlBundle

View on GitHub
EventListener/SubjectRequestListener.php

Summary

Maintainability
A
0 mins
Test Coverage
<?php

namespace Galmi\XacmlBundle\EventListener;


use Galmi\Xacml\Request as XacmlRequest;
use Symfony\Component\HttpKernel\Event\GetResponseEvent;
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorage;

class SubjectRequestListener
{

    /** @var string */
    private $category = 'Subject';

    /** @var XacmlRequest */
    private $xacmlRequest;

    /** @var TokenStorage */
    private $tokenStorage;

    /**
     * SubjectRequestListener constructor.
     * @param XacmlRequest $xacmlRequest
     * @param TokenStorage $tokenStorage
     */
    public function __construct(XacmlRequest $xacmlRequest, TokenStorage $tokenStorage)
    {
        $this->xacmlRequest = $xacmlRequest;
        $this->tokenStorage = $tokenStorage;
    }

    /**
     * Add user info for request
     *
     * @param GetResponseEvent $request
     */
    public function onKernelRequest(GetResponseEvent $request)
    {
        $token = $this->tokenStorage->getToken();
        $user = null;
        if (!is_null($token)) {
            $user = $token->getUser();
        }
        $this->xacmlRequest->set($this->category, $user);
    }
}