# User Authentication ## Create a user class Permissions are linked to a user object. ```bash symfony console make:user symfony console make:auth # (1 for login form) symfony console make:registration-form symfony console make:reset-password ``` Now you will want to sync the database (using docker) ```bash sudo docker-compose run symfony php bin/console make:migration sudo docker-compose run symfony php bin/console doctrine:migrations:migrate ``` Note: 'symfony' is the name of your symfony app in docker-compose (such as app) ## Login Form ```php bin/console make:controller Login``` You have to add ```yaml form_login: login_path: app_login check_path: app_login ``` to the firewalls section under main of config/packages/security.yaml ### Modify the controller ```php getLastAuthenticationError(); $lastUsername = $authenticationUtils->getLastUsername(); return $this->render('login/index.html.twig', [ 'last_username' => $lastUsername, 'error' => $error, ]); } } ``` ### Modify the template ```php {% extends '@nytwig/master.html.twig' %} {% block title %}Hello LoginController!{% endblock %} {% block content %} {% if error %}
{{ error.messageKey|trans(error.messageData, 'security') }}
{% endif %}
{# If you want to control the URL the user is redirected to on success #}
{% endblock %} ``` ## Loggging Out https://symfony.com/doc/current/security.html#logging-out ## Access Control (Authorization) https://symfony.com/doc/current/security.html#access-control-authorization ## References * https://symfony.com/doc/current/security.html * https://dev.to/nabbisen/symfony-6-user-authentication-4ek