Новый зарегистрированный пользователь будет перенаправлен на экран сброса пароля
Я довольно новичок в Laravel и был наведен на проблему в течение 2 дней - я был бы благодарен за некоторое руководство.
Я использую стандартную систему аутентификации пользователя с Laravel 5.3. Новый пользователь автоматически создается за кулисами существующим пользователем-администратором - я вовремя скрою страницу регистрации пользователя. Я также успешно настроил промежуточное программное обеспечение, чтобы проверить, был ли пользователь недавно зарегистрирован (ища ноль 'last_logged_in_date', который я добавил в миграцию).
Все, что я хочу, это чтобы новый зарегистрированный пользователь был перенаправлен на экран сброса пароля, который поставляется вместе с Laravel (опять же, со временем я создам отдельную страницу). Я хотел бы, чтобы это произошло в файле промежуточного программного обеспечения. Пока что мое промежуточное ПО выглядит так:
<?php
namespace App\Http\Middleware;
use Closure;
use App\Http\Controllers\Auth;
class CheckIfNewUser
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
$user = $request->user();
if (! is_null($user->last_logged_in_date )) {
return $next($request);
}
// This is where I'm stuck!!!
}
}
Я не уверен, какой код вводить в месте, указанном в комментариях выше. Я пробовал sendResetLinkEmail($request); и т. д. и импортировали то, что я считал правильными классами, но я всегда получаю сообщение "Вызов неопределенной функции" App\Http\Middleware\sendResetLinkEmail() независимо от того, что я "использую" в верхней части моего класса.
Куда я иду не так? Спасибо!
1 ответ
Ну, это происходит потому, что вы не определили sendResetLinkEmail($request)
функционировать еще. Вы можете сделать это так, или вы можете создать новый класс с этим, а затем вызвать класс. Вызовите признак SendsPasswordResetEmails, а затем получите к нему доступ $this
так как черты не являются классами, и вы не можете получить доступ к их членам напрямую.
<?php
namespace App\Http\Middleware;
use Closure;
use App\Http\Controllers\Auth;
use Illuminate\Foundation\Auth\SendsPasswordResetEmails;
class CheckIfNewUser
{
use SendsPasswordResetEmails;
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
$user = $request->user();
if (! is_null($user->last_logged_in_date )) {
return $next($request);
}
// This is where I'm stuck!!!
//EDIT
//return $this->SendsPasswordResetEmails->sendResetLinkEmail($request);
return $this->sendResetLinkEmail($request);
}
}