Startseite
NexoPOS

Modulrouting

Indem Sie Routen registrieren, teilen Sie NexoPOS mit, wie es den Benutzer zu Ihren Routen führen kann. Das Routensystem nutzt Laravel Routing. Hier behandeln wir nur die Spezifität, die erforderlich ist, um zu verstehen, wie die Routen für Module funktionieren.

Dateityp der Routen-Dateien

Jedes Modul wird mit 2 Dateien im Ordner „Routes“ geliefert, die für das Routing verwendet werden:

  • api.php, die nur für API-Aufrufe gedacht ist. Hier definierst du deine API-Endpunkte.
  • web.php, was bedeutet: für alle Routen, die voraussichtlich direkt über den Zugriff (GET) oder auf irgendeine andere reguläre Weise erreichbar sind. Jede Route, die zu einer Benutzeroberfläche führt, muss in einer Datei web.php registriert werden.

Weitere Details finden Sie hier.

Unterschied zwischen öffentlichen und privaten Routen (Dashboard)

Öffentliche Routen sind voraussichtlich für die Öffentlichkeit verfügbar. Diese Routen verwenden normalerweise kein „dashboard“ als Präfix und erfordern in den meisten Fällen keine Berechtigungen, um zugänglich zu sein.

Private Routen sind Routen, die als Präfix „dashboard“ verwenden. Diese Routen dienen als administrative Routen und legen alle Routen fest, die zu Dashboard-Interfaces führen.

Route deklarieren

Hier registrieren wir eine Route, die uns zu einer Seite im Dashboard führt, mit dem abschließenden Slug „foobar“.

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

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

Beachten Sie, dass hier ein Controller geladen wird, der im Ordner „Http/Controllers“ mit dem Dateinamen „FooBarController.php“ registriert sein soll.

Wenn Sie einen Controller für Ihr Modul erstellen möchten, können Sie weiterhin den Befehl verwenden:

php artisan modules:controller {module_namespace} {controller_class_name} 

Um einen FooBarController als Controller zu erstellen, verwenden wir den folgenden Befehl:

php artisan modules:controller FooBar FooBarController

Schützen von Routen mit Berechtigungen

Da Sie Menüs mit Berechtigungen schützen können, können Sie auch Routen mit Berechtigungen schützen. Hier definieren wir die Berechtigung in einem Middleware so.

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

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

Hier ist der zu verwendende Middleware-Name „NsRestrictMiddleware“, der als Parameter die Berechtigung (oder ein Array von Berechtigungen) akzeptiert, die wir benötigen, um den Zugriff auf die Route zu erlauben. In unserem Beispiel haben wir „can.fly“ als Berechtigung verwendet.

Authentifizierung für bestimmte Routen anfordern

Wenn Sie einige Routen mit Authentifizierung schützen möchten, müssen Sie diesen Routen ein Middleware hinzufügen. Hier ist ein Beispiel:

<?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' ]);
    });
});

Wir verwenden hier das Middleware-„Authenticate“, um die innerhalb der Gruppe definierten Routen zu schützen. Beachten Sie, dass auch „SubstituteBindings“ erforderlich ist, damit die Modellbindung für die Module funktioniert.