Skip to main content
Glama
MiddlewareExample.php3.57 kB
<?php /** * Middleware Examples - Laravel, Symfony, CodeIgniter 4 * * Demonstrates middleware/filter detection across frameworks */ namespace App\Http\Controllers; use Illuminate\Http\Request; use Illuminate\Routing\Controller; /** * Admin Controller with Class-Level Middleware * * All routes in this controller require authentication */ #[Middleware('auth')] #[Middleware('admin')] class AdminController extends Controller { /** * Admin dashboard * * @return \Illuminate\View\View */ public function index() { return view('admin.dashboard'); } /** * User management with additional throttling * * @return \Illuminate\View\View */ #[Middleware('throttle:60,1')] public function users() { return view('admin.users'); } /** * Dangerous action with extra confirmation * * @return \Illuminate\Http\JsonResponse */ #[Middleware('verified')] #[Middleware('signed')] public function deleteAll() { return response()->json(['status' => 'deleted']); } } /** * API Controller with Symfony Security * * Uses Symfony's IsGranted attribute */ #[IsGranted('ROLE_API_USER')] class ApiSecureController extends \Symfony\Bundle\FrameworkBundle\Controller\AbstractController { /** * Public API endpoint * * @return \Symfony\Component\HttpFoundation\JsonResponse */ public function info() { return $this->json(['version' => '1.0']); } /** * Admin-only API endpoint * * @return \Symfony\Component\HttpFoundation\JsonResponse */ #[IsGranted('ROLE_ADMIN')] public function adminStats() { return $this->json(['users' => 100, 'posts' => 500]); } } /** * CodeIgniter 4 Controller with Filters * * Uses CI4's Filter attribute */ #[Filter('auth')] class CISecureController extends \CodeIgniter\Controller { /** * Dashboard * * @return string */ public function index() { return view('dashboard'); } /** * Settings with CSRF protection * * @return string */ #[Filter('csrf')] public function settings() { return view('settings'); } } /** * Legacy CodeIgniter 3 Controller * * Uses docblock annotations for middleware * * @middleware auth */ class CI3_Legacy_Controller extends CI_Controller { /** * Dashboard * * @middleware session */ public function index() { $this->load->view('dashboard'); } /** * Admin panel * * @middleware auth, admin, verified * @filter ip_whitelist */ public function admin() { $this->load->view('admin'); } } /** * Mixed Middleware Controller * * Combines attributes and docblocks */ #[Middleware('auth')] class MixedController extends Controller { /** * Profile page * * Simple authenticated route */ public function profile() { return view('profile'); } /** * Edit profile with rate limiting * * @middleware throttle:10,1 */ #[Middleware('verified')] public function edit() { return view('profile.edit'); } /** * Billing section * * Multiple middleware from both sources * * @middleware subscription */ #[Middleware('stripe')] #[Middleware('billing')] public function billing() { return view('billing'); } }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/LiL-Loco/documentation-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server