artdevelopp / user-bundle
Bundle apportant la gestion des utilisateurs
Requires
This package is auto-updated.
Last update: 2024-11-06 16:57:37 UTC
README
ArtDevelopp user bundle est un bundle facilant la connexion et la gestion des utilisateurs sur les application symfony
Pré-requis
-
Installer le package security/bundle de symfony :
composer require symfony/security-bundle
-
Les Templates du bundle utilisent Bootstrap v4.3
Ajouter le bundle à son projet
1- Exécuter la commande composer require artdevelopp/user-bundle
2- Ajouter cette ligne à la fin de votre fichier "config/bundles.php" :
ArtDevelopp\UserBundle\ArtdeveloppUserBundle::class => ['all' => true],
Mettre en place les paramétres
Créer un fichier artdevelopp_user.yaml dans le dossier /config/packages/
artdevelopp_user:
#paramètre obligatoire:
mail_sender_address: 'noreply@example.net'
#paramètre facultatif
user_register: true #enregistrement ouvert à tous/ Par defaut true
loginWith: 'email' #Par defaut email −> email ou username
user_class: 'App\Entity\User' #par défaut 'App\Entity\User'
confirm_email: true #envoi email confirmation / Par defaut true
role_admin: ROLE_ADMIN #par défaut ROLE_ADMIN
reset_role: false #remise du role par défaut après changement mot de passe −> true ou false / Par defaut: false
default_role: ROLE_USER #role par défaut ROLE_USER
Configurer les mails
Le bundle utilise Symfony Mailer pour l'envoi de mail, regarder la documentation pour le configurer sur votre projet : https://symfony.com/doc/current/mailer.html#transport-setup
Créer entity User
Simuler la création d'une entity User sans définir d'attribut, ce qui aura pour but de créer les deux fichier Entity et Repository.
Remplacer le code du fichier User.php, contenu dans le dossier Entity par ce qui suit :
<?php
// src/Entity/User.php
namespace App\Entity;
use App\Repository\UserRepository;
use ArtDevelopp\UserBundle\Model\User as ModelUser;
use ArtDevelopp\UserBundle\Model\UserInterface;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
use Symfony\Component\Security\Core\User\PasswordAuthenticatedUserInterface;
#[ORM\Entity(repositoryClass: UserRepository::class)]
#[UniqueEntity('email')]
#[UniqueEntity('username')]
class User implements UserInterface, PasswordAuthenticatedUserInterface
{
use ModelUser;
#[ORM\Id]
#[ORM\GeneratedValue]
#[ORM\Column]
private ?int $id = null;
public function getUserIdentifier(): string
{
return $this->email; //Modifier l'attribut si besoin email ou username
}
}
Effectuer Migration
Effectuer la migration BDD de l'entitée mise en place
Configurer Password Hashers
Dans le fichier config/packages/security.yaml configurer le password_hachers comme ceci:
password_hashers:
App\Entity\User:
algorithm: auto
Configurer le User Provider
Configurer le User Provider du fichier config/packages/security.yaml −> https://symfony.com/doc/current/security.html#loading-the-user-the-user-provider
# config/packages/security.yaml
security:
# ...
providers:
app_user_provider:
entity:
class: App\Entity\User
property: email #email ou username
Configuration du Firewall
Toujours dans le fichier config/packages/security.yaml, configurer le firewall de la façon suivante :
main:
user_checker: ArtDevelopp\UserBundle\Security\UserChecker
form_login:
login_path: artdevelopp_user.login
check_path: artdevelopp_user.login
enable_csrf: true
logout:
path: app_logout
Mettre en place les routes
Créer un fichier artdevelopp_user.yaml dans le dossier /config/routes/ et y mettre le code suivant :
artdevelopp_user:
resource: '@ArtdeveloppUserBundle/Resources/config/routes.yaml'
#Pour la déconnexion
app_logout:
path: /app_logout
name_prefix: app_logout