我对Laravel很陌生并且已经被困了2天了 - 我会感激一些指导。
我正在使用Laravel 5.3的默认开箱即用用户身份验证系统。现有管理员用户在幕后自动创建新用户 - 我将及时隐藏用户注册页面。我还成功设置了中间件来检查用户是否是新注册的(通过查找我已添加到迁移中的null'last_logged_in_date')。
我想要发生的一切是将新注册用户重定向到Laravel附带的密码重置屏幕(再次,我将创建一个专用页面)。我希望这发生在中间件文件中。到目前为止,我的中间件看起来像这样:
iterate
我不确定在上面的评论所指示的位置输入什么代码。我试过sendResetLinkEmail($ request);等,并导入我虽然是正确的类但我总是最终调用未定义的函数App \ Http \ Middleware \ sendResetLinkEmail()消息,无论我在我的班级顶部使用什么。
我哪里错了?谢谢!
答案 0 :(得分:0)
这是因为您还没有定义
调用特征SendsPasswordResetEmails,然后使用sendResetLinkEmail($request)
功能。您可以这样做,或者您可以使用它创建一个新类,然后调用该类。$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);
}
}