Ankündigung

Einklappen
Keine Ankündigung bisher.

Wie sage Laravel das der User nur Einträge delete/edit darf, wenn es auch seine sind?

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [Laravel] Wie sage Laravel das der User nur Einträge delete/edit darf, wenn es auch seine sind?

    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:

    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
    Das sind alle relevanten Routen:

    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'); 
    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 :

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

  • #2
    Auth auch importiert ? ( use Auth; )
    [URL="https://gitter.im/php-de/chat?utm_source=share-link&utm_medium=link&utm_campaign=share-link"]PHP.de Gitter.im Chat[/URL] - [URL="https://raindrop.io/user/32178"]Meine öffentlichen Bookmarks[/URL] ← Ich habe dir geholfen ? [B][URL="https://www.amazon.de/gp/wishlist/348FHGUZWTNL0"]Beschenk mich[/URL][/B].

    Kommentar


    • #3
      jap use Auth; steht ganz oben. Aber es macht eigendlich nichts, also der code den ich schrieb. Es ist genau das selbe

      Kommentar


      • #4
        Wo wird dir Auth denn als undefinierte Klasse angezeigt ? Als Fatal Error durch die PHP Engine oder als Inspection Error deiner IDE ? Es ist auf jeden Fall logisch richtig die User-ID des Verfassers mit der aktuell authentifizierten User-ID zu vergleichen.

        Moderation: Beitrag verschoben nach PHP-Frameworks und Laravel-Prefix hinzugefügt.
        [URL="https://gitter.im/php-de/chat?utm_source=share-link&utm_medium=link&utm_campaign=share-link"]PHP.de Gitter.im Chat[/URL] - [URL="https://raindrop.io/user/32178"]Meine öffentlichen Bookmarks[/URL] ← Ich habe dir geholfen ? [B][URL="https://www.amazon.de/gp/wishlist/348FHGUZWTNL0"]Beschenk mich[/URL][/B].

        Kommentar

        Lädt...
        X