Home
NexoPOS

Instradamento dei moduli

Registrando le rotte, consenti a NexoPOS di capire come portare l’utente alle tue rotte. Il sistema di rotte utilizza il sistema di Routing di Laravel. Qui tratteremo solo la specificità necessaria per comprendere come funzionano le rotte per i moduli.

Tip de fișiere de rutare

Ogni modulo include 2 file nella cartella "Routes" che vengono utilizzati per il routing:

  • api.php, che è pensato per essere utilizzato solo per le chiamate API. Qui definirai i tuoi endpoint API.
  • web.php, il che significa per tutte le rotte che è probabile siano accessibili tramite accesso diretto (GET) o tramite qualsiasi altro metodo regolare. Ogni rotta che porta a un’interfaccia utente deve essere registrata in un file web.php.

Maggiori dettagli possono essere trovati qui.

Differenza tra rotte pubbliche e private (Dashboard)

Le rotte pubbliche sono probabilmente disponibili per il pubblico. Queste rotte di solito non usano “dashboard” come prefisso e, il più delle volte, non richiedono permessi per essere accessibili.

Le rotte private sono rotte che utilizzano “dashboard” come prefisso. Queste rotte sono pensate come rotte amministrative e servono a progettare tutte le rotte che portano alle interfacce della dashboard.

Dichiarazione del percorso

Qui registreremo un percorso che ci porta a una pagina nella dashboard con uno slug finale "foobar".

<?php
use App\Modules\FooBar\Controllers\FooBarController;

Route::get( '/dashboard/foobar', [ FooBarController::class, 'index' ]);

Nota che qui stiamo caricando un controller che dovrebbe essere registrato nella cartella “Http/Controllers” con il nome file FooBarController.php.

Se vuoi creare un controller per il tuo modulo, puoi comunque usare il comando:

php artisan modules:controller {module_namespace} {controller_class_name} 

Per creare un FooBarController come controller, useremo il seguente comando:

php artisan modules:controller FooBar FooBarController

Proteggere le rotte con le autorizzazioni

Poiché puoi proteggere i menu con le autorizzazioni, puoi anche proteggere le route utilizzando le autorizzazioni. Qui definiremo l’autorizzazione su un middleware in questo modo.

<?php
use App\Modules\FooBar\Controllers\FooBarController;
use App\MiddleWare\NsRestrictMiddleware;

Route::get( '/dashboard/foobar', [ FooBarController::class, 'index' ])
  ->middleware( 
      NsRestrictMiddleware::arguments([ 'can.fly' ])
  );

Qui, il nome del middleware da usare è "NsRestrictMiddleware", che accetta come parametro l’autorizzazione (o un array di autorizzazioni) che dovremo richiedere per consentire l’accesso alla rotta. Nel nostro esempio, abbiamo usato "can.fly" come autorizzazione.

Richiesta di autenticazione per alcune rotte

Se desideri proteggere alcune rotte con l’autenticazione, dovrai collegare un middleware a tali rotte. Ecco un esempio:

<?php

use App\Http\Middleware\Authenticate;
use Illuminate\Routing\Middleware\SubstituteBindings;
use Illuminate\Support\Facades\Route;
use Modules\MyModule\Http\Controllers\MyModuleController;

Route::prefix( 'dashboard' )->group( function() {
    Route::middleware([
        SubstituteBindings::class,
        Authenticate::class, // <= will be accessible only if the user is authenticated.
    ])->group( function() {
        Route::get( '/my-module', [ MyModuleController::class, 'settingsPage' ]);
    });
});

Siamo qui utilizzando il middleware "Authenticate" per proteggere le route definite all'interno del gruppo. Nota che è anche necessario "SubstituteBindings" per assicurare che il binding del modello funzioni per i moduli.