/ / Laravel 4 - Wiederverwendung von Controllern und Ansichten mithilfe von Routen - Laravel, Wiederverwendbarkeit, Laravel-Routing

Laravel 4 - Wiederverwenden von Controllern und Ansichten mithilfe von Routen - Laravel, Wiederverwendbarkeit, Laravel-Routing

Ich baue eine Bloganwendung mit Laravel 4 die zwei Arten von Benutzern hat, den Administrator und den normalen Benutzer.

Wenn Benutzer ihre Konten erstellen oder sich anmelden, haben alle ihre Routen die "Benutzer" Präfix , wie folgt:

GET user/posts = PostsController@index

Für Administratoren haben alle ihre Routen die "Administrator" Präfix , so:

GET admin/users = UsersController@index

Um alle Beiträge eines Benutzers als Administrator anzuzeigen, gehe ich wie folgt vor:

GET admin/users/($id)/posts = PostsController@index

Wenn also ein normaler Benutzer angemeldet ist, bekomme ich seinen ID aus Sitzung, aber wenn der Benutzer ein Administrator ist, bekomme ich den normalen Benutzer ID aus der URL.

Ich muss auch die Links in den Ansichten aktualisieren, wie folgt:

Als regelmäßiger Benutzer: link_to("Benutzer/Beiträge/Erstellen", "Beitrag erstellen")

Als Administrator: link_to("admin/users/1/posts/create", "Beitrag erstellen")

Gibt es hierfür einen besseren Ansatz?

Antworten:

0 für die Antwort № 1

Ja, alle Benutzer sind Benutzer.

Alles, was erfordert, dass Sie ein Administrator sind, sollte einen Filter dafür auf der Route haben.

Wenn also beispielsweise ein Administrator nur zu user/posts/delete/{id}, diese Route würde ungefähr so ​​aussehen...

Route::post("user/posts/delete/{id}", array("before" => "adminFilter", "uses" => "PostController@deletePost");

Ich bin mir nicht sicher, wie Sie herausfinden, ob ein Benutzer ein Administrator oder ein normaler Benutzer ist, aber Ihr Filter könnte etwa so aussehen ...

Route::filter("adminFilter", function()
{
if (!Auth::user()->isAdmin())
{
return Redirect::to("home")->with("message", "You aren"t an admin!");
}
});

Und du würdest einfach ein isAdmin() Funktion in Ihrem User Modell, das beschreibt, wie festgestellt wird, ob ein Benutzer Administrator ist, und true oder false zurückgibt.