ЛУЧШЕЕ РЕШЕНИЕ - ИСПОЛЬЗУЙТЕ ЭТО ВМЕСТО
Примечание: еще не проверено, если кто-то проверяет это, пожалуйста, дайте мне знать, работает ли оно или нет. Должен, но хочу быть уверен
Вам потребуется реализовать специальное промежуточное ПО, которое вы можете создать с помощью команды artisan:
php artisan make:middleware EnsureEmailIsVerified
EnsureEmailIsVerified.php
<?php
namespace App\Http\Middleware;
use Closure;
use Illuminate\Support\Facades\Redirect;
use Illuminate\Contracts\Auth\MustVerifyEmail;
class EnsureEmailIsVerified
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
if (! $request->user() ||
($request->user() instanceof MustVerifyEmail &&
! $request->user()->hasVerifiedEmail())) {
return $request->expectsJson()
? abort(403, 'YOUR CUSTOM ERROR HERE')
: Redirect::route('verification.notice');
}
return $next($request);
}
}
Вам потребуется сопоставить ключ verified
в файле ядра с новым промежуточным программным обеспечением.
app \ Http \ Kernel.php (внизу):
/**
* The application's route middleware.
*
* These middleware may be assigned to groups or used individually.
*
* @var array
*/
protected $routeMiddleware = [
'auth' => \App\Http\Middleware\Authenticate::class,
'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class,
'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class,
'can' => \Illuminate\Auth\Middleware\Authorize::class,
'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class,
'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
'verified' => \App\Http\Middleware\EnsureEmailIsVerified::class, // the changed line
];
ОРИГИНАЛЬНЫЙ ОТВЕТ
Хорошо, так что я думаю, что я мог бы это выяснить для вас.
Я использовал функцию поиска в блокноте Notepad ++ и просканировал все файлы в моем проекте Laravel на предмет: «Ваш электронный адрес не подтвержден»
Придумано одно совпадение:
\vendor\laravel\framework\src\Illuminate\Auth\Middleware\EnsureEmailIsVerified.php
Что это за файл:
<?php
namespace Illuminate\Auth\Middleware;
use Closure;
use Illuminate\Support\Facades\Redirect;
use Illuminate\Contracts\Auth\MustVerifyEmail;
class EnsureEmailIsVerified
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return \Illuminate\Http\Response|\Illuminate\Http\RedirectResponse
*/
public function handle($request, Closure $next)
{
if (! $request->user() ||
($request->user() instanceof MustVerifyEmail &&
! $request->user()->hasVerifiedEmail())) {
return $request->expectsJson()
? abort(403, 'Your email address is not verified.')
: Redirect::route('verification.notice');
}
return $next($request);
}
}
Я догадываюсь , что если вы измените эту строку: ? abort(403, 'Your email address is not verified.')
То, что вы хотите, чтобы ошибка была, например: ? abort(403, 'Please, verify your email.')
Это будет отображать это. (Пожалуйста, подтвердите это, если попробуете).
Есть одна незначительная проблема с этим решением. Поскольку ваш файл .gitignore
указывает git игнорировать папку vendor, он не будет передан во внешнее хранилище при нажатии.
Вам нужно будет изменить файл .gitignore
. У меня все плохо с Git, и я не знаю, как это сделать. Если кто-то знает, добавьте это как комментарий, и я добавлю это к ответу.
Обновления Laravel также отменят это изменение, поэтому вам придется его переписать, теперь есть лучшее решение в верхней части этого ответа.