Laravel Passport is an authentication package for Laravel. It is used by a lot of Laravel apps to authenticate users before accessing any resources. Basically, it generates an access token
which you can then use on every request to provide identification to the OAuth Server
.
One of Laravel Passport's mostly used authentication methods is the Password Grant Tokens
grant type. It is a stateless way to get access tokens
and refresh tokens
from the OAuth Server
.
Take a look at contributing.md if you want to contribute to this project.
Via Composer
// Install the package and its dependencies
$ composer require luchavez/passport-pgt-server --with-all-dependencies
// Publish the config, migrate Passport tables, and run passport:install
$ php artisan pgt:server:install
-
Run
php artisan migrate
to create the Passport related tables. -
Use Passport's
Laravel\Passport\HasApiTokens
on User model. -
Add these variables to
.env
file if you want to override the default values.
Variable Name | Default Value |
---|---|
PASSPORT_ACCESS_TOKEN_EXPIRES_IN |
15 days |
PASSPORT_REFRESH_TOKEN_EXPIRES_IN |
30 days |
PASSPORT_PERSONAL_ACCESS_TOKEN_EXPIRES_IN |
6 days |
PASSPORT_HASH_CLIENT_SECRETS |
false |
The package provides a service called PassportPgtServer which you can use by calling its helper functions:
passportPgtServer()
passport_pgt_server()
Here's the list of its available methods.
Method Name | Return Type | Description |
---|---|---|
setPassportAsApiDriver |
void |
adds api authentication guard with passport as driver |
setPassportEncryptionKeys |
void |
used for overriding Passport encryption keys |
hashClientSecrets |
bool |
decides whether to hash or not client's secrets |
getTokensExpiresIn |
Illuminate\Support\Carbon |
gets the Carbon datetime for access token expiration |
getRefreshTokensExpiresIn |
Illuminate\Support\Carbon |
gets the Carbon datetime for refresh token expiration |
getPersonalAccessTokensExpiresIn |
Illuminate\Support\Carbon |
gets the Carbon datetime for personal access token expiration |
getTokenModel |
string |
gets the model class name |
getTokenBuilder |
Illuminate\Database\Eloquent\Builder |
gets the model builder instance |
getRefreshTokenModel |
string |
gets the model class name |
getRefreshTokenBuilder |
Illuminate\Database\Eloquent\Builder |
gets the model builder instance |
getPersonalAccessTokenModel |
string |
gets the model class name |
getPersonalAccessTokenBuilder |
Illuminate\Database\Eloquent\Builder |
gets the model builder instance |
getClientModel |
string |
gets the model class name |
getClientBuilder |
Illuminate\Database\Eloquent\Builder |
gets the model builder instance |
By default, laravel/passport
adds authentication related routes. This package adds two new routes: /api/oauth/logout
and /api/oauth/me
.
Here's the list of routes that this package provides.
Method | Route | Description |
---|---|---|
POST | /oauth/token |
Added by laravel/passport . This route generates the tokens. |
GET | /api/oauth/register |
This route is where we register a new user. |
POST | /api/oauth/logout |
This route revokes the current access token with refresh token . |
GET | /api/oauth/me |
This route returns the access token's user information. |
Note: If you wish to override the logout or get self logic, feel free to do so by updating the published passport-pgt-server
config file.
Please see the changelog for more information on what has changed recently.
$ composer test
Please see contributing.md for details and a todolist.
If you discover any security related issues, please email jamescarloluchavez@gmail.com instead of using the issue tracker.
MIT. Please see the license file for more information.