lundi 23 avril 2018

How can I make JWTAuth serve different user types?

I have this working method to log user in:

// Authenticate Business User
public function authBU() {

    $this->validate( request(), [
        'provider' => 'required',
        'token'    => 'required',
    ] );    
    $user = JWTAuth::authenticate(request( 'token' ));

    return $this->buildItemResponse( $user, new UserLoginTransformer() );
}

it returns from the User table, However, I need it to look into the BusinessUser table.

I have already setup bsuiness_users in auth.php

'guards' => [
        'web' => [
            'driver'   => 'session',
            'provider' => 'users',
        ],

        'api' => [
            'driver'   => 'token',
            'provider' => 'users',
        ],

        'business_api' => [
            'driver'   => 'passport',
            'provider' => 'business_users',
        ],
    ],


'providers' => [
        'users' => [
            'driver' => 'eloquent',
            'model'  => \App\Services\Users\User::class,
        ],

        'business_users' => [
            'driver' => 'eloquent',
            'model' => \App\Services\Users\BusinessUser::class,
        ],
    ],

How can I get JWTAuth::authenticate(request( 'token' )); to return a BusinessUser without editing vendor code?

This is the method in JWTAuth.php

/**
 * Authenticate a user via a token.
 *
 * @param mixed $token
 *
 * @return mixed
 */
public function authenticate($token = false)
{
    $id = $this->getPayload($token)->get('sub');

    if (! $this->auth->byId($id)) {
        return false;
    }

    return $this->auth->user();
}



from Newest questions tagged laravel-5 - Stack Overflow https://ift.tt/2qWJUe7
via IFTTT

Aucun commentaire:

Enregistrer un commentaire