laravel-admin/base
Alpha Laravel package that adds a Bootstrap-compatible admin interface with login and role-based access. Includes migrations and configurable routes (domain or /admin prefix), middleware, roles, menu, and extra CSS/JS. Scaffold admin routes via Admin::routes().
Installation
composer require laravel-admin/base
php artisan vendor:publish --tag=admin-config
php artisan migrate
Add to config/app.php:
LaravelAdmin\Base\BaseServiceProvider::class,
Middleware
Register in app/Http/Kernel.php:
'auth.admin' => \LaravelAdmin\Base\Middleware\AuthenticateAdminUser::class,
Environment
Define ADMIN_URL in .env (e.g., admin.yourdomain.com) or use a subdirectory prefix (e.g., admin).
First Use Case
/admin/login (or ADMIN_URL/login).role field added to users table).Role-Based Access
users table (role column).config/admin.php under roles:
'roles' => ['admin', 'editor', 'viewer'],
canLogin:
'canLogin' => ['admin', 'editor'],
Route Grouping
routes/admin.php (created automatically after publishing config).admin middleware group:
Route::middleware(['auth.admin'])->group(function () {
Route::get('/dashboard', 'DashboardController@index');
});
config/admin.php:
'routeGroup' => [
'domain' => env('ADMIN_URL', null),
'prefix' => env('ADMIN_PREFIX', 'admin'),
],
Middleware Integration
'routeMiddleware' => [
'auth.admin' => \App\Http\Middleware\AdminAuth::class,
'throttle.admin' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
],
app/Http/Kernel.php.Dashboard Customization
php artisan vendor:publish --tag=admin-views
resources/views/vendor/admin/dashboard.blade.php.Authentication Logic
AuthenticateAdminUser middleware to add custom logic (e.g., 2FA):
namespace App\Http\Middleware;
use LaravelAdmin\Base\Middleware\AuthenticateAdminUser as BaseMiddleware;
class AdminAuth extends BaseMiddleware {
protected function authenticate() {
// Custom logic here
return parent::authenticate();
}
}
Migration Conflicts
role column to the users table. If you’ve customized the users table, merge migrations manually or use:
php artisan migrate --pretend
to preview changes.Route Caching
routes/admin.php or config/admin.php:
php artisan route:clear
Middleware Overrides
AuthenticateAdminUser, ensure the parent class’s logic (e.g., role checks) is preserved. Avoid overriding handle() entirely unless necessary.Alpha State Risks
CSRF on Admin Routes
@csrf manually to forms or configure middleware:
'routeMiddleware' => [
'auth.admin' => \App\Http\Middleware\EncryptCookies::class,
\App\Http\Middleware\VerifyCsrfToken::class,
],
Route Debugging
php artisan route:list --path=admin to inspect admin routes.admin/login vs. auth/login).Middleware Debugging
Kernel.php to isolate issues:
protected $routeMiddleware = [
'auth.admin' => function () { return null; }, // Bypass
];
Configuration Overrides
config(['admin.routeGroup.prefix' => 'custom-prefix']) in AppServiceProvider@boot() for runtime changes.View Debugging
resources/views/vendor/admin/ to inspect rendered output.Custom Controllers
app/Http/Controllers/Admin/ and reference them in routes/admin.php.API Endpoints
Route::middleware(['auth:api', 'auth.admin'])->get('/api/admin/data', ...);
Multi-Tenancy
AuthenticateAdminUser middleware to support tenant-aware admin access:
public function handle($request, Closure $next) {
$tenant = Tenant::find($request->tenant_id);
auth()->setUser($tenant->adminUser());
return $next($request);
}
Audit Logging
auth.admin middleware to log admin actions:
public function handle($request, Closure $next) {
event(new AdminLogin($request->user()));
return $next($request);
}
Theming
php artisan vendor:publish --tag=admin-assets
resources/views/vendor/admin/partials/head.blade.php.How can I help you explore Laravel packages today?