Installation
composer require xlabs/mmadminbundle
Add to config/app.php under extra.bundles:
XLabs\MMAdminBundle\XLabsMMAdminBundle::class
Configuration Publish the default config:
php artisan vendor:publish --provider="XLabs\MMAdminBundle\XLabsMMAdminBundle" --tag=config
Update config/mmadmin.php to match your admin panel URL (e.g., /admin).
First Use Case
Route::group(['middleware' => ['mmadmin']], function () {
Route::get('/admin/dashboard', 'AdminController@dashboard');
});
Admin Session Management
MMAdmin facade to check admin status:
if (\XLabs\MMAdminBundle\Facades\MMAdmin::isAdmin()) {
// Admin-only logic
}
\XLabs\MMAdminBundle\Facades\MMAdmin::revokeSession($sessionId);
Route Integration
Route::prefix('admin')->middleware(['mmadmin'])->group(function () {
// Admin routes
});
canAccess method in controllers:
if (\XLabs\MMAdminBundle\Facades\MMAdmin::canAccess('edit_users')) {
return view('admin.users.edit');
}
Event Listeners
AdminLogin, AdminLogout):
use XLabs\MMAdminBundle\Events\AdminLogin;
event(new AdminLogin($userId, $ipAddress));
resources/views/mmadmin/ templates.tenant() method to scope admin sessions:
\XLabs\MMAdminBundle\Facades\MMAdmin::setTenant($tenantId);
config/mmadmin.php for troubleshooting:
'debug' => env('MMADMIN_DEBUG', false),
Extension Dependency
config/mmadmin.php:
'allowed_domains' => ['yourdomain.com', 'admin.yourdomain.com'],
CSRF Token Mismatch
_token field is included. The extension handles AJAX CSRF automatically but may conflict with form submissions.Route::group(['middleware' => ['csrf', 'mmadmin']], function () {
// Exclude routes where CSRF is handled by the extension
});
Session Expiry
config/mmadmin.php:
'session_lifetime' => 3600, // 1 hour
Extension Not Connecting:
manifest.json includes your domain.'debug' => true) and inspect logs in storage/logs/laravel.log.Middleware Failing:
mmadmin middleware is registered in app/Http/Kernel.php:
protected $routeMiddleware = [
'mmadmin' => \XLabs\MMAdminBundle\Http\Middleware\MMAdminMiddleware::class,
];
Custom Permissions
PermissionManager:
use XLabs\MMAdminBundle\Services\PermissionManager;
class CustomPermissionManager extends PermissionManager {
public function canAccess($permission) {
// Custom logic
return parent::canAccess($permission);
}
}
config/mmadmin.php:
'permission_manager' => \App\Services\CustomPermissionManager::class,
Session Storage
session driver to a custom store (e.g., Redis):
'session_driver' => 'redis',
XLabs\MMAdminBundle\Contracts\SessionStore for full control.UI Customization
vendor/xlabs/mmadminbundle/resources/views/mmadmin/ to resources/views/mmadmin/ and modifying templates.How can I help you explore Laravel packages today?