Hallo, ich habe gerade ein für mich eigenes Projekt am laufen, in dem ich sowas wie ein Blog programmiere. Ein sicheren Login/Register habe ich schon mal und die Funktion ein Thread zu schreiben/edetieren oder zu löschen ebenfalls. Nun ist es so dass es schon reicht nur eingeloggt zu sein um alle Einträge löschen/bearbeiten/anlegen zu können. Man muss also nicht zwingend der Verfasser sein. Ich will es aber natürlich so das sofern der Benutzer nicht der Verfasser ist, dann darf er keine Einträge bearbeiten/löschen die nicht ihm gehören. Und wenn der Benutzer der Verfasser ist, dann darf er das natürlich auch seine einträge löschen.
So klappt das leider aber momentan nicht. Ich habe von Laravels Abilities function gehört aber ich verstehe nicht genau wie das funktionieren soll.. Bin an sich noch eher ein Anfänger in Laravel.
Nun das ist der teil im View der sagt wenn der user eingeloggt ist, dann lass ihn etwas bearbeiten bzw löschen - wenn nicht dann gibts halt keine buttons außer den wo er zurück zur Übersicht kann:
Das sind alle relevanten Routen:
und das meine Show function im Controller die auf die HTML zeigt, die den einzelnen Thread anzeigt und in dem auch die beiden buttons zum edetieren/löschen sind :
Nun, ich sitze momentan fest.. Ich habe versucht meine Show function im Controller so zu verändern:
Aber nicht gerade mit viel erfolg.. Auth:: wird mir als undefinierte Klasse angezeigt, aber selbst wenn nicht, wüsste ich nicht ob es funktioniert und ob das der schönste weg ist
So klappt das leider aber momentan nicht. Ich habe von Laravels Abilities function gehört aber ich verstehe nicht genau wie das funktionieren soll.. Bin an sich noch eher ein Anfänger in Laravel.
Nun das ist der teil im View der sagt wenn der user eingeloggt ist, dann lass ihn etwas bearbeiten bzw löschen - wenn nicht dann gibts halt keine buttons außer den wo er zurück zur Übersicht kann:
PHP-Code:
@if( Auth::check()) <div class="panel-footer"> {!! Former::horizontal_open()->method('DELETE')->action(action("Test\\TestController@destroy", $thread->id))->id('conf') !!} {!! Former::danger_submit('Delete') !!} {!! Former::close() !!} <a href="{{ URL::route('edit', $thread->id) }}"> <div class="btn btn-primary">Edit</div> </a> </div> @endif </div> <a href="#"> <div class="btn pull-right"><a href="{{ action('Test\\TestController@index') }}">Zurück zur Übersicht</a></div> </a>
PHP-Code:
Route::get('/show/{id}', 'Test\\TestController@show'); Route::get('/show/{id}/edit', 'Test\\TestController@edit')->name('edit'); Route::put('/show/{id}/edit', ['as' => 'editing', 'uses' => 'Test\\TestController@update']); Route::delete('/show/{id}', 'Test\\TestController@destroy')->name('destroy');
PHP-Code:
public function show($id) { $thread = Thread::query()->findOrFail($id); return view('test.show', [ 'thread' => $thread, ]);
Nun, ich sitze momentan fest.. Ich habe versucht meine Show function im Controller so zu verändern:
PHP-Code:
public function show($id) { $thread = Thread::query()->findOrFail($id); if (!Auth::check() && $thread->user()->first()->id != Auth::user()->id) { abort(404); // Stop the user } return view('test.show', [ 'thread' => $thread, ]); }
Kommentar