Last active
August 25, 2023 12:33
-
-
Save messi89/489473c053e3ea8d9e034b0032effb1d to your computer and use it in GitHub Desktop.
Laravel Passport - Customize The Token Response
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
/** | |
* Laravel Passport - Customize Token response. | |
* | |
* @author Messi89 OVERGEN <@messi89minou> | |
* @link https://github.com/messi89 | |
*/ | |
namespace App\Http\Controllers\Api; | |
use App\Models\User; | |
use Exception; | |
use Illuminate\Database\Eloquent\ModelNotFoundException; | |
use League\OAuth2\Server\Exception\OAuthServerException; | |
use Psr\Http\Message\ServerRequestInterface; | |
use Response; | |
class AccessTokenController extends \Laravel\Passport\Http\Controllers\AccessTokenController | |
{ | |
public function issueToken(ServerRequestInterface $request) | |
{ | |
try { | |
//get username (default is :email) | |
$username = $request->getParsedBody()['username']; | |
//get user | |
$user = User::where('email', '=', $username)->firstOrFail(); | |
//issuetoken | |
$tokenResponse = parent::issueToken($request); | |
//convert response to json string | |
$content = $tokenResponse->getBody()->__toString(); | |
//convert json to array | |
$data = json_decode($content, true); | |
if(isset($data["error"])) | |
throw new OAuthServerException('The user credentials were incorrect.', 6, 'invalid_credentials', 401); | |
//add access token to user | |
$user = collect($user); | |
$user->put('access_token', $data['access_token']); | |
return Response::json(array($user)); | |
} | |
catch (ModelNotFoundException $e) { // email notfound | |
//return error message | |
} | |
catch (OAuthServerException $e) { //password not correct..token not granted | |
//return error message | |
} | |
catch (Exception $e) { | |
////return error message | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Hi there 👋, Laravel 8.54 with Passport 10.1, nice job Messi!!!