locky42 / leopard-admin
A library for managing the administration panel of a web application.
Requires
- almasaeed2010/adminlte: ^3.2
- locky42/leopard-doctrine: ^1.0
- locky42/leopard-events: ^1.0
- locky42/leopard-user: 1.0.0
Requires (Dev)
- phpunit/phpunit: ^12.3
README
locky42/leopard-admin provides admin-domain models, mappings, and controllers on top of leopard-user.
Features
- Base admin models:
Leopard\Admin\Models\BaseAdminUserLeopard\Admin\Models\BaseAdminRoleLeopard\Admin\Models\BaseAdminPermission
- Contract-based model mapping for admin entities
- Doctrine bootstrap integration (
ResolveTargetEntity+ model path registration) - Admin controllers and templates for admin panel flows
Requirements
- PHP
^8.3 doctrine/orm ^3locky42/leopard-userlocky42/leopard-events
Contracts
Leopard\Admin\Contracts\Models\AdminUserInterfaceLeopard\Admin\Contracts\Models\AdminRoleInterfaceLeopard\Admin\Contracts\Models\AdminPermissionInterface
Doctrine Integration
Package bootstrap (packages/leopard-admin/bootstrap.php) does two things:
- Registers resolve-target mappings before EntityManager metadata resolution:
AdminUserInterface -> BaseAdminUserAdminRoleInterface -> BaseAdminRoleAdminPermissionInterface -> BaseAdminPermission
- Adds admin model paths to the current metadata driver via
addPaths([__DIR__ . '/src/Models']).
Quick Start
In application projects, map admin contracts to your app entities (or keep defaults).
use Leopard\Core\Factory\ContractFactory; use Leopard\Admin\Contracts\Models\AdminUserInterface; use Leopard\Admin\Contracts\Models\AdminRoleInterface; use Leopard\Admin\Contracts\Models\AdminPermissionInterface; use App\Models\Admin\AdminUser; use App\Models\Admin\AdminRole; use App\Models\Admin\AdminPermission; ContractFactory::register(AdminUserInterface::class, AdminUser::class); ContractFactory::register(AdminRoleInterface::class, AdminRole::class); ContractFactory::register(AdminPermissionInterface::class, AdminPermission::class);
ContractFactory::register(...) also synchronizes resolve-target mappings when leopard-doctrine is available.
Controllers
Main controller:
Leopard\Admin\Controllers\AdminController
The controller uses AuthenticationService + AuthorizationService and resolves concrete model classes through ResolveTargetEntityRegistry.
Routing Requirements
For admin module UI to work, your app must provide routes for these controllers:
\Leopard\Admin\Controllers\AdminController\Leopard\Admin\Controllers\AdminAssetsController
You can choose one of these integration strategies:
- Register routes directly to these package controllers.
- Create your own controllers that extend these classes and route to your subclasses.
- Implement equivalent controllers in your app with the required functionality.
If routes for admin pages/assets are missing, admin panel screens and static asset endpoints will not be reachable.
Testing
From repository root:
vendor/bin/phpunit --testsuite=leopard-admin
or
composer test:admin
License
MIT