<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
amranibrahem / laravel-middleware-generator example snippets
namespace App\Http\Middleware;
use Closure;
use Illuminate\Http\Request;
use Symfony\Component\HttpFoundation\Response;
class AdminMiddleware
{
/**
* Handle an incoming request.
*
* @param string $role Required role
*/
public function handle(Request $request, Closure $next, string $role = 'admin'): Response
{
// Check if user has role = $role
if ($request->user() && $request->user()->role === $role) {
return $next($request);
}
return response()->json([
'message' => 'Administrator access
namespace App\Http\Middleware;
use Closure;
use Illuminate\Http\Request;
use Symfony\Component\HttpFoundation\Response;
class CanEditMiddleware
{
/**
* Handle an incoming request.
*
* @param string $permission Required permission
*/
public function handle(Request $request, Closure $next, string $permission = 'edit-posts'): Response
{
// Check if user has permission: $permission
if ($request->user() && $request->user()->can($permission)) {
return $next($request);
}
return response()->json([
'message' => 'Insufficient permissions',
'code' => 403
], 403);
}
}
namespace App\Http\Middleware;
use Closure;
use Illuminate\Http\Request;
use Symfony\Component\HttpFoundation\Response;
class InternalMiddleware
{
/**
* Handle an incoming request.
*/
public function handle(Request $request, Closure $next): Response
{
// Check if request IP is in allowed list: 192.168.1.1,127.0.0.1
if (in_array($request->ip(), ['192.168.1.1', '127.0.0.1'])) {
return $next($request);
}
return response()->json([
'message' => 'IP address not allowed',
'code' => 403
], 403);
}
/**
* Get allowed IP addresses
*/
protected function getAllowedIps(): array
{
return ['192.168.1.1', '127.0.0.1'];
}
}
namespace Tests\Unit\Middleware;
use Tests\TestCase;
use Illuminate\Http\Request;
use App\Http\Middleware\AdminMiddleware;
use Illuminate\Foundation\Testing\RefreshDatabase;
class AdminMiddlewareTest extends TestCase
{
use RefreshDatabase;
/** @test */
public function it_allows_access_when_condition_met()
{
// TODO: Implement test based on your middleware logic
$request = new Request();
$middleware = new AdminMiddleware();
$response = $middleware->handle($request, function ($req) {
return response('OK');
});
$this->assertEquals('OK', $response->getContent());
}
/** @test */
public function it_denies_access_when_condition_not_met()
{
// TODO: Implement test based on your middleware logic
$request = new Request();
$middleware = new AdminMiddleware();
$response = $middleware->handle($request, function ($req) {
return response('OK');
});
$this->assertEquals(403, $response->getStatusCode());
$this->assertJsonStringEqualsJsonString(
'{"message":"Administrator access
๐ Starting Admin Middleware Generation...
๐ฏ Select Middleware Type:
โโโโโโโโโโโโโโโโโโโโโโโ
> Role-based (user.role === "admin")
๐ Generation Summary:
โโโโโโโโโโโโโโโโโโโโโโโ
๐น Middleware Name: Admin
๐น Type: role
๐น Role Check: 'admin'
๐น Status Code: 403
๐น User Model: User
๐น Guard: web
โโโโโโโโโโโโโโโโโโโโโโโ
๐ Creating Middleware File...
โ Created middleware: AdminMiddleware.php
๐ Registering in Kernel...
โ Registered middleware in Kernel.php ($middlewareAliases)
โ๏ธ Updating Auth Configuration...
โ Added role guard to auth.php
๐ฃ๏ธ Creating Route Example...
โ Added route example to api.php
๐งช Creating Test File...
โ Created test: AdminMiddlewareTest.php
๐ Middleware Generation Completed Successfully!
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
๐ Final Configuration:
• Middleware: Admin
• Type: role
• Role: 'admin'
• Field: 'role'
• Boolean: No
• Status Code: 403
• Error Message: 'Administrator access