Методы реализации проверки электронной почты в Laravel с примерами кода

Чтобы реализовать проверку электронной почты в Laravel, вы можете использовать несколько методов. Вот несколько подходов с примерами кода:

Метод 1: использование встроенной функции проверки электронной почты Laravel

Laravel предоставляет встроенную функцию проверки электронной почты, которая упрощает этот процесс. Чтобы использовать эту функцию, выполните следующие действия:

Шаг 1. Настройте базу данных
Убедитесь, что в таблице пользователей есть столбец email_verified_at. Этот столбец будет использоваться для хранения отметки времени подтверждения электронной почты.

Шаг 2. Включите проверку электронной почты.
Откройте модель пользователя и добавьте контракт Illuminate\Contracts\Auth\MustVerifyEmail в определение класса:

use Illuminate\Contracts\Auth\MustVerifyEmail;
class User extends Authenticatable implements MustVerifyEmail
{
    // ...
}

Шаг 3. Создайте маршруты
Laravel включает предопределенные маршруты для проверки электронной почты. Чтобы сгенерировать эти маршруты, добавьте Auth::routes([’verify’ =>true]); строка в файле маршруты/web.php:

use Illuminate\Support\Facades\Auth;
Auth::routes(['verify' => true]);

Шаг 4. Защитите маршруты
Чтобы защитить определенные маршруты и обеспечить доступ к ним только проверенным пользователям, вы можете использовать проверенное промежуточное программное обеспечение. Например:

Route::get('/dashboard', 'DashboardController@index')->middleware('verified');

Шаг 5. Отправка писем с подтверждением
Когда пользователь регистрируется, вы можете отправить письмо с подтверждением с помощью метода sendEmailVerificationNotification(). Например:

use Illuminate\Foundation\Auth\RegistersUsers;
class RegisterController extends Controller
{
    use RegistersUsers;
    protected function create(array $data)
    {
        $user = User::create([
            'name' => $data['name'],
            'email' => $data['email'],
            'password' => Hash::make($data['password']),
        ]);
        $user->sendEmailVerificationNotification();
        return $user;
    }
}

Метод 2. Проверка электронной почты вручную

Если вы предпочитаете более индивидуальный подход, вы можете реализовать проверку электронной почты вручную. Вот пример:

Шаг 1. Создайте токен проверки
При регистрации пользователя сгенерируйте токен проверки и сохраните его в таблице пользователей. Вы можете использовать метод Str::random() для генерации случайного токена. Например:

use Illuminate\Support\Str;
$token = Str::random(40);
User::create([
    'name' => $request->name,
    'email' => $request->email,
    'password' => Hash::make($request->password),
    'verification_token' => $token,
]);

Шаг 2. Отправьте электронное письмо с подтверждением.
Отправьте пользователю электронное письмо, содержащее ссылку для подтверждения. Ссылка должна включать сгенерированный токен. Вы можете использовать встроенный класс Mail Laravel для отправки электронных писем. Например:

use Illuminate\Support\Facades\Mail;
use App\Mail\VerificationEmail;
Mail::to($user->email)->send(new VerificationEmail($user));

Шаг 3. Подтвердите адрес электронной почты
Когда пользователь нажимает ссылку подтверждения, обработайте запрос и обновите столбец email_verified_at пользователя. Например:

public function verifyEmail(Request $request)
{
    $user = User::where('verification_token', $request->token)->first();
    if ($user) {
        $user->email_verified_at = now();
        $user->verification_token = null;
        $user->save();
        // Redirect or show a success message
    } else {
        // Handle invalid token
    }
}