如何使用auth命令给定的可重置密码

时间:2019-11-02 19:11:08

标签: laravel

我想在其他控制器中使用重置密码邮件,因为我不知道如何在按钮中为邮件陷阱或电子邮件编码链接。因此,如果有一种方法可以调用相同的重置邮件密码,则可以为我节省一些时间。或者,如果有人可以告诉我如何在另一个邮件功能中编码该链接,我可以

这是我要使用的控制器

public function create()
    {
        $roles = Role::all();
        $addresses = Address::all();
        $user = new User();

        return view('admin.create', compact('roles', 'addresses', 'user'));

    }
    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request)
    {
        $validatedData = $request->validate([
            'address_id' => 'required',
            'name'=> 'required|string|max:255',
            'email' => 'required|string|email|max:255|unique:users',
            'role_id' => 'required',
            'description' =>['max:255'],
        ]);

        $quickpass = substr( str_shuffle( str_repeat( 'abcdefghijklmnopqrstuvwxyz0123456789', 10 ) ), 0, 10 );
        $newuser = User::create([
            'address_id' =>$request->address_id,
            'name'=> $request->name,
            'email' => $request->email,
            'password' => Hash::make($quickpass),
            'role_id' => $request->role_id,
            'description'=> $request->description,
        ]);
        Mail::to($newuser->email)
            ->send(new NewUserPassReset());
    return view('admin.index')->with('message','The user has been created and a password reset email has been sent to them.');
}

NewUserPassReset是我自己创建的可邮寄邮件,仅包含消息但没有链接

现在,我正在使用mailtrap,上面是我的管理员,他是应该为我创建用户的人

我将不胜感激

1 个答案:

答案 0 :(得分:2)

签出Illuminate\Auth\Notifications\ResetPassword.php。 它具有您要查找的网址:

  url(config('app.url').route('password.reset', ['token' => $token, 'email' => $email]))

如您所见,您将需要一个电子邮件和一个令牌来生成重置密码链接。 假设您知道电子邮件,则可以使用Illuminate\Support\Facades\Password外观获取令牌:

$token = \Password::createToken($user)

希望这会有所帮助。