• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Nadpisanie kontrolera logowania FosUserBundle

Object Storage Arubacloud
0 głosów
236 wizyt
pytanie zadane 9 czerwca 2018 w PHP przez tomek923 Początkujący (480 p.)

Hej,

wiecie jak nadpisać SecurityController w FosUserBundle. Chciałbym nadpisać tylko loginAction.

namespace Common\UserBundle\Controller;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\HttpFoundation\Request;

class SecurityController extends \FOS\UserBundle\Controller\SecurityController
{
    /**
     * We override loginAction to redirect the user depending on their role.
     * If they try to go to /login, they will be redirected accordingly based on their role
     *
     * @param Request $request
     * @return RedirectResponse|\Symfony\Component\HttpFoundation\Response
     */
    public function loginAction(Request $request)
    {
        $auth_checker = $this->get('security.authorization_checker');
        $router = $this->get('router');

        if ($auth_checker->isGranted('ROLE_PATIENT')) {
            // Everyone else goes to the `home` route
            return new RedirectResponse($router->generate('patient_reservationList'), 307);
        }

        // Always call the parent unless you provide the ENTIRE implementation
        return parent::loginAction($request);
    }
}

Nie wiem gdzie umieścić sam kontroler do nadpisania.  Próbowałem w app Controller ale nie działa.

2 odpowiedzi

+1 głos
odpowiedź 9 czerwca 2018 przez Arkadiusz Waluk Ekspert (287,950 p.)
komentarz 9 czerwca 2018 przez tomek923 Początkujący (480 p.)

Tak jest opisane że nie rozumiem, gdzie umieszczam klasę:

<?php
// src/AppBundle/AppBundle.php

namespace AppBundle;

use Symfony\Component\HttpKernel\Bundle\Bundle;

class AppBundle extends Bundle
{
    public function getParent()
    {
        return 'FOSUserBundle';
    }
}

a gdzie klasę SecurityController?

komentarz 9 czerwca 2018 przez Arkadiusz Waluk Ekspert (287,950 p.)

The example below overrides the registerAction method. It uses the code from the base controller and adds logging a new user registration to it.

<?php
// src/AppBundle/Controller/RegistrationController.php

Na logikę rzecz biorąc wystarczy więc, że zrobisz klasę src/AppBundle/Controller/SecurityController (nie testowałem).

–2 głosów
odpowiedź 9 czerwca 2018 przez Mariusz08 Maniak (62,300 p.)
Nie prościej ingerować w wewnętrzne pliki bundle? Katalog /vendor/ i tam poszukać, niż bawić się w rozszerzanie?
komentarz 9 czerwca 2018 przez Arkadiusz Waluk Ekspert (287,950 p.)
Katalog vendor nie powinien być nigdy przechowywany w repozytoriach, załóżmy więc że zmianę w vendorze wykona lokalnie, później pobierze projekt na serwerze produkcyjnym i klops, zmian nie ma. vendora nigdy nie powinno się modyfikować, jak bardzo trzeba zmienić daną bibliotekę to sensowniej zrobić forka do siebie, zmodyfikować co trzeba i wystawić do pobrania dla Composera (oczywiście jeśli licencja na takie działanie pozwala).
komentarz 9 czerwca 2018 przez tomek923 Początkujący (480 p.)

@Mariusz08, a co jeżeli zaktualizuję w przyszłości FosUserBundle?

komentarz 9 czerwca 2018 przez Mariusz08 Maniak (62,300 p.)
Myślę, że @Arkadiusz Waluk odpowiedział na pytanie w sposób lepszy ode mnie (faktycznie, nie przemyślałem możliwości wstawienia tego na np. GitHuba - napisałem myśl, która przyszła mi do głowy jako pierwsza). Jeśli zaktualizujesz FOSUserBundle, pliki zostaną nadpisane i będzie trzeba od nowa edytować pliki.

Podobne pytania

0 głosów
1 odpowiedź 218 wizyt
pytanie zadane 18 listopada 2017 w PHP przez lukasz_spr Użytkownik (860 p.)
0 głosów
0 odpowiedzi 171 wizyt
pytanie zadane 16 czerwca 2017 w PHP przez UltraSF Stary wyjadacz (11,740 p.)
+1 głos
2 odpowiedzi 221 wizyt
pytanie zadane 11 kwietnia 2017 w PHP przez UltraSF Stary wyjadacz (11,740 p.)

92,579 zapytań

141,432 odpowiedzi

319,664 komentarzy

61,964 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...