Метод hasVerifiedEmail
Метод hasVerifiedEmail применяется к экземпляру модели User
и возвращает булево значение, указывающее, подтверждён ли email
пользователя. Метод не принимает никаких параметров и доступен
только для моделей, использующих трейт MustVerifyEmail.
Если пользователь не прошёл верификацию, метод вернёт false.
Синтаксис
<?php
$user->hasVerifiedEmail();
?>
Пример с аутентифицированным пользователем
Давайте проверим, подтвердил ли текущий аутентифицированный пользователь свой email:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
class ProfileController extends Controller
{
public function show(Request $request)
{
$user = Auth::user();
if ($user->hasVerifiedEmail()) {
echo "Email confirmed";
} else {
echo "Email not confirmed";
}
}
}
?>
Результат выполнения кода для подтверждённого пользователя:
"Email confirmed"
Пример с конкретным пользователем
Давайте проверим верификацию email для конкретного пользователя по его идентификатору:
<?php
namespace App\Http\Controllers;
use App\Models\User;
class UserController extends Controller
{
public function checkVerification($id)
{
$user = User::find($id);
if ($user && $user->hasVerifiedEmail()) {
echo "User verified";
} elseif ($user) {
echo "User not verified";
} else {
echo "User not found";
}
}
}
?>
Результат выполнения кода для пользователя с id = 5:
"User not verified"
Пример в Blade-шаблоне
Давайте используем метод в Blade-шаблоне для условного отображения контента:
@auth
@if (Auth::user()->hasVerifiedEmail())
<p>Your email is verified</p>
<a href="/dashboard">Go to dashboard</a>
@else
<p>Please verify your email</p>
<a href="/email/verify">Verify now</a>
@endif
@endauth
Пример с middleware verified
Метод hasVerifiedEmail используется внутри middleware
verified для защиты маршрутов. Давайте настроим
маршрут, доступный только подтверждённым пользователям:
<?php
use App\Http\Controllers\DashboardController;
use Illuminate\Support\Facades\Route;
Route::middleware(['auth', 'verified'])->group(function () {
Route::get('/dashboard', [DashboardController::class, 'index']);
});
?>
Теперь доступ к маршруту '/dashboard' будет разрешён
только аутентифицированным пользователям с подтверждённым
email-адресом.
Смотрите также
-
метод
markEmailAsVerified,
который отмечает email пользователя как подтверждённый -
метод
notify,
который отправляет уведомление пользователю -
класс
User,
который представляет модель пользователя -
мидлвар
verified,
который проверяет подтверждение email