zeO_340
zeO_340

Reputation: 147

Symfony 2.6 - Security provider

I am currently developping an application using Symfony2.6 And I have some trouble. I have two kind of users customers and employee so in my Database I have a table customer and a table employee. How can I tell symfony to go look in these two tables for the user credentials when the user try to log in?

I know that you can define a provider in the security.yml file which can be the entity but how can I declare two providers? is that possible or do I have to do this another way ?

thank all for you answers

Upvotes: 0

Views: 85

Answers (2)

zeO_340
zeO_340

Reputation: 147

So thx to someone here i've found the answer to this specific problem here http://symfony.com/doc/current/cookbook/security/multiple_user_providers.html

Symfony allows us to declare a multiple user providers

Upvotes: 0

Alister Bulman
Alister Bulman

Reputation: 35139

I've got something similar with (currently) two different types of users. To handle all of the login and permissions though, I'm using FosUserBundle, and assigning them roles which I can check and then fetch user-profiles based on that.

To ensure that they get the correct ROLE_* assigned on the user creation I've followed the SO question, Adding new FOSUserBundle users to a default group on creation. They pickup a session variable with the future-role they will take, and then I have an event listener to set that role to the newly minted FosUser:

<?php
class UserCreationListener implements EventSubscriberInterface
{

// lots of constructor setup, debugging, logging and checks removed from code

public static function getSubscribedEvents()
{
    return array(
        FOSUserEvents::REGISTRATION_SUCCESS => 'onRegistrationSuccess',
    );
}

public function onRegistrationSuccess(FormEvent $event)
{
    $user = $event->getForm()->getData();
    $newRole = $this->session->get('futureRole', 'ROLE_CUSTOMER');
    $user->addRole($role);
    $this->userManager->updateUser($user);
    return $this->redirect->redirect('app_profile', 302);
}

}

Upvotes: 0

Related Questions