#Extremely stupid PHP question about inheritance

3 messages · Page 1 of 1 (latest)

rugged sonnet
#

I have created a form request called FortifyLoginRequest which extends Laravel\Fortify\Http\Requests\LoginRequest

When I try to use it with Fortify's authenticateUsing() method, I get this error:

App\Providers\FortifyServiceProvider::App\Providers\{closure}(): Argument #1 ($request) must be of type App\Http\Requests\FortifyLoginRequest, Laravel\Fortify\Http\Requests\LoginRequest given

Am I going crazy? Shouldn't extending Fortify's base class make it an instance that would pass that level of scrutiny?

My entire form request for posterity:

<?php

namespace App\Http\Requests;

use Laravel\Fortify\Fortify;
use Laravel\Fortify\Http\Requests\LoginRequest;
use Rahul900day\Captcha\Facades\Captcha;

class FortifyLoginRequest extends LoginRequest
{
    public function authorize(): bool
    {
        return true;
    }

    public function rules(): array
    {
        return [
            Fortify::username() => ['required', 'string'],
            'password' => ['required', 'string'],
            Captcha::getResponseName() => ['required', 'captcha'],
        ];
    }
}
#

Also for posterity, here is how I'm attempting to use it:

Fortify::authenticateUsing(function (FortifyLoginRequest $request) {
    $user = User::where('email', $request->email)->first();

    if ($user && Hash::check($request->password, $user->password)) {
        return $user;
    }
});
steep mulch