vendredi 11 mars 2016

Laravel 5.2 login always throws "These credentials do not match our records."

I am trying to implement authentification using Laravel 5.2. I have been on this for hours, but I always get "These credentials do not match our records." when attempting to login. I have tried messing with the routes, adjusting password collumn size in users table, trying custom login validator etc. Just cannot get it to work.

This is how I made my users table via migration:

Notes:

  1. I have to use raw statements for a school project.
  2. Laravel suggests password fields need to be 60 characters (tried even 100 already)
  3. Laravel requires 100 char collumn for remember_token

    DB::statement("CREATE TABLE users(
      id INT PRIMARY KEY AUTO_INCREMENT,
      firstname VARCHAR(50) NOT NULL,
      lastname VARCHAR(50) NOT NULL,
      password VARCHAR(60) NOT NULL,
      email VARCHAR(255) UNIQUE NOT NULL,
      bio VARCHAR(500),
      gender ENUM('F','M') NOT NULL,
      birthday DATE NOT NULL,
      created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
      updated_at TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
      level INT DEFAULT 0,
      remember_token VARCHAR(100)
    )");
    
    

Here is my login form:

<form method="POST" action="login">
{!! csrf_field() !!}
<table>
  <tr>
    <td> <label for="email">E-mail: </label>  </td>
    <td>  <input type="email" name="email" value="{{ old('email') }}">  </td>
  </tr>
  <tr>
    <td> <label for="password">Password: </label>  </td>
    <td> <input type="password" name="password" id="password">  </td>
  </tr>
  <tr>
    <td> <label for="remember">Remember me: </label>  </td>
    <td> <input type="checkbox" name="remember">  </td>
  </tr>
</table>
<div>
    <button type="submit">Login</button>
</div>
</form>

My routes:

Route::group(['middleware' => ['web']], function () {
  Route::get('registration', 'MainController@getRegister');
  Route::get('login', 'MainController@getLogin');
  Route::get('logout', 'Auth\AuthController@logout');
  Route::post('registration', 'Auth\AuthController@postRegister');
  Route::post('login', 'Auth\AuthController@postLogin');
});

Route::group(['middleware' => ['auth','web']], function () {
  Route::get('/', 'MainController@getIndex');
});

AuthController class:

class AuthController extends Controller
{
    use AuthenticatesAndRegistersUsers, ThrottlesLogins;

    /**
     * Where to redirect users after login / registration.
     *
     * @var string
     */
     protected $redirectTo = '/';
     protected $loginPath = 'login';

    /**
     * Create a new authentication controller instance.
     *
     * @return void
     */
    public function __construct()
    {
        $this->middleware('web', ['except' => 'logout']);
    }

    /**
     * Get a validator for an incoming registration request.
     *
     * @param  array  $data
     * @return \Illuminate\Contracts\Validation\Validator
     */
    protected function validator(array $data)
    {
        return Validator::make($data, [
            'firstname' => 'required|max:50',
            'lastname' => 'required|max:50',
            'email' => 'required|email|max:255|unique:users',
            'password' => 'required|confirmed|min:6',
            'birthday' => 'required',
            'gender' => 'required'
        ]);
    }



    /**
     * Create a new user instance after a valid registration.
     *
     * @param  array  $data
     * @return User
     */
    protected function create(array $data)
    {
        return User::create([
            'firstname' => $data['firstname'],
            'lastname' => $data['lastname'],
            'birthday' => $data['birthday'],
            'gender' => $data['gender'],
            'email' => $data['email'],
            'password' => bcrypt($data['password']),
        ]);
    }

    protected function logout(){
      if (Auth::check()){
        Auth::logout();
      }
      return redirect('login');
    }
}



via Chebli Mohamed

Aucun commentaire:

Enregistrer un commentaire