Integrated FOSUserBundle (#216)
This commit is contained in:
@@ -12,6 +12,7 @@ namespace App\EventSubscriber;
|
||||
use App\Event\ConfigureAdminMenuEvent;
|
||||
use App\Event\ConfigureMainMenuEvent;
|
||||
use KevinPapst\AdminLTEBundle\Event\SidebarMenuEvent;
|
||||
use KevinPapst\AdminLTEBundle\Event\ThemeEvents;
|
||||
use KevinPapst\AdminLTEBundle\Model\MenuItemModel;
|
||||
use Symfony\Component\EventDispatcher\EventDispatcherInterface;
|
||||
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
|
||||
@@ -48,7 +49,7 @@ class MenuBuilderSubscriber implements EventSubscriberInterface
|
||||
public static function getSubscribedEvents(): array
|
||||
{
|
||||
return [
|
||||
'theme.sidebar_setup_menu' => ['onSetupNavbar', 100],
|
||||
ThemeEvents::THEME_SIDEBAR_SETUP_MENU => ['onSetupNavbar', 100],
|
||||
];
|
||||
}
|
||||
|
||||
@@ -89,7 +90,7 @@ class MenuBuilderSubscriber implements EventSubscriberInterface
|
||||
}
|
||||
|
||||
$event->addItem(
|
||||
new MenuItemModel('logout', 'menu.logout', 'security_logout', [], 'fas fa-sign-out-alt')
|
||||
new MenuItemModel('logout', 'menu.logout', 'fos_user_security_logout', [], 'fas fa-sign-out-alt')
|
||||
);
|
||||
|
||||
$this->activateByRoute(
|
||||
|
||||
@@ -11,6 +11,7 @@ namespace App\EventSubscriber;
|
||||
|
||||
use App\Entity\User;
|
||||
use KevinPapst\AdminLTEBundle\Event\ShowUserEvent;
|
||||
use KevinPapst\AdminLTEBundle\Event\ThemeEvents;
|
||||
use KevinPapst\AdminLTEBundle\Model\UserModel;
|
||||
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
|
||||
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
|
||||
@@ -40,8 +41,8 @@ class NavbarShowUserSubscriber implements EventSubscriberInterface
|
||||
public static function getSubscribedEvents(): array
|
||||
{
|
||||
return [
|
||||
'theme.navbar_user' => ['onShowUser', 100],
|
||||
'theme.sidebar_user' => ['onShowUser', 100],
|
||||
ThemeEvents::THEME_NAVBAR_USER => ['onShowUser', 100],
|
||||
ThemeEvents::THEME_SIDEBAR_USER => ['onShowUser', 100],
|
||||
];
|
||||
}
|
||||
|
||||
|
||||
62
src/EventSubscriber/RegistrationSubscriber.php
Normal file
62
src/EventSubscriber/RegistrationSubscriber.php
Normal file
@@ -0,0 +1,62 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* This file is part of the Kimai time-tracking app.
|
||||
*
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace App\EventSubscriber;
|
||||
|
||||
use App\Entity\User;
|
||||
use FOS\UserBundle\Event\FormEvent;
|
||||
use FOS\UserBundle\FOSUserEvents;
|
||||
use FOS\UserBundle\Model\UserManagerInterface;
|
||||
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
|
||||
|
||||
/**
|
||||
* This class intercepts the registration to make sure the first-ever
|
||||
* registered user will get the SUPER_ADMIN role.
|
||||
*/
|
||||
class RegistrationSubscriber implements EventSubscriberInterface
|
||||
{
|
||||
/**
|
||||
* @var UserManagerInterface
|
||||
*/
|
||||
protected $userManager;
|
||||
|
||||
/**
|
||||
* @param UserManagerInterface $userManager
|
||||
*/
|
||||
public function __construct(UserManagerInterface $userManager)
|
||||
{
|
||||
$this->userManager = $userManager;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return array
|
||||
*/
|
||||
public static function getSubscribedEvents(): array
|
||||
{
|
||||
return [
|
||||
FOSUserEvents::REGISTRATION_SUCCESS => ['onRegistrationSuccess', 200]
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* @param FormEvent $event
|
||||
*/
|
||||
public function onRegistrationSuccess(FormEvent $event)
|
||||
{
|
||||
/** @var $user \FOS\UserBundle\Model\UserInterface */
|
||||
$user = $event->getForm()->getData();
|
||||
$roles = [User::ROLE_USER];
|
||||
|
||||
if (empty($this->userManager->findUsers())) {
|
||||
$roles = [User::ROLE_SUPER_ADMIN];
|
||||
}
|
||||
|
||||
$user->setRoles($roles);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user