MBO-SD : De site voor software developer in het MBO
Inloggen
De inlog pagina
            Net als het registratie formulier heeft Symfony ook een ingebouwd commando voor het maken van een login
            pagina. Voer het commando symfony console make:security:form-login uit.
        
Als alles goed is, krijg je de volgende vragen.
# symfony console make:security:form-login
 Choose a name for the controller class (e.g. SecurityController) [SecurityController]:
 > SecurityController
 Do you want to generate a '/logout' URL? (yes/no) [yes]:
 >
 created: src/Controller/AuthenticationController.php
 created: templates/authentication/login.html.twig
 updated: config/packages/security.yaml
  Success!
 Next: Review and adapt the login template: authentication/login.html.twig to suit your needs.Aanpassen van de inlog pagina
            De webapplicaties die wij bouwen zijn voor Nederlandse gebruikers.
            Dit betekent dat je het gemaakte twig
        
            Open het bestand templates/security/login.html.twig. In de basis zal je zien dat
            deze net iets anders met het formulier werkt dan de registration.html.twig of als
            je met {{form(form) }} hebt gewerkt. De teksten en HTML/CSS kan je zelf aanpassen.
        
            Sla de pagina op en surf naar http://localhost:8000/login en probeer in te loggen met
            de gegevens die je in de registration-pagina gemaakt hebt.
        
Landing page per rol
Wanneer je bent ingelogd word je standaard doorgestuurd naar het pad '/', ok wel de root genoemd. Vaak heb je een HomeController waar je een route in hebt zitten voor het pad '/'. Wanneer je de gebruiker wil doorsturen naar een specifieke pagina aan hand van de rol die een gebruiker heeft kun je de volgende code daarvoor gebruiken:
            
//route voor het pad '/' ook wel de root genoemd
#[Route('/', name: 'home')]
public function home(): Response
{
    //wanneer je de rol 'ROLE_STUDENT' hebt wordt de student pagina getoond.
    if ($this->isGranted('ROLE_STUDENT')){
        return $this->render('student/index.html.twig');
    }
    //wanneer je de rol 'ROLE_TEACHER' hebt wordt de teacher pagina getoond.
    if ($this->isGranted('ROLE_TEACHER')){
        return $this->render('teacher/index.html.twig');
    }
    //heb je geen rol wordt je naar de standaard landing pagina gestuurd, in dit geval de guest pagina.
    return $this->render('guest/index.html.twig');
}
        
        Uitloggen
            Als je bovenstaande stappen goed doorlopen hebt staat er in de SecurityController
            ook een route voor het uitloggen. Deze ziet er als volgt uit.
            
#[Route(path: '/logout', name: 'app_logout')]
public function logout(): void
{
    throw new \LogicException('This method can be blank - it will be intercepted by the logout key on your firewall.');
}Denk aan je layout!
            Als de registratie en inlog pagina's gemaakt zijn is het natuurlijk van belang dat je in jouw
            applicatie de pagina's aanpast. Bijvoorbeeld in het menu. Als een gebruiker nog niet is
            ingelogd maak je een inloggen link in het menu. Is een gebruiker wel ingelogt
            toon je zijn naam om te tonen dat de gebruiker ingelogd is.
        
