Installation
composer require n3xt0r/filament-passport-ui
Publish the config (if needed):
php artisan vendor:publish --provider="N3XT0R\FilamentPassportUI\FilamentPassportUIServiceProvider" --tag="config"
Register the Plugin
Add to app/Providers/Filament/AdminPanelProvider.php:
public function panel(Panel $panel): Panel
{
return $panel
->plugins([
\N3XT0R\FilamentPassportUI\FilamentPassportUIPlugin::make(),
]);
}
First Use Case
Access /admin/resources/passport to manage OAuth2 clients, tokens, and scopes via Filament’s UI. No manual resource creation—just install and go.
Client Management
name, redirect, personal_access_client, and password_client.Token Auditability
user_id, client_id, revoked_at) to track suspicious activity.Scope Customization
php artisan vendor:publish --tag="filament-passport-ui-config"
Then modify config/filament-passport-ui.php under scopes.Integration with Filament Policies
public static function getPages(): array
{
return [
'clients' => [
'create' => 'create-passport-clients',
'edit' => 'update-passport-clients',
'revoke' => 'revoke-passport-tokens',
],
];
}
API Token Generation
use N3XT0R\FilamentPassportUI\Actions\GeneratePersonalAccessToken;
Passport Configuration Conflict
config/auth.php includes Passport’s providers:
'providers' => [
'users' => [
'driver' => 'eloquent',
'model' => App\Models\User::class,
],
'passport' => [
'driver' => 'passport',
],
],
php artisan passport:install if missing.Missing Migrations
php artisan migrate
Scope Visibility
config/filament-passport-ui.php must match those in your Passport scope table.use Laravel\Passport\ClientRepository;
$scopes = config('filament-passport-ui.scopes');
foreach ($scopes as $scope) {
\Laravel\Passport\Scope::firstOrCreate(['id' => $scope]);
}
Filament 4 vs. 5 Quirks
filament/passport-ui:4.x branch if downgrading.filament/filament:^5.0 is installed (package is v5-compatible by default).Token Not Showing?
revoked_at is null (soft-deleted tokens are hidden by default). Override in the config:
'tables' => [
'tokens' => [
'show_soft_deleted' => true,
],
],
Permission Denied
passport middleware is registered in app/Http/Kernel.php:
'api' => [
\Laravel\Passport\Http\Middleware\CreateFreshApiToken::class,
'throttle:api',
\Illuminate\Auth\Middleware\Authenticate::class,
],
Custom Actions Not Triggering
getTableActions() or getFormActions() methods. Extend the plugin via a service provider:
public function boot()
{
\N3XT0R\FilamentPassportUI\FilamentPassportUIPlugin::extend(function ($plugin) {
$plugin->tableActions([
\N3XT0R\FilamentPassportUI\Actions\RegenerateToken::make(),
]);
});
}
Custom Fields
use N3XT0R\FilamentPassportUI\Forms\Components\ClientForm;
ClientForm::extend(function (ClientForm $form) {
$form->addComponents([
TextInput::make('custom_field')
->columnSpanFull(),
]);
});
Audit Logs
spatie/laravel-audit-log by publishing the config and enabling:
'audit' => [
'enabled' => true,
'log' => [
'client_created',
'token_revoked',
],
],
API Rate Limiting
Passport::tokensCan() or Passport::hashClientSecrets() methods in a service provider.Localization
php artisan vendor:publish --tag="filament-passport-ui-lang"
resources/lang/vendor/filament-passport-ui/en/messages.php.How can I help you explore Laravel packages today?