Outils pour utilisateurs

Outils du site


symfony4:authentification_2

Authentification (2)

Selon la vidéo de Nouvelle Techno

Création de l'entité USER

php bin/console make:entity User

Fichiers créés :

src/Entity/User.php
src/Repository/UserRepository.php

Ajout des propriétés :

Nom Type Longueur Nullable
email string 255 Non
username string 255 Non
roles simple_array Non
password string 255 Non

Note sur le champ ROLES

j'ai utilisé le type simple_array plutôt que le type json car sur mon serveur MariaDB le type de champ json n'était pas encore supporté, alors qu'en MySQL il existe depuis longtemps…

Le champ dans la DB est du type longtext et son contenu doit être constitué de chaînes séparées par des virgules, par exemple ROLE_USER,ROLE_ADMIN.

Créer la migration :

php bin/console make:migration

Appliquer la migration :

php bin/console doctrine:migrations:migrate

Implémenter UserInterface

Éditer la classe App\Entity\User pour qu'elle implémente l'interface UserInterface :

src/Entity/User.php
// ...
 
use Symfony\Component\Security\Core\User\UserInterface;
 
class User implements UserInterface
{
 
    // ...
 
    // Ajouter ou modifier les fonctions requises :
    //*********************************************
 
    public function getUsername(): ?string
    {
        return $this->username;
    }
 
    public function eraseCredentials() {
 
    }
 
    public function getSalt() {
 
    }
 
    public function getRoles() {
        $roles = $this->roles;
        // guarantee every user at least has ROLE_USER
        $roles[] = 'ROLE_USER';
 
        return array_unique($roles);        
    }
 
}

Création du système d'authentification

php bin/console make:auth

Choisir Login form authenticator.

Nom de la classe à créer : UsersAuthenticator

Nom du contrôleur : SecurityController

Nom de la classe User : App\Entity\User

Choisir le champ de l'entité qui sera entré comme login : email ou username

Générer une route /logout ? Oui

  • Création de src/Security/UsersAuthenticator.php
  • Mise à jour de la configuration dans config/packages/security.yaml
  • Création du contrôleur src/Controller/SecurityController.php
    • et de son template login.html.twig

Formulaire d'inscription

php bin/console make:registration-form

Ajouter une contrainte d'unicité sur la classe Users : Oui

Authentifier automatiquement l'utilisateur après l'inscription : Oui

  • Mise à jour de l'entité src/Entity/Users.php
  • Création du formulaire d'inscription dans src/Form/RegistrationFormType.php
  • Création du contrôleur src/Controller/RegistrationController.php
    • et de son template register.html.twig
symfony4/authentification_2.txt · Dernière modification: 2020/04/23 14:37 (modification externe)