Jimmyjbk
Jimmyjbk

Reputation: 411

How to use the reset password mailable given by auth command

I would like to use the reset password mail but in another controller, for I do not know how to code the link in the button for mailtrap or email. So if there is a way of calling the same reset mail password, It would save me some lines. Or if someone could show me how to code that link in another mail function I am okay

Here is the controller I would like to use

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.');
}

The NewUserPassReset is the mailable I created on my own which has only the message but does not have the link

Right now, I am using mailtrap and above is my admin controller and he is the one who supposed to create user for me

I will kindly appreciate any help

Upvotes: 0

Views: 110

Answers (1)

Pavel Lint
Pavel Lint

Reputation: 3537

Check out Illuminate\Auth\Notifications\ResetPassword.php. It has the url that you're looking for:

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

As you see, you'll need an email and a token to generate the reset password link. Assuming you know the email, you can obtain the token with the Illuminate\Support\Facades\Password facade:

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

Hope this helps.

Upvotes: 2

Related Questions