mercredi 10 juillet 2019

Argument 1 passed to Illuminate\Auth\SessionGuard::attempt() must be of the type array, object given, called in

I have the controllers below to allow the user login with laravel auth system But when the user clicks in the button "Login" it appears this error:

Argument 1 passed to Illuminate\Auth\SessionGuard::attempt() must be of the type array, object given, called in C:\laragon\www\AGRIAPP\projet investisseur\AgriApp_Investor\AgriAppInvestor\vendor\laravel\framework\src\Illuminate\Foundation\Auth\AuthenticatesUsers.php on line 82

and when I refresh the page I log in so I wanted to solve this problem

According to the documentation, the attempt function takes an array and a bool

LoginController.php

public function __construct()
{
    $this->middleware('guest')->except('logout');
}

public function showLoginForm(){

    return view('auth.login');
}


protected function credentials(Request $request)
{
    $credentials = array(
        'slug' => $request->slug,
        'password' => $request->password,
        'statut' => 1,
    );
    if(Auth::attempt( $credentials,false ))
    {
        return Redirect::to( '/admin/home' );
    }
}


public function username()
{
    return 'slug';
}

protected function authenticated()
{
    $user = auth()->user();
    $user->online = true;
    $user->save();

    if ($user->rule->pluck( 'name' )->contains( 'abonne' )) {
        return Redirect::to( '/admin-dashboard' );
    }

    return Redirect::to( '/admin/home' );
}

public function logout()
{
    $user = Auth::user();
    $user->online=false;
    $user->save();
    Auth::logout();
    return redirect('/');
}}

AuthController.php

 protected function attemptLogin(Request $request)
{
    return $this->guard()->attempt(
        $this->credentials($request), $request->filled('remember')
    );
}

/**
 * Get the needed authorization credentials from the request.
 *
 * @param  \Illuminate\Http\Request  $request
 * @return array
 */
protected function credentials(Request $request)
{
    return $request->only($this->username(), 'password');
}



via Chebli Mohamed

Aucun commentaire:

Enregistrer un commentaire