Skip to content
Advertisement

How do I authenticate a user in Laravel 8 Jetstream only if his status is active?

I am building a Laravel 8 application and have successfully implemented authentication. Now I want to check if a user’s status is active before logging him in. I have added a field in the users table

username varchar
password varchar
....
status tinyint(1)
...

I am using JetStream and Fortify

Thank You

Advertisement

Answer

You can customize user authentication from appProvidersJetStreamServiceProvider.php, on boot method :

use AppModelsUser;
use IlluminateHttpRequest;
use LaravelFortifyFortify;

public function boot()
{
    $this->configurePermissions();

    Jetstream::createTeamsUsing(CreateTeam::class);
    Jetstream::updateTeamNamesUsing(UpdateTeamName::class);
    Jetstream::addTeamMembersUsing(AddTeamMember::class);
    Jetstream::deleteTeamsUsing(DeleteTeam::class);
    Jetstream::deleteUsersUsing(DeleteUser::class);
    // Below code is for your customization
    Fortify::authenticateUsing(function (Request $request) {
        $user = User::where('email', $request->email)->first();

       if ($user && Hash::check($request->password, $user->password)) {
            if ($user->status == 1) {  // it will return if status == 1
                 return $user;
            }
       }

    });
}

See the official Jetstream documentation of Customizing User Authentication

User contributions licensed under: CC BY-SA
3 People found this is helpful
Advertisement