Подтверждение электронной почты — важный этап при регистрации пользователей в веб-приложениях. Laravel, популярный PHP-фреймворк, предоставляет встроенные функции для проверки электронной почты. По умолчанию Laravel генерирует URL-адрес подтверждения, который отправляется на электронную почту пользователя для подтверждения. Однако в некоторых случаях вам может потребоваться настроить URL-адрес для подтверждения электронной почты, чтобы он соответствовал дизайну или брендингу вашего приложения. В этой статье мы рассмотрим несколько методов проверки пользовательского URL-адреса в Laravel, а также приведем примеры кода.
Метод 1: собственный маршрут и логика контроллера
Один из способов реализовать пользовательскую проверку URL-адресов — определить собственный маршрут и логику контроллера в Laravel. Вот пример:
-
Определите собственный маршрут в файле
routes/web.php:Route::get('/verify-email/{id}/{hash}', 'EmailVerificationController@verify')->name('custom.verify'); -
Создайте контроллер с именем
EmailVerificationController:namespace App\Http\Controllers; use App\Models\User; use Illuminate\Foundation\Auth\EmailVerificationRequest; use Illuminate\Http\Request; class EmailVerificationController extends Controller { public function verify(EmailVerificationRequest $request) { $user = User::find($request->id); if ($user && hash_equals((string) $request->hash, sha1($user->getEmailForVerification()))) { $user->markEmailAsVerified(); // Redirect to success page return redirect()->route('verification.success'); } // Redirect to error page return redirect()->route('verification.error'); } }
Метод 2: настройка электронного письма с уведомлением
Другой подход — настроить электронное письмо с уведомлением, которое Laravel отправляет для проверки электронной почты. Вы можете изменить шаблон электронной почты и включить собственный URL-адрес проверки. Вот пример:
-
Создать уведомление о подтверждении по электронной почте по умолчанию:
php artisan vendor:publish --tag=laravel-notifications -
Откройте сгенерированный файл
resources/views/vendor/notifications/verify-email.blade.phpи измените его:{{-- Replace the verification URL with your custom URL --}} Click here to verify your email address: <a href="{{ $verificationUrl }}">{{ $verificationUrl }}</a>
Метод 3: переопределение генератора URL-адресов VerifyEmail
Вы также можете переопределить генератор URL-адресов по умолчанию для проверки электронной почты в Laravel. Это позволяет вам настроить логику генерации URL-адресов. Вот пример:
-
Создайте новый класс
CustomVerifyEmailUrlGenerator:namespace App\Providers; use Illuminate\Auth\Notifications\VerifyEmail; use Illuminate\Contracts\Routing\UrlGenerator; use Illuminate\Support\Facades\Config; use Illuminate\Support\Facades\URL; class CustomVerifyEmailUrlGenerator extends VerifyEmail { protected function verificationUrl($notifiable) { $appUrl = Config::get('app.url'); return URL::temporarySignedRoute('verification.verify', now()->addMinutes(60), [ 'id' => $notifiable->getKey(), 'hash' => sha1($notifiable->getEmailForVerification()), ]); } } -
Зарегистрируйте новый генератор URL-адресов в
AppServiceProvider:namespace App\Providers; use App\Providers\CustomVerifyEmailUrlGenerator; use Illuminate\Support\ServiceProvider; use Illuminate\Auth\Notifications\VerifyEmail; class AppServiceProvider extends ServiceProvider { public function boot() { VerifyEmail::createUrlUsing(function ($notifiable) { return app(CustomVerifyEmailUrlGenerator::class)->verificationUrl($notifiable); }); } }
Настройка URL-адреса для подтверждения электронной почты в Laravel позволяет обеспечить индивидуальный пользовательский интерфейс и согласовать его с дизайном вашего приложения. В этой статье мы рассмотрели три метода: использование пользовательских маршрутов и логики контроллера, настройку электронного письма с уведомлением и переопределение генератора URL-адресов. Используя эти методы, вы можете создать простой процесс проверки электронной почты для вашего приложения Laravel.
Не забудьте выбрать метод, который лучше всего соответствует вашим требованиям, и интегрировать его в свой проект Laravel, чтобы включить пользовательскую проверку URL-адреса для подтверждения по электронной почте.