digitalstate/platform-admin-bundle
Installation
composer require digitalstate/platform-admin-bundle
Add to config/app.php under ExtraBundles:
'extra-bundles' => [
DigitalState\PlatformAdminBundle\PlatformAdminBundle::class,
],
Publish Assets & Config
php artisan vendor:publish --provider="DigitalState\PlatformAdminBundle\PlatformAdminBundle" --tag="config"
php artisan vendor:publish --provider="DigitalState\PlatformAdminBundle\PlatformAdminBundle" --tag="assets"
First Use Case: Basic Admin Dashboard
AdminController:
use DigitalState\PlatformAdminBundle\Controller\AdminController;
class MyAdminController extends AdminController
{
public function index()
{
return $this->render('admin/dashboard.html.twig');
}
}
routes/admin.php:
Route::get('/', 'MyAdminController@index')->name('admin.dashboard');
Role-Based Access Control (RBAC)
PermissionManager to define roles:
$this->permissionManager->addRole('admin', ['create_user', 'edit_user']);
Route::middleware(['admin', 'role:admin'])->group(function () {
// Admin-only routes
});
CRUD Operations
AdminCrudController trait for boilerplate:
use DigitalState\PlatformAdminBundle\Traits\AdminCrudController;
class UserAdminController extends AdminController
{
use AdminCrudController;
protected $model = \App\Models\User::class;
protected $columns = ['id', 'name', 'email'];
}
Customizing Views
resources/views/admin/.admin_layout.html.twig.API Integration
AdminApiController for RESTful endpoints:
class ApiUserController extends AdminApiController
{
public function index()
{
return $this->respondWithCollection($this->model::all());
}
}
digitalstate/auth-bundle for seamless login.translations/admin.en.yml for multi-language support.admin_asset() helper for versioned JS/CSS:
{{ admin_asset('js/admin.js') }}
Middleware Conflicts
admin middleware is registered after web middleware in app/Http/Kernel.php:
protected $middlewareGroups = [
'web' => [
// ...
\DigitalState\PlatformAdminBundle\Http\Middleware\AdminMiddleware::class,
],
];
Route Caching
php artisan route:clear
Permission Caching
$this->permissionManager->clearCache();
ADMIN_DEBUG=true in .env to log permission denials.storage/logs/admin.log for RBAC errors.Custom Permissions
PermissionManager via events:
event(new \DigitalState\PlatformAdminBundle\Events\PermissionRegistered($permission));
Dynamic Menus
admin_menu.html.twig to inject dynamic items:
{% block admin_menu_items %}
{{ parent() }}
<li>{{ link_to_route('admin.custom_route', 'Custom') }}</li>
{% endblock %}
API Rate Limiting
throttle:admin middleware to API routes:
Route::middleware(['throttle:admin'])->group(function () {
// Rate-limited endpoints
});
How can I help you explore Laravel packages today?