Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

get current default_target_path inside an controller

Tags:

php

symfony

I'm using FOSUserBundle+FOSFacebookBundle and I'm trying to make my login and register page unaccesible after logging in. If the user logged in and is accesing one of these page he should be redirected to page defined in firewall's default_target_path.

The problem is that I don't know how to get default_target_path while inside an controller. I was using

$request->getSession()->get('_security.target_path');

but it returns null.

Here is my security.yml file:

jms_security_extra:
    secure_all_services: false
    expressions: true

security:
    encoders:
        FOS\UserBundle\Model\UserInterface: sha512

    role_hierarchy:
        ROLE_ADMIN:       ROLE_USER
        ROLE_SUPER_ADMIN: [ROLE_USER, ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH]

    providers:
        chainprovider:
            chain:
                providers: [ fos_userbundle, fos_facebookbundle]
        fos_userbundle:
            id: fos_user.user_provider.username
        fos_facebookbundle:
            id: fos_facebookbundle

    firewalls:
        main:
            pattern: ^/
            form_login:
                provider: fos_userbundle
                csrf_provider: form.csrf_provider
                default_target_path: /
            fos_facebook:
                app_url: "FB_APP_URL"
                server_url: "APP_URL"
                login_path: /login
                check_path: /login_fb_check
                default_target_path: /
                provider: fos_facebookbundle
            logout: true
            anonymous: true

        dev:
            pattern: ^/(_(profiler|wdt)|css|images|js|font)/
            security: false

    access_control:
        - { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/register, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/resetting, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/admin/, role: ROLE_ADMIN }

Any ideas?

Thank you.

like image 260
user2178176 Avatar asked Dec 04 '25 15:12

user2178176


1 Answers

Set:

firewalls:
    main:
        pattern: ^/
        form_login:
            # ...
            default_target_path: %target_path%

target_path set in parameters.yml

parameters:
    # ...
    target_path: /
    # ...

and than get value by:

$this->container->getParameter('target_path');
like image 128
mkjasinski Avatar answered Dec 07 '25 04:12

mkjasinski



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!