about summary refs log tree commit diff
path: root/laravel/app
diff options
context:
space:
mode:
authorZach DeCook <zachdecook@gmail.com>2018-12-27 21:33:47 -0500
committerZach DeCook <zachdecook@gmail.com>2018-12-27 21:33:47 -0500
commitc0953948d7008100ab4fcb4c5df6076ed7e69e3c (patch)
tree26d3cbbc2386c7adb324cb6b9988de1f8a532f1c /laravel/app
parented8d234975e3df79ab60cdc990f42856e5811d3f (diff)
downloadprosongsa-c0953948d7008100ab4fcb4c5df6076ed7e69e3c.tar.gz
* Routes: Create edit route
Diffstat (limited to 'laravel/app')
-rw-r--r--laravel/app/Http/Controllers/SongController.php25
-rw-r--r--laravel/app/Policies/SongPolicy.php86
-rw-r--r--laravel/app/Providers/AuthServiceProvider.php3
3 files changed, 110 insertions, 4 deletions
diff --git a/laravel/app/Http/Controllers/SongController.php b/laravel/app/Http/Controllers/SongController.php
index 8d6c497..8206bca 100644
--- a/laravel/app/Http/Controllers/SongController.php
+++ b/laravel/app/Http/Controllers/SongController.php
@@ -8,10 +8,13 @@ use Illuminate\Http\Request;
 
 class SongController extends Controller
 {
-
-    public function show( $songNumber )
+    public function oldShow( $song )
+    {
+        $song = Song::where('number', $song );
+        return $this->show( $song );
+    }
+    public function show( Song $song )
     {
-        $song = Song::where('number', $songNumber )->first();
         $lines = explode( "\n", $song['text'] );
         $newText = '';
         $transp = $_GET['transp'] ?? 0;
@@ -165,7 +168,7 @@ class SongController extends Controller
                 $song->playlists()->attach( $_POST['playlist'] );
             }
             return redirect()->route('song.show', [
-                'song' => $song->number,
+                'song' => $song,
                 'playlist' => $_POST['playlist']
             ] );
         }
@@ -174,4 +177,18 @@ class SongController extends Controller
         }
         return redirect('/');
     }
+
+    public function edit(Song $song)
+    {
+        return view('editsong', ['song' => $song]);
+    }
+    public function update(Song $song, Request $request)
+    {
+        $song->title  = $request->title;
+        $song->author = $request->author;
+        $song->key    = $request->key;
+        $song->text   = $request->text;
+        $song->save();
+        return redirect()->route( 'song.show', ['song' => $song->number ] );
+    }
 }
diff --git a/laravel/app/Policies/SongPolicy.php b/laravel/app/Policies/SongPolicy.php
new file mode 100644
index 0000000..2f92bfb
--- /dev/null
+++ b/laravel/app/Policies/SongPolicy.php
@@ -0,0 +1,86 @@
+<?php
+
+namespace App\Policies;
+
+use App\User;
+use App\Song;
+use Illuminate\Auth\Access\HandlesAuthorization;
+
+class SongPolicy
+{
+    use HandlesAuthorization;
+
+    /**
+     * Determine whether the user can view the song.
+     *
+     * @param  \App\User  $user
+     * @param  \App\Song  $song
+     * @return mixed
+     */
+    public function view(User $user, Song $song)
+    {
+        return true;
+        //
+    }
+
+    /**
+     * Determine whether the user can create songs.
+     *
+     * @param  \App\User  $user
+     * @return mixed
+     */
+    public function create(User $user)
+    {
+        // TODO: Make it harder to create songs.
+        return true;
+    }
+
+    /**
+     * Determine whether the user can update the song.
+     *
+     * @param  \App\User  $user
+     * @param  \App\Song  $song
+     * @return mixed
+     */
+    public function update(User $user, Song $song)
+    {
+        // Allow all logged in users to update songs.
+        return true;
+    }
+
+    /**
+     * Determine whether the user can delete the song.
+     *
+     * @param  \App\User  $user
+     * @param  \App\Song  $song
+     * @return mixed
+     */
+    public function delete(User $user, Song $song)
+    {
+        //
+    }
+
+    /**
+     * Determine whether the user can restore the song.
+     *
+     * @param  \App\User  $user
+     * @param  \App\Song  $song
+     * @return mixed
+     */
+    public function restore(User $user, Song $song)
+    {
+        //
+    }
+
+    /**
+     * Determine whether the user can permanently delete the song.
+     *
+     * @param  \App\User  $user
+     * @param  \App\Song  $song
+     * @return mixed
+     */
+    public function forceDelete(User $user, Song $song)
+    {
+        //
+    }
+}
diff --git a/laravel/app/Providers/AuthServiceProvider.php b/laravel/app/Providers/AuthServiceProvider.php
index 9784b1a..8192094 100644
--- a/laravel/app/Providers/AuthServiceProvider.php
+++ b/laravel/app/Providers/AuthServiceProvider.php
@@ -2,6 +2,8 @@
 
 namespace App\Providers;
 
+use App\Song;
+use App\Policies\SongPolicy;
 use Illuminate\Support\Facades\Gate;
 use Illuminate\Foundation\Support\Providers\AuthServiceProvider as ServiceProvider;
 
@@ -14,6 +16,7 @@ class AuthServiceProvider extends ServiceProvider
      */
     protected $policies = [
         'App\Model' => 'App\Policies\ModelPolicy',
+        Song::class => SongPolicy::class,
     ];
 
     /**