0

NOTE: This is laravel 5.4, it does not just use PHP mail(). So this is not duplicate.

I'm trying to apply the laravel reset password system. However, I can't make it to work. The mailing system works, my contact form can send mail. However, the reset password always fails to send. My guess is because my user email field called username.

So my users table credential is using username and password, instead of email.

This is my route

// Only unauthenticated users
Route::group(['middleware' => 'guest', 'namespace' => 'Guest'], function() {

Route::post('auth/password-reset-request',  'ForgotPasswordController@sendResetLinkEmail');
Route::post('auth/password-reset',          'ResetPasswordController@reset');
Route::post('auth/login',                   'UserController@login');

Route::get('forgot-password',           'ForgotPasswordController@NewPasswordRequestForm')
                                            ->name('password.request');
Route::get('make-new-password/{token}', 'ResetPasswordController@showResetForm')
                                            ->name('password.reset');
Route::get('login',                         'UserController@getLogin');
});

And this is the controller

namespace App\Http\Controllers\Guest;
use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\SendsPasswordResetEmails;
use Illuminate\Http\Request;
use App\Helpers\ViewHelper;

class ForgotPasswordController extends Controller{

use SendsPasswordResetEmails;

/**
 * Display the form to request a password reset link.
 *
 * @return \Illuminate\Http\Response
 */
public function showLinkRequestForm()
{
    return view('emails.passwords');
}

/**
 * Send a reset link to the given user.
 *
 * @param  \Illuminate\Http\Request  $request
 * @return \Illuminate\Http\RedirectResponse
 */
public function sendResetLinkEmail(Request $request)
{
    $this->validateUsername($request);

    // We will send the password reset link to this user. Once we have attempted
    // to send the link, we will examine the response then see the message we
    // need to show to the user. Finally, we'll send out a proper response.
    $response = $this->broker()->sendResetLink(
        $request->only('username')
    );
    
    return $response == \Password::RESET_LINK_SENT
                ? $this->sendResetLinkResponse($response)
                : $this->sendResetLinkFailedResponse($request, $response);
}

/**
 * Validate the email for the given request.
 *
 * @param \Illuminate\Http\Request  $request
 * @return void
 */
protected function validateUsername(Request $request)
{
    $this->validate($request, ['username' => 'required|email']);
}

/**
 * Get the response for a failed password reset link.
 *
 * @param  \Illuminate\Http\Request
 * @param  string  $response
 * @return \Illuminate\Http\RedirectResponse
 */
protected function sendResetLinkFailedResponse(Request $request, $response)
{
    return back()->withErrors(
        ['username' => trans($response)]
    );
}

/**
 * Get the response for a successful password reset link.
 *
 * @param  string  $response
 * @return \Illuminate\Http\RedirectResponse
 */
protected function sendResetLinkResponse($response)
{
    return back()->with('success_msg', trans($response));
}

And the blade form

{!! Form::open(['url' => 'auth/password-reset-request', 'method' => 'POST', 'id' => 'form-hypotheek-afsluiten', 'class' => 'reg-page']) !!}
                @if($errors->any())
                    <div class="alert alert-danger fade in alert-dismissable">
                        <button type="button" class="close" data-dismiss="alert" aria-hidden="true">&times;</button>
                        {!! $errors->first() !!}
                    </div>
                @endif
                @include('layout.formalert')
                <div class="input-group margin-bottom-20">
                    <span class="input-group-addon"><i class="fa fa-user"></i></span>
                    <input type="text" name="username" class="form-control">
                    @if($errors->has('email'))
                    {!! $errors->first('email', '<em for="email" class="invalid">:message</em>') !!}
                    @endif
                </div>
                
                <div class="row">
                    <div class="col-md-12">
                        <button class="btn-u pull-right" type="submit">Request new password</button>
                    </div>
                </div>
            {!! Form::close() !!}

It keeps giving me success, but no e-mail were sent, which made me so upset. No errors, no e-mails.

Could someone see what I do wrong?

vvvvv
  • 25,404
  • 19
  • 49
  • 81
ayok
  • 31
  • 9

0 Answers0