diff options
| author | Zach DeCook <zachdecook@gmail.com> | 2018-12-27 21:33:47 -0500 |
|---|---|---|
| committer | Zach DeCook <zachdecook@gmail.com> | 2018-12-27 21:33:47 -0500 |
| commit | c0953948d7008100ab4fcb4c5df6076ed7e69e3c (patch) | |
| tree | 26d3cbbc2386c7adb324cb6b9988de1f8a532f1c /laravel/app | |
| parent | ed8d234975e3df79ab60cdc990f42856e5811d3f (diff) | |
| download | prosongsa-c0953948d7008100ab4fcb4c5df6076ed7e69e3c.tar.gz | |
* Routes: Create edit route
Diffstat (limited to 'laravel/app')
| -rw-r--r-- | laravel/app/Http/Controllers/SongController.php | 25 | ||||
| -rw-r--r-- | laravel/app/Policies/SongPolicy.php | 86 | ||||
| -rw-r--r-- | laravel/app/Providers/AuthServiceProvider.php | 3 |
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, ]; /** |
