Laravel JWT Auth get user on Login

You can get logged user data.

$credentials = $request->only('code', 'password', 'mobile');
try {
    // verify the credentials and create a token for the user
    if (! $token = JWTAuth::attempt($credentials)) {
        return response()->json(['error' => 'invalid_credentials'], 401);
    }
} catch (JWTException $e) {
    // something went wrong
    return response()->json(['error' => 'could_not_create_token'], 500);
}

$currentUser = Auth::user();
print_r($currentUser);exit;

You don't need Auth::user();

You can use the toUser method of JWTAuth. Just pass the token as parameter and you will get back the user info:

$user = JWTAuth::toUser($token);

return response()->json(compact('token', 'user'));

For more info, this is the toUser method:

/**
 * Find a user using the user identifier in the subject claim.
 *
 * @param bool|string $token
 *
 * @return mixed
 */

public function toUser($token = false)
{
    $payload = $this->getPayload($token);

    if (! $user = $this->user->getBy($this->identifier, $payload['sub'])) {
        return false;
    }

    return $user;
}

Tags:

Php

Jwt

Laravel 5