Créer un formulaire de connexion

Ce tutoriel est un simple récapitulatif de toutes les fonctionnalités vues précédemment afin de préparer la mise en place de l'authentification dans le prochain tutoriel.

Création d'un contrôleur

Nous allons créer un contrôleur via la commande php artisan make:controller ConnexionController. Puis nous allons le remplir avec deux fonctions, une pour afficher le formulaire et une pour traiter le formulaire.

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class ConnexionController extends Controller
{
    public function formulaire()
    {
        return view('connexion');
    }

    public function traitement()
    {
        return 'Traitement formulaire connexion';
    }
}

Création des routes

Nous allons maintenant créer les deux routes nécessaires, une de type GET pour afficher le formulaire, et une de type POST pour traiter le formulaire.

Route::get('/connexion', 'ConnexionController@formulaire');
Route::post('/connexion', 'ConnexionController@traitement');

Création de la vue

Nous pouvons simplement copier la vue d'inscription en changeant l'URL de l'action de la balise form, en supprimant le champ de confirmation du mot de passe et en renommant le bouton « M'inscrire » en « Se connecter ».

@extends('layout')

@section('contenu')
    <form action="/connexion" method="post" class="section">
        {{ csrf_field() }}

        <div class="field">
            <label class="label">Adresse e-mail</label>
            <div class="control">
                <input class="input" type="email" name="email" value="{{ old('email') }}">
            </div>
            @if($errors->has('email'))
                <p class="help is-danger">{{ $errors->first('email') }}</p>
            @endif
        </div>

        <div class="field">
            <label class="label">Mot de passe</label>
            <div class="control">
                <input class="input" type="password" name="password">
            </div>
            @if($errors->has('password'))
                <p class="help is-danger">{{ $errors->first('password') }}</p>
            @endif
        </div>

        <div class="field">
            <div class="control">
                <button class="button is-link" type="submit">Se connecter</button>
            </div>
        </div>
    </form>
@endsection

Mise en place de la validation

Nous pouvons mettre en place quelques règles de validation dans notre fonction de traitement avant de vérifier que l'email et le mot de passe sont corrects.

public function traitement()
{
    request()->validate([
        'email' => ['required', 'email'],
        'password' => ['required'],
    ]);

    // À faire : vérification que l'email et le mot de passe sont corrects.

    return 'Traitement formulaire connexion';
}

Dans le prochain tutoriel, nous allons utiliser le système d'authentification de Laravel pour vérifier que l'email et le mot de passe sont corrects.