2

I created a laravel middleware with this code:

<?php

namespace App\Http\Middleware;

use Closure;
use Illuminate\Http\Request;
use Symfony\Component\HttpFoundation\Response;
use App\Containers\Modals\Models\Modal;

class ModalsMiddleware
{
    /**
     * Handle an incoming request.
     *
     * @param  \Closure(\Illuminate\Http\Request): (\Symfony\Component\HttpFoundation\Response)  $next
     */
    public function handle(Request $request, Closure $next, string $modalNames): Response
    {
        $modals = explode(',', $modalNames);
        foreach ($modals as $modalName) {
            $modal = Modal::where('slug', $modalName)->first();
            if (!$modal->enabled) {
                abort(404);
            }
        }
        return $next($request);
    }
}

Then I updated Kernel.php:

**
     * The application's route middleware.
     *
     * These middleware may be assigned to groups or used individually.
     *
     * @var array<string, class-string|string>
     */
    protected $routeMiddleware = [
       ...,
       'modals' => \App\Http\Middleware\ModalsMiddleware::class,
    ];

And for my route group I added the following:

Route::group([
    'prefix' => 'api/v1/routeName',
    'middleware' => ['auth:api', 'modals:AModalName']
], function() {...});

Then I ran: php artisan optimize && php artisan config:cache && php artisan cache:clear && php artisan config:clear && composer dump-autoload And stoped serve then I re-ran the app

However I had this error:

"message": "Target class [modals] does not exist.",
    "exception": "Illuminate\\Contracts\\Container\\BindingResolutionException",

How can I fix that?

1 Answer 1

5

In Larave 11 you have to register your middleware in the bootstrap/app.php file.

->withMiddleware(function (Middleware $middleware) {
        $middleware->alias([
            'modals' => \App\Http\Middleware\ModalsMiddleware::class,
        ]);
    })

For more details visit the official documentation.

Here is what the full code looks like.

<?php

use Illuminate\Foundation\Application;
use Illuminate\Foundation\Configuration\Exceptions;
use Illuminate\Foundation\Configuration\Middleware;

return Application::configure(basePath: dirname(__DIR__))
    ->withRouting(
        web: __DIR__ . '/../routes/web.php',
        commands: __DIR__ . '/../routes/console.php',
        health: '/up',
    )
    ->withMiddleware(function (Middleware $middleware) {
        $middleware->alias([
            'modals' => \App\Http\Middleware\ModalsMiddleware::class,
        ]);
    })
    ->withExceptions(function (Exceptions $exceptions) {
        //
    })->create();
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.