laravel-bifrost-bridge maintained by etsvthor
Description
Connect a laravel application with the Bifrost oauth2 server
Authors
Last update
2026/10/12 15:40
(1.x-dev)
License
Downloads
3 957
Last update
2026/10/12 15:40
License
Require
- php ~8.3.0 | ~8.4.0 | ~8.5.0
- spatie/laravel-permission ^6.0 | ^7.0
- laravel/framework ^11.4.1 | ^12.19.3
- laravel/socialite ^5.1
- spatie/laravel-data ^4.0
Last update
2026/10/12 15:40
License
Require
- php ~8.3.0 | ~8.4.0 | ~8.5.0
- spatie/laravel-permission ^6.0 | ^7.0
- laravel/framework ^11.4.1 | ^12.19.3
- laravel/socialite ^5.1
- spatie/laravel-data ^4.0
Last update
2026/10/12 15:40
License
Require
- laravel/socialite ^5.1
- spatie/laravel-data ^4.0
- php ~8.3.0 | ~8.4.0 | ~8.5.0
- spatie/laravel-permission ^6.0 | ^7.0 | ^8.0
- laravel/framework ^12.19.3 | ^13.0
Last update
2026/10/12 15:40
License
Require
- php ~8.3.0 | ~8.4.0 | ~8.5.0
- spatie/laravel-permission ^6.0 | ^7.0 | ^8.0
- laravel/framework ^12.19.3 | ^13.0
- laravel/socialite ^5.1
- spatie/laravel-data ^4.0
Last update
2026/09/29 17:07
License
Require
- php ~8.3.0 | ~8.4.0 | ~8.5.0
- spatie/laravel-permission ^6.0 | ^7.0 | ^8.0
- laravel/framework ^12.19.3 | ^13.0
- laravel/socialite ^5.1
- spatie/laravel-data ^4.0
Last update
2026/08/28 14:05
License
Require
- php ~8.3.0 | ~8.4.0 | ~8.5.0
- spatie/laravel-permission ^6.0 | ^7.0 | ^8.0
- laravel/framework ^12.19.3 | ^13.0
- laravel/socialite ^5.1
- spatie/laravel-data ^4.0
Last update
2026/08/16 15:44
License
Require
- php ~8.3.0 | ~8.4.0 | ~8.5.0
- spatie/laravel-permission ^6.0 | ^7.0 | ^8.0
- laravel/framework ^12.19.3 | ^13.0
- laravel/socialite ^5.1
- spatie/laravel-data ^4.0
Last update
2026/03/02 11:52
License
Require
- php ~8.3.0 | ~8.4.0 | ~8.5.0
- spatie/laravel-permission ^6.0 | ^7.0
- laravel/framework ^11.4.1 | ^12.19.3
- laravel/socialite ^5.1
- spatie/laravel-data ^4.0
Last update
2025/08/02 00:37
License
Require
- php ~8.1.0 | ~8.2.0 | ~8.3.0 | ~8.4.0
- spatie/laravel-permission ^4.0 | ^5.0 | ^6.0
- laravel/framework ^10.0 | ^11.4.1 | ^12.19.3
- laravel/socialite ^5.1
- spatie/laravel-data ^4.0
Last update
2025/08/01 23:08
License
Require
- php ~8.1.0 | ~8.2.0 | ~8.3.0 | ~8.4.0
- spatie/laravel-permission ^4.0 | ^5.0 | ^6.0
- laravel/framework ^10.0 | ^11.4.1 | ^12.19.3
- laravel/socialite ^5.1
- spatie/laravel-data ^4.0
Last update
2025/07/03 21:50
License
Require
- php ~8.1.0 | ~8.2.0 | ~8.3.0
- spatie/laravel-permission ^4.0 | ^5.0 | ^6.0
- laravel/framework ^10.0 | ^11.4.1 | ^12.19.3
- laravel/socialite ^5.1
- spatie/laravel-data ^4.0
Last update
2025/04/04 12:54
License
Require
- php ~8.1.0 | ~8.2.0 | ~8.3.0
- spatie/laravel-permission ^4.0 | ^5.0 | ^6.0
- laravel/framework ^10.0 | ^11.4.1
- laravel/socialite ^5.1
- spatie/laravel-data ^4.0
Last update
2025/03/26 13:24
License
Require
- php ~8.1.0 | ~8.2.0 | ~8.3.0
- spatie/laravel-permission ^4.0 | ^5.0 | ^6.0
- laravel/framework ^10.0 | ^11.4.1
- laravel/socialite ^5.1
- spatie/laravel-data ^4.0
Last update
2025/03/26 13:12
License
Require
- php ~8.1.0 | ~8.2.0 | ~8.3.0
- spatie/laravel-permission ^4.0 | ^5.0 | ^6.0
- laravel/framework ^10.0 | ^11.4.1
- laravel/socialite ^5.1
- spatie/laravel-data ^4.0
Last update
2024/07/03 10:58
License
Require
- php ~8.1.0 | ~8.2.0 | ~8.3.0
- spatie/laravel-permission ^4.0 | ^5.0 | ^6.0
- laravel/framework ^10.0 | ^11.0
- laravel/socialite ^5.1
- spatie/laravel-data ^4.0
Last update
2024/04/18 20:33
License
Require
- php ~8.1.0 | ~8.2.0 | ~8.3.0
- spatie/laravel-permission ^4.0 | ^5.0 | ^6.0
- laravel/framework ^10.0 | ^11.0
- laravel/socialite ^5.1
- spatie/laravel-data ^4.0
Last update
2024/03/23 14:42
License
Require
- php ~8.1.0 | ~8.2.0 | ~8.3.0
- spatie/laravel-permission ^4.0 | ^5.0 | ^6.0
- laravel/framework ^9.0 | ^10.0 | ^11.0
- laravel/socialite ^5.1
- spatie/laravel-data ^3.9 | ^4.0
Last update
2024/03/23 12:47
License
Require
- php ~8.1.0 | ~8.2.0 | ~8.3.0
- spatie/laravel-permission ^4.0 | ^5.0 | ^6.0
- laravel/framework ^9.0 | ^10.0 | ^11.0
- laravel/socialite ^5.1
- spatie/laravel-data ^3.9 | ^4.0
Last update
2023/12/04 12:11
License
Require
- php ~8.1.0 | ~8.2.0 | ~8.3.0
- spatie/laravel-permission ^4.0|^5.0|^6.0
- laravel/framework ^9.0 | ^10.0
- laravel/socialite ^5.1
- spatie/laravel-data ^3.9
Last update
2023/03/03 14:10
License
Require
- php ~8.0.0 | ~8.1.0 | ~8.2.0
- spatie/data-transfer-object ^3.9
- spatie/laravel-permission ^3.18|^4.0|^5.0
- laravel/framework ^8.0 | ^9.0 | ^10.0
- laravel/socialite ^5.1
Last update
2023/02/23 15:11
License
Require
- php ~8.0.0 | ~8.1.0
- spatie/data-transfer-object ^3.9
- spatie/laravel-permission ^3.18|^4.0|^5.0
- laravel/framework ^8.0 | ^9.0 | ^10.0
- laravel/socialite ^5.1
Last update
2022/09/30 16:56
License
Require
- php ~8.0.0 | ~8.1.0
- spatie/data-transfer-object ^3.9
- spatie/laravel-permission ^3.18|^4.0|^5.0
- laravel/framework ^8.0 | ^9.0
- laravel/socialite ^5.1
Last update
2022/06/29 12:09
License
Require
- php ^7.4 | ~8.0.0 | ~8.1.0
- spatie/data-transfer-object ^2.6
- spatie/laravel-permission ^3.18|^4.0|^5.0
- laravel/framework ^6.18 | ^8.0 | ^9.0
- laravel/socialite ^5.1
Last update
2022/05/30 23:34
License
Require
- php ^7.4 | ~8.0.0 | ~8.1.0
- spatie/data-transfer-object ^2.6
- spatie/laravel-permission ^3.18|^4.0|^5.0
- laravel/framework ^6.18 | ^8.0 | ^9.0
- laravel/socialite ^5.1
Last update
2021/12/15 00:54
License
Require
- php ^7.4 | ~8.0.0 | ~8.1.0
- spatie/data-transfer-object ^2.6
- spatie/laravel-permission ^3.18|^4.0|^5.0
- laravel/framework ^6.18 | ^7.0 | ^8.0
- laravel/socialite ^5.1
Last update
2021/12/14 23:18
License
Require
- php ^7.4 | ~8.0.0 | ~8.1.0
- spatie/data-transfer-object ^2.6
- spatie/laravel-permission ^3.18
- laravel/framework ^6.18 | ^7.0 | ^8.0
- laravel/socialite ^5.1
Last update
2021/12/14 22:01
License
Require
- php ^7.4 | ^8.0
- spatie/data-transfer-object ^2.6
- spatie/laravel-permission ^3.18
- laravel/framework ^6.18 | ^7.0 | ^8.0
- laravel/socialite ^5.1
Last update
2021/08/02 09:53
License
Require
- php ^7.4 | ~8.0.0
- spatie/data-transfer-object ^2.6
- spatie/laravel-permission ^3.18
- laravel/framework ^6.18 | ^7.0 | ^8.0
- laravel/socialite ^5.1
Last update
2021/08/01 01:24
License
Require
- php ^7.4 | ~8.0.0
- spatie/data-transfer-object ^2.6
- spatie/laravel-permission ^3.18
- laravel/framework ^6.18 | ^7.0 | ^8.0
- laravel/socialite ^5.1
Last update
2021/05/31 16:49
License
Require
- php ^7.4 | ~8.0.0
- spatie/data-transfer-object ^2.6
- spatie/laravel-permission ^3.18
- laravel/framework ^6.18 | ^7.0 | ^8.0
- laravel/socialite ^5.1
Last update
2021/01/02 11:07
License
Require
- php ^7.4 | ~8.0.0
- spatie/data-transfer-object ^2.6
- spatie/laravel-permission ^3.18
- laravel/framework ^6.18 | ^7.0 | ^8.0
- laravel/socialite ^5.1
Last update
2020/12/22 00:15
License
Require
- php ^7.4 | ~8.0.0
- spatie/data-transfer-object ^2.6
- spatie/laravel-permission ^3.18
- laravel/framework ^6.18 | ^7.0 | ^8.0
- laravel/socialite ^5.1
Last update
2020/12/21 17:46
License
Require
- php ^7.4 | ~8.0.0
- socialiteproviders/laravelpassport ^4.1
- spatie/data-transfer-object ^2.6
- spatie/laravel-permission ^3.18
- laravel/framework ^6.18 | ^7.0 | ^8.0
Last update
2020/12/20 20:13
Require
- php ^7.4 | ~8.0.0
- socialiteproviders/laravelpassport ^4.1
- spatie/data-transfer-object ^2.6
- spatie/laravel-permission ^3.18
- laravel/framework ^6.18 | ^7.0 | ^8.0
Last update
2020/12/20 19:59
Require
- php ^7.4 | ~8.0.0
- socialiteproviders/laravelpassport ^4.1
- spatie/data-transfer-object ^2.6
- spatie/laravel-permission ^3.18
- laravel/framework ^6.18 | ^7.0 | ^8.0
Last update
2020/12/19 20:52
Require
- php ^7.4 | ~8.0.0
- socialiteproviders/laravelpassport ^4.1
- spatie/data-transfer-object ^2.6
- spatie/laravel-permission ^3.18
- laravel/framework ^6.18 | ^7.0 | ^8.0
Last update
2020/12/19 18:38
Require
- php ^7.4 | ~8.0.0
- socialiteproviders/laravelpassport ^4.1
- spatie/data-transfer-object ^2.6
- spatie/laravel-permission ^3.18
- laravel/framework ^6.18 | ^7.0 | ^8.0
Last update
2020/12/19 18:22
Require
- php ^7.4 | ~8.0.0
- socialiteproviders/laravelpassport ^4.1
- spatie/data-transfer-object ^2.6
- spatie/laravel-permission ^3.18
- laravel/framework ^6.18 | ^7.0 | ^8.0
laravel-bifrost-bridge
Connect a laravel application with the Bifrost
Installation
First, install spatie/laravel-permission, follow their installation guide
You can then install the package via composer:
composer require etsvthor/laravel-bifrost-bridge
You can publish the config file of bifrost and the underlying spatie permissions config+migrations with:
php artisan vendor:publish --provider="EtsvThor\\BifrostBridge\\BifrostBridgeServiceProvider" --tag="bifrost-config"
- Ensure the
usershas aoauth_user_idandemail_verified_atcolumn. - In the
Usermodel, castemail_verified_attodatetimeand add theHasRolestrait. - (only laravel <11) Please add
'webhooks/bifrost'to the CSRF exceptions inApp\Http\Middleware\VerifyCsrfTokenclass
Environment
Add the following to your .env file and fill them in:
# Required configuration
BIFROST_ENABLED=true
BIFROST_CLIENT_ID=
BIFROST_CLIENT_SECRET=
BIFROST_AUTH_PUSH_KEY=
# Optional configuration with its defaults
BIFROST_REDIRECT_URL="/login/callback"
BIFROST_HOST="https://bifrost.thor.edu"
BIFROST_ROUTE_PREFIX=
Configuration
In the configuration file, one can specify some thing about the user model, but have some sensible defaults
See config/bifrost.php for all options.
Make sure to seed all required roles, otherwise they will not sync
Resolvers
The User and Role model can be resolved using a custom resolver
use Spatie\Permission\Models\Role;
use Illuminate\Database\Eloquent\Model as EloquentModel;
// Default behaviour
BifrostBridge::resolveUserClassUsing(function(/* auto injection works here */): EloquentModel {
return app(config('bifrost.user.model', 'App\\Models\\User'));
});
// Default behaviour
BifrostBridge::resolveRoleClassUsing(function(/* auto injection works here */): Role {
return app(PermissionRegistrar::class)->getRoleClass();
});
// Disabled role sync
BifrostBridge::resolveRoleClassUsing(fn() => null);
// Override the way a user is resolved
BifrostBridge::resolveAndUpdateUserUsing(function(/* auto injection works here */, BifrostUserData $data): ?EloquentModel {
// Model should implement \Illuminate\Contracts\Auth\Authenticatable
return null; // when null is returned, the user is not logged in
})
CSRF (laravel <11 only)
Don't forget to add 'webhooks/bifrost' to the $except array in App\Http\Middleware\VerifyCsrfToken.php.