Skip to content

Instantly share code, notes, and snippets.

@markblackmore
Created May 12, 2015 14:20
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save markblackmore/eb225582e0fce7b2f556 to your computer and use it in GitHub Desktop.
Save markblackmore/eb225582e0fce7b2f556 to your computer and use it in GitHub Desktop.
Interactive Login Listener
<?php
namespace AgentWeb\EducationBundle\EventListener;
use eZ\Publish\API\Repository\UserService;
use eZ\Publish\Core\MVC\Symfony\Event\InteractiveLoginEvent;
use eZ\Publish\Core\MVC\Symfony\MVCEvents;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use AgentWeb\EducationBundle\Entity\Teacher;
class InteractiveLoginListener implements EventSubscriberInterface
{
/**
* @var \eZ\Publish\API\Repository\UserService
*/
private $userService;
/**
* @var \Closure
*/
private $legacyKernel;
public function __construct( UserService $userService, \Closure $legacyKernel )
{
$this->userService = $userService;
$this->legacyKernel = $legacyKernel;
}
public static function getSubscribedEvents()
{
return array(
MVCEvents::INTERACTIVE_LOGIN => 'onInteractiveLogin'
);
}
public function onInteractiveLogin( InteractiveLoginEvent $event )
{
$token = $event->getAuthenticationToken();
$originalUser = $token->getUser();
if ( $originalUser instanceof Teacher )
{
$genericUser = $this->userService->loadUserByLogin( 'testuser1' );
$event->setApiUser( $genericUser );
$userId = $genericUser->getFieldValue('user_account')->contentId;
/* Set legacy user */
$legacyKernel = $this->legacyKernel;
$legacyKernel()->runCallback(
function () use ( $userId ) {
\eZUser::setCurrentlyLoggedInUser( \eZUser::fetch( $userId ), $userId );
}
);
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment