Dies ist ein Musterbeispiel für den eigensinnigen Laravel 8.0-Admin-Panel-Build mit AdminLTE 3.0-Theme, Alpinejs 2.0, Livewire 2.0, unterstützt durch Tests und optionale Funktionszweige.
Sie können dieses Repo überprüfen. Ich arbeite aktiv an Laravel Castra. Gleiche Idee, andere Tools (Hotwire Turbo).
Manchmal sind Pakete zu groß oder zu umständlich in der Handhabung. In anderen Fällen verfügt das Paket nicht über eine wichtige Funktion , nach der Sie suchen, und Sie führen einige Hacks durch, um dies zu umgehen.
Was Ihnen fehlt, ist die Kontrolle über den Code, und jetzt haben Sie sie! Mir gefällt nicht, wie ein neuer Benutzer hinzugefügt wird. Kein Problem. Sie können den Code beliebig ändern. Kein Forken von Paketen und kein Durcheinander mit ihrem Code mehr. Die Idee besteht darin, Zweige mit Standardfunktionen zu erstellen und sie anderen zur Verfügung zu stellen, um sie in ihren Hauptzweig zusammenzuführen.
Hier ist die Liste der unterstützten Feature-Branches. Indem Sie sie in Master zusammenführen, schalten Sie neue Funktionen frei.
Nach der Installation von Laravel sollten Sie die folgenden Befehle ausführen:
git clone https://github.com/jcergolj/laravellte.git
composer install
cp .env.example .env
php artisan key:generate
npm install
npm run dev
composer cghooks update
php artisan migrate:fresh --seed
Seien wir ehrlich. Manchmal sind wir schlampig und kümmern uns nicht optimal um den Code. Ich habe einige nützliche Pakete hinzugefügt (ist das nicht ironisch), um den Entwickler so weit wie möglich zu entlasten?
"php artisan insights --no-interaction --min-quality=90 --min-complexity=85 --min-architecture=90 --min-style=95"
Für CRUD-Aktionen könnten Sie die Verwendung des integrierten Datei-Gerüstbefehls in Betracht ziehen. Es generiert Dateien für Index-, Erstellungs-, Anzeige-, Bearbeitungs- und Löschaktionen wie diese:
php artisan make:ltd-component bla --index --create --show --edit --delete
Sie können jede der Optionen weglassen. Wenn Sie möchten, können Sie die stubs
Dateien nach Ihren Wünschen aktualisieren. Es gibt Kommentare in Gerüstdateien, die Sie daran erinnern, den Code zu ändern. Sie können es dann finden, indem Sie Folgendes eingeben: index-review
, create-review
, show-review
, edit-review
, delete-review
. Fabrik- und Modellgerüste sind in diesem Befehl nicht enthalten.
Laravellte verwendet ein auf Rollen und Berechtigungen basierendes Autorisierungssystem. Nur Benutzer mit der Admin-Rolle können neue Rollen hinzufügen und ihr Berechtigungen zuweisen.
Für neue Ressourcen werden Berechtigungen über PermissionsTableSeeder hinzugefügt. Konventionell sind die wichtigsten Berechtigungstypen index , create , edit , show und delete mit dem Präfix „ressource“ im Plural. Beispiel: user.index . Es steht Ihnen jedoch frei, Ihre eigenen hinzuzufügen. Sie müssen den Code jedoch überprüfen/ändern.
Basierend auf der Konvention müssen Routennamen einem dieser Typen angehören: index , create , edit , show und delete . Siehe Beispiel.
Für Livewire-Komponenten gilt folgende Benennungskonvention: Sie müssen einen dieser Typen verwenden, gefolgt vom Ressourcennamen und dann der Komponente. zB IndexUserComponent Alle Livewire-Komponenten müssen das Merkmal HasLivewireAuth verwenden. Hier ist die Umsetzung.
Beim Hinzufügen einer Berechtigung zur Rolle gibt es ein zusätzliches Feld mit dem Namen „owner_restricted“ . Wenn das vom Eigentümer eingeschränkte Feld für jede Indexseite wahr ist, kann ein Benutzer mit dieser Berechtigung nur seine eigenen Ressourcen sehen. Damit dies funktioniert, muss die Ressource jedoch in der Startmethode „owner_id“ abgelegt und „VisibleTo global“ angehängt sein.
Wenn das vom Eigentümer eingeschränkte Feld für die Typen „Anzeigen“ , „Bearbeiten“ und „Löschen“ wahr ist, kann der Benutzer nur Ressourcen ändern, die ihm gehören.
Bei Erstellungstypen wird der eingeschränkte Besitzer ignoriert.
Im Kern ist ForRouteGate für die Autorisierung zuständig. Die lobende Erwähnung geht an Authorization Middleware.
Für Admin-Rollenberechtigungen gelten keine Einschränkungen.
Lizenziert unter der MIT-Lizenz
Janez Cergolj | Horacio Degiorgi | Chris Thompson | Maduka Jayalath |