Новый зарегистрированный пользователь будет перенаправлен на экран сброса пароля

Я довольно новичок в 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);

    }
}
Другие вопросы по тегам