Configuration de l'authentification utilisateur dans Laravel avec Confide

L'authentification des utilisateurs fait partie de presque toutes les applications Web. Bien que cela soit courant, un examen plus approfondi montre que ce n’est pas aussi simple que cela puisse paraître. N'oubliez pas que la validation, la récupération du mot de passe et la confirmation par courrier électronique sont essentiels à tout formulaire d'authentification décent..

Confide est une solution d’authentification conçue pour Laravel afin de réduire les tâches répétitives liées à la gestion des utilisateurs. C'est une approche sèche sur des fonctionnalités telles que la création de compte, la connexion, la déconnexion, la confirmation par e-mail, la réinitialisation du mot de passe, etc..

Depuis les premières versions, Confide a toujours été bien adopté par les développeurs et largement présent dans les projets Laravel. Avec une mise à jour récente, le paquet est maintenant compatible avec Laravel 4.2, qui est la dernière version stable de Laravel au moment de la rédaction de cet article..

Ce que nous allons faire

Dans ce tutoriel, nous allons commencer par créer notre application Laravel à l'aide de Composer, puis:

  • créer un formulaire d'inscription avec un ensemble complet de règles de validation
  • un formulaire de connexion avec une option "mot de passe oublié" qui enverra un lien pour que l'utilisateur redéfinisse son mot de passe
  • utiliser les filtres Laravel pour autoriser uniquement les utilisateurs connectés à accéder à un itinéraire spécifique.

Création de l'application

Tout d'abord, créons l'application en utilisant Composer.

$ composer create-project laravel / laravel myapp

Installation de Confide

Maintenant, avec dans le répertoire du projet, éditez le exiger clé de composer.json fichier et inclure l'entrée de confier:

"require": "laravel / framework": "~ 4.2", "zizaco / confide": "~4.0@dev",

Puis lancez composer update sur notre nouvelle dépendance:

$ update composer zizaco / confide

Dans config / app.php de notre projet, ajoutez 'Zizaco \ Confide \ ServiceProvider' à la fin du tableau de fournisseurs:

… 'Providers' => array ('Illuminate \ Foundation \ Providers \ ArtisanServiceProvider', 'Illuminate \ Auth \ AuthServiceProvider',… 'Zizaco \ Confide \ ServiceProvider',),… 

Ajoutez aussi 'Confide' => 'Zizaco \ Confide \ Facade' vers le tableau d'alias dans le même fichier:

… 'Aliases' => array ('App' => 'Illuminate \ Support \ Façades \ App', 'Artisan' => 'Illuminate \ Support \ Façades \ Artisan',… 'Confide' => 'Zizaco \ Confide \ Façade ',),

Met le adresse et prénom dans config / mail.php. Cette configuration sera utilisée pour envoyer des e-mails de confirmation de compte et de réinitialisation de mot de passe aux utilisateurs. Pour ce tutoriel, vous pouvez utiliser votre serveur SMTP personnel pour que tout fonctionne

Par exemple, si vous utilisez Gmail, vous pouvez effectuer les opérations suivantes:

'driver' => 'smtp', 'host' => 'smtp.gmail.com', // à des fins de test 'from' => array ('address' => '[email protected]', 'name' => 'MyApp'),… 'username' => '[email protected]', 'password' => ',… 

Modèle d'utilisateur

Générez maintenant les migrations Confide en lançant:

$ php artisan confie: migration $ php artisan migrate

Ceci installera une table contenant email, mot de passe, Remember_token, code de confirmation et confirmé colonnes. Ce sont les champs par défaut nécessaires pour Confide. N'hésitez pas à ajouter plus de colonnes à la table ultérieurement.

Remplacer tout le code dans app / models / User.php à:

 

Zizaco \ Confide \ ConfideUser trait prendra en charge la plupart des comportements du modèle utilisateur.

UsersController et Routes

Confide contient un outil générateur qui créera un contrôleur et écrira les routes pour nous. Pour créer le UtilisateursContrôleur et pour enregistrer les routes, exécutons ces commandes:

$ php artisan confier: contrôleur $ php artisan confier: routes

Comme de nouvelles classes ont été créées, nous devrons actualiser les fichiers à chargement automatique..

$ composer dump-autoload

Prêt à l'emploi

Nous avons fini! Notre application dispose désormais de toutes les fonctionnalités offertes par Confide. Exécutez le serveur d'applications en appelant php artisan servir dans le terminal.

Le suivant OBTENIR itinéraires sont disponibles dans notre application:

http: // localhost: 8000 / users / create http: // localhost: 8000 / users / login http: // localhost: 8000 / users / Forgot_password

Pour accéder à l'utilisateur actuel, nous pouvons appeler Confide :: user (). Par conséquent, pour afficher le nom de l'utilisateur actuel, nous devons remplacer le contenu de app / views / hello.php avec:

    Auth utilisateur avec Confide   

Bonjour confier

salut

Maintenant allez-y et accédez http: // localhost: 8000 / users / create pour créer notre premier utilisateur. Vous recevrez un email de confirmation juste après avoir soumis le formulaire. (si vous avez rempli le config / mail.php avec les valeurs correctes). Connectez-vous et vous verrez le nom d'utilisateur à l'écran..

Améliorer les visuels

Les formes par défaut de Confide sont compatibles avec Bootstrap. Alors ne soyez pas intimidé par la "laideur" d’eux sur une page sans CSS. Editez le contrôleur généré par Confide (UserController.php) et mettez à jour la méthode create pour:

 

Ainsi, notre application rendra la vue utilisateurs.signup. Créons cette vue dans app / vues / utilisateurs comme signup.blade.php avec le contenu suivant:

    Auth utilisateur avec Confide  Importe le bootstrap de Twitter et en définit le style      

S'inscrire

Rend le formulaire d'inscription de Confide Confide :: makeSignupForm () -> render ();

Après cela, nous aurons un résultat beaucoup plus élégant dans le formulaire de création d’utilisateur sur http: // localhost: 8000 / user / create:

Vous n'êtes pas obligé d'utiliser les formulaires générés par Confide. Vous pouvez créer votre propre vue qui envoie des données au POSTER itinéraires.

Restreindre l'accès

Ouvrir app / routes.php et ajoutez le code ci-dessous au bas du fichier:

// Route du tableau de bord Route :: get ('userpanel / dashboard', function () return View :: make ('userpanel.dashboard');); // Applique le filtre d'authentification aux routes de admin / Route :: when ('userpanel / *', 'auth');

Créer le fichier de vue app / views / userpanel / dashboard.blade.php:

    Auth utilisateur avec Confide  Importe le bootstrap de Twitter et en définit le style      

Confide :: user () -> nom d'utilisateur

email: Confide :: user () -> email

Maintenant que nous avons appliqué le filtre à tous les itinéraires de panneau utilisateur. Nous aurons besoin d’un petit ajustement pour nous assurer que le auth Le filtre redirige l'utilisateur vers l'URL de connexion correcte. modifier app / filters.php en ligne 46 afin de remplacer return Redirect :: guest ('login'); avec:

… Return Redirect :: guest ('utilisateurs / login');… 

Cela fait, le panneau utilisateur / tableau de bord Cette page ne sera disponible que pour les utilisateurs connectés à l'application. Le filtre redirige les utilisateurs invités vers le formulaire de connexion, puis de nouveau vers le tableau de bord une fois qu'ils sont connectés..

Conclusion

Il est possible de noter que nous avons pu configurer rapidement l'authentification des utilisateurs pour notre application. En outre, le contrôleur, la migration et les itinéraires générés peuvent être modifiés pour personnaliser la gestion de chaque détail..

Nous ne nous sommes pas beaucoup concentrés sur ConfideUser trait, mais je crois qu'il est important de clarifier les choses. Une fois que votre modèle utilise le ConfideUser trait, vous n'avez pas à vous soucier de la mise en œuvre de la logique de base. Dans le même temps, vous pouvez toujours écraser les méthodes et les personnaliser, si nécessaire..

Nous pouvons dire que Confide est une approche DRY de l’authentification de l’utilisateur. Il offre la commodité d'avoir la fonctionnalité prête à l'emploi tout en permettant une personnalisation élevée.

Découvrez Confide sur GitHub. Si vous rencontrez un problème en suivant ce didacticiel, n'hésitez pas à me contacter..