Bonjour à toutes et tous,

Je rencontre un petit souci avec le site que je suis en train de développer.

J’utilise FOS en 2 endroits différents:

==> pour la connexion à l’admin
==> pour la création de comptes et la connexion au front.
En ce qui concerne le front, j’ai 2 types d’utilisateurs:
==> auteurs
==> lecteurs

Le souci se situe au niveau du formulaire de login du front: quand je tente de me connecter, je suis redirigée vers le formulaire de login de l’admin.

Ca doit donc être un souci au niveau des routes, mais je ne vois pas où:

Mon fichier security.yml:


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
security:
    encoders:
        FOS\UserBundle\Model\UserInterface: sha512
#        Site\UserBundle\Entity\User: sha512
#        Symfony\Component\Security\Core\User\User: plaintext
 
    role_hierarchy:
        ROLE_ADMIN:         ROLE_MEMBER
        ROLE_READER:        ROLE_USER
        ROLE_AUTHOR:        ROLE_USER
        ROLE_SUPER_ADMIN:   [ROLE_USER, ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH]
 
    providers:
        fos_userbundle:
            id: fos_user.user_provider.username
 
    firewalls:
        dev:
            pattern:  ^/(_(profiler|wdt)|css|images|js)/
            security: false
        admin_login:
           pattern: ^/admin/login$
           anonymous: true
        admin:
           pattern: ^/
           form_login:
               provider: fos_userbundle
               check_path: /admin/login_check
               login_path: /admin/login
               always_use_default_target_path: true
               default_target_path: /admin
               target_path_parameter: _target_path
           logout:
               path: /admin/logout
               target: /admin/login
           anonymous: true    
        members_login:
           pattern: ^/user/login$
           anonymous: true
        members:
           pattern: ^/
           form_login:
               provider: fos_userbundle
               check_path: /user/login_check
               login_path: /user/login
               always_use_default_target_path: true
               default_target_path: /site
               target_path_parameter: _target_path
           logout:
               path: /user/logout
               target: /user/login
           anonymous: true
 
    access_control:
        - { path: ^/user/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/admin/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/admin, role: ROLE_ADMIN }
        - { path: ^/user/register, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/user/confirmed, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/user/check-email, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/user/confirm, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/user, role: ROLE_USER }
Dans le config:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# FOSUser
fos_user:
    db_driver:     orm                        
    firewall_name: members                       
    user_class:    Site\UserBundle\Entity\User 
    registration:
        form:
            type: site_user_registration
        confirmation:
            enabled:  true
            from_email:
                address: info@ddd.be
                sender_name: DDD
 
site_user:
    login_routes:
        site_admin_login:
           login_check_route: isl_admin_check
           template: "SiteAdminBundle:Admin:login.html.twig"
        site_user_login:
            login_check_route: site_user_check
            template: « SiteUserBundle:Security:login.html.twig"


SecurityController (dans le UserBundle):

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
 
<?php
 
namespace Site\UserBundle\Controller;
 
use Symfony\Component\DependencyInjection\ContainerAware;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Security\Core\SecurityContext;
use FOS\UserBundle\Controller\SecurityController as BaseController;
 
class SecurityController extends BaseController
{
 
    protected function renderLogin(array $data) {
        $requestAttributes = $this->container->get('request')->attributes;
        $params = $this->container->getParameter('site_user');
        $route = $requestAttributes->get('_route');
 
        if(!isset($params['login_routes'][$route])){
            throw new \Exception('La route de connexion '.$route.' n\'est pas définie.');
        }
 
        $template = $params['login_routes'][$route]['template'];
        $data['login_check_route'] = $params['login_routes'][$route]['template'];
 
        return $this->container->get('templating')->renderResponse($template, $data);
    }
}
D’autres fichiers rentrent peut-être en compte, mais histoire de ne pas encombre le message, je ne mets ce ceux çi.
Si d’autres fichiers sont nécessaire pour m’aider, merci de le signaler ;-)

D’avance merci pour votre aide.