diff --git a/app/Http/Controllers/Api/Web/AccountController.php b/app/Http/Controllers/Api/Web/AccountController.php index 53739d9a..70173f57 100644 --- a/app/Http/Controllers/Api/Web/AccountController.php +++ b/app/Http/Controllers/Api/Web/AccountController.php @@ -34,6 +34,7 @@ class AccountController extends ApiControllerBase $user = Auth::user(); return Response::json([ + 'id' => $user->id, 'bio' => $user->bio, 'can_see_explicit_content' => $user->can_see_explicit_content == 1, 'display_name' => $user->display_name, diff --git a/app/Http/Controllers/Api/Web/ArtistsController.php b/app/Http/Controllers/Api/Web/ArtistsController.php index 1c069d2c..652ff0eb 100644 --- a/app/Http/Controllers/Api/Web/ArtistsController.php +++ b/app/Http/Controllers/Api/Web/ArtistsController.php @@ -20,6 +20,7 @@ namespace Poniverse\Ponyfm\Http\Controllers\Api\Web; +use Gate; use Poniverse\Ponyfm\Models\Album; use Poniverse\Ponyfm\Models\Comment; use Poniverse\Ponyfm\Models\Favourite; @@ -158,7 +159,7 @@ class ArtistsController extends ApiControllerBase return Response::json([ 'artist' => [ - 'id' => (int)$user->id, + 'id' => $user->id, 'name' => $user->display_name, 'slug' => $user->slug, 'is_archived' => (bool)$user->is_archived, @@ -174,7 +175,10 @@ class ArtistsController extends ApiControllerBase 'bio' => $user->bio, 'mlpforums_username' => $user->username, 'message_url' => $user->message_url, - 'user_data' => $userData + 'user_data' => $userData, + 'permissions' => [ + 'edit' => Gate::allows('edit', $user) + ] ] ], 200); } diff --git a/app/Http/Controllers/FavouritesController.php b/app/Http/Controllers/FavouritesController.php deleted file mode 100644 index 54ffd501..00000000 --- a/app/Http/Controllers/FavouritesController.php +++ /dev/null @@ -1,41 +0,0 @@ -. - */ - -namespace Poniverse\Ponyfm\Http\Controllers; - -use View; - -class FavouritesController extends Controller -{ - public function getTracks() - { - return View::make('shared.null'); - } - - public function getAlbums() - { - return View::make('shared.null'); - } - - public function getPlaylists() - { - return View::make('shared.null'); - } -} diff --git a/app/Http/routes.php b/app/Http/routes.php index 349c006d..cff6880d 100644 --- a/app/Http/routes.php +++ b/app/Http/routes.php @@ -158,22 +158,6 @@ Route::group(['prefix' => 'api/web'], function() { Route::post('/auth/logout', 'Api\Web\AuthController@postLogout'); }); -Route::group(['prefix' => 'account', 'middleware' => 'auth'], function() { - Route::get('/favourites/tracks', 'FavouritesController@getTracks'); - Route::get('/favourites/albums', 'FavouritesController@getAlbums'); - Route::get('/favourites/playlists', 'FavouritesController@getPlaylists'); - - Route::get('/tracks', 'ContentController@getTracks'); - Route::get('/tracks/edit/{id}', 'ContentController@getTracks'); - Route::get('/albums', 'ContentController@getAlbums'); - Route::get('/albums/edit/{id}', 'ContentController@getAlbums'); - Route::get('/albums/create', 'ContentController@getAlbums'); - Route::get('/playlists', 'ContentController@getPlaylists'); - - Route::get('/uploader', 'UploaderController@getIndex'); - - Route::get('/', 'AccountController@getIndex'); -}); Route::group(['prefix' => 'admin', 'middleware' => ['auth', 'can:access-admin-area']], function() { Route::get('/genres', 'AdminController@getGenres'); @@ -182,9 +166,27 @@ Route::group(['prefix' => 'admin', 'middleware' => ['auth', 'can:access-admin-ar Route::get('u{id}', 'ArtistsController@getShortlink')->where('id', '\d+'); Route::get('users/{id}-{slug}', 'ArtistsController@getShortlink')->where('id', '\d+'); -Route::get('{slug}', 'ArtistsController@getProfile'); -Route::get('{slug}/content', 'ArtistsController@getContent'); -Route::get('{slug}/favourites', 'ArtistsController@getFavourites'); + + +Route::group(['prefix' => '{slug}'], function() { + Route::get('/', 'ArtistsController@getProfile'); + Route::get('/content', 'ArtistsController@getContent'); + Route::get('/favourites', 'ArtistsController@getFavourites'); + + + Route::group(['prefix' => 'account', 'middleware' => 'auth'], function() { + Route::get('/tracks', 'ContentController@getTracks'); + Route::get('/tracks/edit/{id}', 'ContentController@getTracks'); + Route::get('/albums', 'ContentController@getAlbums'); + Route::get('/albums/edit/{id}', 'ContentController@getAlbums'); + Route::get('/albums/create', 'ContentController@getAlbums'); + Route::get('/playlists', 'ContentController@getPlaylists'); + + Route::get('/uploader', 'UploaderController@getIndex'); + + Route::get('/', 'AccountController@getIndex'); + }); +}); Route::get('/', 'HomeController@getIndex'); diff --git a/app/Models/User.php b/app/Models/User.php index 6513f059..89854764 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -241,7 +241,7 @@ class User extends Model implements AuthenticatableContract, CanResetPasswordCon * @param string $roleName * @return bool */ - public function hasRole($roleName) + public function hasRole($roleName):bool { foreach ($this->roles as $role) { if ($role->name === $roleName) { diff --git a/app/Policies/UserPolicy.php b/app/Policies/UserPolicy.php index ac81c6d3..7fc5fd53 100644 --- a/app/Policies/UserPolicy.php +++ b/app/Policies/UserPolicy.php @@ -31,4 +31,8 @@ class UserPolicy public function getImages(User $userToAuthorize, User $user) { return $userToAuthorize->id === $user->id || $userToAuthorize->hasRole('admin'); } + + public function edit(User $userToAuthorize, User $user) { + return $userToAuthorize->id === $user->id; + } } diff --git a/public/templates/account/_layout.html b/public/templates/account/_layout.html index 60816d59..042b0ece 100644 --- a/public/templates/account/_layout.html +++ b/public/templates/account/_layout.html @@ -1,8 +1,19 @@ diff --git a/public/templates/account/album.html b/public/templates/account/album.html index f5867312..d2836506 100644 --- a/public/templates/account/album.html +++ b/public/templates/account/album.html @@ -22,7 +22,7 @@
- +
Add Tracks diff --git a/public/templates/account/albums.html b/public/templates/account/albums.html index b896d1b6..778976ee 100644 --- a/public/templates/account/albums.html +++ b/public/templates/account/albums.html @@ -1,7 +1,7 @@