ProgWebAv oAuth

Ajoutez à votre page de login une fonctionnalité pour que l’utilisateur puisse s’authentifier avec son compte Google (via oAuth pour google). Notre application n’a besoin que de l’email de l’utilisateur. Cet e-mail sera alors utilisé pour créer un compte utilisateur local et authentifier l’utilisateur dans l’application.

1) Installation

Pour utiliser oAuth dans Laravel, nous allons utiliser laravel/socialite. Commencez donc par l’installer dans votre projet grâce au composer. Pour ce faire, lancer la commande suivante :

composer require laravel/socialite

2) Implémentation pour oAuth Google

Commencez par ajouter dans config/services.php les données nécessaires au dialogue oAuth pour Google. (Il faut avoir précédemment intégré votre app chez Google via leur console développeur)

Rajoutez deux nouvelles actions dans votre controller d’authentification. L’une pour la redirection vers la page oAuth de Google et l’autre pour le callback oAuth. Puis rajoutez les routes adéquates. Enfin modifiez le formulaire de login pour y ajouter un lien vers la route de redirection vers la page oAuth de Google.

Dans votre action gérant le callback, vous serez à même de récupérer l’email du compte Google de l’utilisateur grâce au code suivant:

$googleUser = Socialize::driver('google')->user();
$email = $googleUser->getEmail();

Le problème pour finir votre authentification via Google est que l’utilisateur n’est toujours pas authentifié dans votre application. Pour ce faire, nous allons automatiquement créez un compte local pour cet utilisateur. Vous pouvez utiliser la méthode firstOrCreate pour le faire. A vous de bien réfléchir au password qu'il faudra mettre pour cet utilisateur (peut-être faudrait-il rajouter une colonne dans la table des users ? ).

Une fois le compte utilisateur crée, on peut directement se logger grâce à :
Auth::login($user);