PHP 8.0 is now the minimum required version.
Laravel 9.0 is now the minimum required version.
Customizing model database connections through the migration files has been reverted. This was first introduced in this PR.
If you need to customize the database connection for a model you should override the models as explained in the documentation.
Timestamps are now allowed on the Token
model. If you specifically didn't want these model's timestamps to be updated then you may override the Token
model as explained in the documentation.
Passport's routes have been moved to a dedicated route file. You can remove the Passport::routes()
call from your application's service provider.
If you previously relied on overwriting routes using routes($callback = null, array $options = [])
you may now achieve the same behavior by simply overwriting the routes in your application's own web.php
route file.
Previously, a stubbed client created via Passport::actingAsClient(...)
wasn't retrieved when calling the ->client()
method on the API guard. This has been fixed in Passport v11 to reflect real-world situations and you may need to accommodate for this behavior in your tests.
Previously, scopes weren't inherited when using Passport::actingAs(...)
. This has been fixed in Passport v11 to reflect real-world situations and you may need to accommodate for this behavior in your tests.
PHP 7.3 is now the minimum required version.
Laravel 8.0 is now the minimum required version.
The personal client configuration methods have been removed from the Passport
class since they are no longer necessary. You should remove any calls to these methods from your application's service providers.
Passport now has support for multiple guard user providers. Because of this change, you must add a provider
column to the oauth_clients
database table:
If you have not previously published the Passport migrations, you should manually add the provider
column to your database.
Client secrets may now be stored using a Bcrypt hash. However, before enabling this functionality, please consider the following. First, there is no way to reverse the hashing process once you have migrated your existing tokens. Secondly, when hashing client secrets, you will only have one opportunity to display the plain-text value to the user before it is hashed and stored in the database.
Before you continue, you should set your personal access client ID and unhashed secret in your .env
file:
PASSPORT_PERSONAL_ACCESS_CLIENT_ID=client-id-value
PASSPORT_PERSONAL_ACCESS_CLIENT_SECRET=unhashed-client-secret-value
Next, you should register these values by placing the following calls within the boot
method of your AppServiceProvider
:
Passport::personalAccessClientId(config('passport.personal_access_client.id'));
Passport::personalAccessClientSecret(config('passport.personal_access_client.secret'));
Make sure you follow the instructions above before hashing your secrets. Otherwise, irreversible data loss may occur.
You may enable client secret hashing by calling the Passport::hashClientSecrets()
method within the boot
method of your AppServiceProvider
. For convenience, we've included a new Artisan command which you can run to hash all existing client secrets:
php artisan passport:hash
Again, please be aware that running this command cannot be undone. For extra precaution, you may wish to create a backup of your database before running the command.
After a lengthy debate, it was decided to revert the change made in a previous PR that introduced an exception when the client credentials middleware was used to authenticate first party clients.
Internally, Passport will now use the getAuthIdentifier
method to determine a model's primary key. This is consistent with the framework and Laravel's first party libraries.
The deprecated revokeOtherTokens
and pruneRevokedTokens
methods and the revokeOtherTokens
and pruneRevokedTokens
properties were removed from the Passport
object.