2016-11-19 2 views
0

Я довольно новичок в Laravel и был в тупике по проблеме в течение 2 дней - я был бы признателен за некоторые рекомендации.Новый зарегистрированный пользователь, который будет перенаправлен на экран сброса пароля

Я использую стандартную систему аутентификации пользователей по умолчанию с Laravel 5.3. Новый пользователь создается автоматически за кулисами существующего пользователя Admin - я со временем скрою страницу регистрации пользователя. Я также успешно установил промежуточное программное обеспечение, чтобы проверить, зарегистрирован ли пользователь (просмотрев нулевой «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() независимо от того, что я использую в верхней части моего класса.

Куда я иду не так? Благодаря!

+0

Вы можете отправить код, который дает вам ошибку? Я имею в виду код, в котором вы используете функцию sendResetLinkEmail и то, что вы используете сверху – xhulio

+0

Спасибо за ваш ответ. Я думаю, что моя последняя попытка заключалась в использовании sendResetLinkEmail ($ request) с использованием App \ Http \ Controllers \ Auth наверху ... – Ows

ответ

0

Ну, это происходит потому, что вы еще не определили свою функцию 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); 

    } 
} 
+0

Спасибо, но Laravel уже дает вам код для функции SendResetLinkEmail - я считаю, что это TRAIT. Я просто не могу для жизни меня ссылаться на это из моего промежуточного программного обеспечения ... – Ows

+0

@ Вы пытались использовать SendsPasswordResetEmails' поверх своего промежуточного программного обеспечения? установите его после объявления класса – xhulio

+0

@ О, я отредактировал мой вопрос. Надеюсь, он поможет – xhulio

Смежные вопросы