Чтобы реализовать проверку электронной почты с помощью проверочного кода в Laravel Lumen, вы можете использовать различные методы. Вот несколько разных подходов:
Метод 1: использование встроенной функции проверки электронной почты Laravel
Laravel предоставляет встроенную функцию проверки электронной почты, которую вы также можете использовать в Laravel Lumen. Этот метод использует стандартную систему аутентификации Laravel.
Шаг 1. Настройте систему аутентификации Laravel
Для начала настройте систему аутентификации Laravel, выполнив следующие действия:
-
Установить пакет пользовательского интерфейса Laravel:
composer require laravel/ui -
Создайте структуру аутентификации:
php artisan ui bootstrap --auth
Шаг 2. Настройте проверку электронной почты
Далее настройте проверку электронной почты в своем проекте:
-
Добавьте черту
MustVerifyEmailв свою модель пользователя:use Illuminate\Contracts\Auth\MustVerifyEmail; use Illuminate\Foundation\Auth\User as Authenticatable; class User extends Authenticatable implements MustVerifyEmail { // ... } -
Настройте драйвер электронной почты и другие параметры в
config/mail.php:'mailers' => [ 'smtp' => [ 'transport' => 'smtp', 'host' => env('MAIL_HOST', 'smtp.mailgun.org'), 'port' => env('MAIL_PORT', 587), 'encryption' => env('MAIL_ENCRYPTION', 'tls'), 'username' => env('MAIL_USERNAME'), 'password' => env('MAIL_PASSWORD'), 'timeout' => null, 'auth_mode' => null, ], // ... ], -
Определите маршруты проверки электронной почты в
routes/web.php:use Illuminate\Support\Facades\Route; Route::get('/email/verify', function () { return view('auth.verify-email'); })->middleware(['auth', 'signed'])->name('verification.notice'); Route::get('/email/verify/{id}/{hash}', function (Illuminate\Foundation\Auth\EmailVerificationRequest $request) { $request->fulfill(); return redirect('/home'); })->middleware(['auth', 'signed'])->name('verification.verify'); Route::post('/email/verification-notification', function (Illuminate\Http\Request $request) { $request->user()->sendEmailVerificationNotification(); return back()->with('message', 'Verification link sent!'); })->middleware(['auth', 'throttle:6,1'])->name('verification.send'); -
Создайте представления для проверки электронной почты в каталоге
resources/views/auth:verify-email.blade.php: представление, в котором отображается уведомление о проверке.verify-email.blade.php: представление, в котором отображается сообщение об успешной проверке.
Метод 2: пользовательская логика проверки электронной почты
Если вы предпочитаете более индивидуальный подход, вы можете реализовать проверку электронной почты с помощью кода подтверждения, используя пользовательскую логику. Вот пример:
Шаг 1. Добавьте столбец кода подтверждения в таблицу «Пользователи».
Добавьте столбец verification_codeв таблицу usersдля хранения кода подтверждения.
Шаг 2. Создайте и отправьте код подтверждения
При регистрации пользователя сгенерируйте код подтверждения и отправьте его на его адрес электронной почты. Вот пример:
use Illuminate\Support\Facades\Mail;
function generateVerificationCode()
{
return mt_rand(100000, 999999);
}
function sendVerificationEmail($user)
{
$verificationCode = generateVerificationCode();
$user->verification_code = $verificationCode;
$user->save();
Mail::send('emails.verify', ['user' => $user], function ($message) use ($user) {
$message->to($user->email)->subject('Email Verification');
});
}
Шаг 3. Проверка адреса электронной почты
Создайте маршрут и соответствующий метод контроллера для проверки электронной почты:
use Illuminate\Http\Request;
class VerificationController extends Controller
{
public function verify(Request $request)
{
$user = User::where('email', $request->email)->where('verification_code', $request->verification_code)->first();
if ($user) {
$user->verification_code = null;
$user->email_verified = true;
$user->save();
// Log in the user or perform any other necessary actions
return redirect('/home')->with('message', 'Email verified successfully!');
}
return redirect('/login')->with('error', 'Invalid verification code.');
}
}
Это всего лишь несколько примеров реализации проверки электронной почты с помощью проверочного кода в Laravel Lumen. Вы можете настроить эти методы в соответствии со своими конкретными требованиями.