diff --git a/Changelog b/Changelog index 95a44a51d..bb286ee7a 100755 --- a/Changelog +++ b/Changelog @@ -1,4 +1,5 @@ 2018-08-02 DariusIII + * Chg: Allow moderator role to edit releases, fixes issue #123 * Chg: Update updateUserRoles.php script with new moderator 'edit release' permission * Chg: Update app/Http/Kernel class with role and permission middleware * Chg: Update install command diff --git a/app/Http/Controllers/Admin/ReleasesController.php b/app/Http/Controllers/Admin/ReleasesController.php index 4e1d9aee7..a62c4f4cf 100644 --- a/app/Http/Controllers/Admin/ReleasesController.php +++ b/app/Http/Controllers/Admin/ReleasesController.php @@ -11,11 +11,9 @@ use App\Http\Controllers\BasePageController; class ReleasesController extends BasePageController { /** - * @param \Illuminate\Http\Request $request - * * @throws \Exception */ - public function index() + public function index(): void { $this->setAdminPrefs(); @@ -107,10 +105,10 @@ class ReleasesController extends BasePageController * @return \Illuminate\Http\RedirectResponse * @throws \Exception */ - public function destroy($id) + public function destroy($id): \Illuminate\Http\RedirectResponse { if ($id) { - $releases = new Releases(['Settings' => null]); + $releases = new Releases(); $releases->deleteMultiple($id); } diff --git a/app/Http/Controllers/BasePageController.php b/app/Http/Controllers/BasePageController.php index a3152a971..861d972be 100644 --- a/app/Http/Controllers/BasePageController.php +++ b/app/Http/Controllers/BasePageController.php @@ -256,13 +256,14 @@ class BasePageController extends Controller if ($sab->integratedBool !== false && $sab->url !== '' && $sab->apikey !== '') { $this->smarty->assign('sabapikeytype', $sab->apikeytype); } - switch ((int) $this->userdata['roles_id']) { - case User::ROLE_ADMIN: - $this->smarty->assign('isadmin', 'true'); - break; - case User::ROLE_MODERATOR: - $this->smarty->assign('ismod', 'true'); + if ($this->userdata->hasRole('Admin') === true) { + $this->smarty->assign('isadmin', 'true'); } + + if ($this->userdata->hasRole('Moderator') === true) { + $this->smarty->assign('ismod', 'true'); + } + // Tell Smarty which directories to use for templates $this->smarty->setTemplateDir([ 'user' => config('ytake-laravel-smarty.template_path').DIRECTORY_SEPARATOR.$this->theme, diff --git a/resources/views/themes/Gentele/viewnzb.tpl b/resources/views/themes/Gentele/viewnzb.tpl index 3a944e074..12f9b1319 100755 --- a/resources/views/themes/Gentele/viewnzb.tpl +++ b/resources/views/themes/Gentele/viewnzb.tpl @@ -11,16 +11,17 @@
-

{$release.searchname|escape:"htmlall"} {if !empty($failed)} +

{$release.searchname|escape:"htmlall"} {if !empty($failed)} {$release.grabs} Grab{if $release.grabs != 1}s{/if} / {$failed} Failed Download{if $failed != 1}s{/if}{/if}

- {if isset($isadmin)} + {if $isadmin == true || $ismod == true} Edit + {/if} + {if isset($isadmin)} Delete diff --git a/routes/web.php b/routes/web.php index f1a23afb5..bc3c07c1c 100644 --- a/routes/web.php +++ b/routes/web.php @@ -206,137 +206,138 @@ Route::group(['middleware' => ['isVerified']], function () { Route::post('nzbvortex', 'QueueController@nzbvortex'); }); -Route::get('forum-delete/{id}', 'ForumController@destroy')->middleware('isAdmin'); +Route::get('forum-delete/{id}', 'ForumController@destroy')->middleware('role:Admin'); -Route::post('forum-delete/{id}', 'ForumController@destroy')->middleware('isAdmin'); +Route::post('forum-delete/{id}', 'ForumController@destroy')->middleware('role:Admin'); -Route::middleware('admin')->prefix('admin')->group(function () { - Route::namespace('Admin')->group(function () { - Route::get('index', 'AdminPageController@index'); - Route::get('anidb-delete/{id}', 'AnidbController@destroy'); - Route::post('anidb-delete/{id}', 'AnidbController@destroy'); - Route::get('anidb-edit/{id}', 'AnidbController@edit'); - Route::post('anidb-edit/{id}', 'AnidbController@edit'); - Route::get('anidb-list', 'AnidbController@index'); - Route::post('anidb-list', 'AnidbController@index'); - Route::get('binaryblacklist-list', 'BlacklistController@index'); - Route::post('binaryblacklist-list', 'BlacklistController@index'); - Route::get('binaryblacklist-edit', 'BlacklistController@edit'); - Route::post('binaryblacklist-edit', 'BlacklistController@edit'); - Route::get('book-list', 'BookController@index'); - Route::post('book-list', 'BookController@index'); - Route::get('book-edit', 'BookController@edit'); - Route::post('book-edit', 'BookController@edit'); - Route::get('category-list', 'CategoryController@index'); - Route::post('category-list', 'CategoryController@index'); - Route::get('category-edit', 'CategoryController@edit'); - Route::post('category-edit', 'CategoryController@edit'); - Route::get('user-list', 'UserController@index'); - Route::post('user-list', 'UserController@index'); - Route::get('user-edit', 'UserController@edit'); - Route::post('user-edit', 'UserController@edit'); - Route::get('user-delete', 'UserController@destroy'); - Route::post('user-delete', 'UserController@destroy'); - Route::get('site-edit', 'SiteController@edit'); - Route::post('site-edit', 'SiteController@edit'); - Route::get('site-stats', 'SiteController@stats'); - Route::post('site-stats', 'SiteController@stats'); - Route::get('role-list', 'RoleController@index'); - Route::post('role-list', 'RoleController@index'); - Route::get('role-edit', 'RoleController@edit'); - Route::post('role-edit', 'RoleController@edit'); - Route::get('role-delete', 'RoleController@destroy'); - Route::post('role-delete', 'RoleController@destroy'); - Route::get('content-list', 'ContentController@index'); - Route::post('content-list', 'ContentController@index'); - Route::get('content-add', 'ContentController@create'); - Route::post('content-add', 'ContentController@create'); - Route::get('content-delete', 'ContentController@destroy'); - Route::post('content-delete', 'ContentController@destroy'); - Route::get('category_regexes-list', 'CategoryRegexesController@index'); - Route::post('category_regexes-list', 'CategoryRegexesController@index'); - Route::get('category_regexes-edit', 'CategoryRegexesController@edit'); - Route::post('category_regexes-edit', 'CategoryRegexesController@edit'); - Route::get('collection_regexes-list', 'CollectionRegexesController@index'); - Route::post('collection_regexes-list', 'CollectionRegexesController@index'); - Route::get('collection_regexes-edit', 'CollectionRegexesController@edit'); - Route::post('collection_regexes-edit', 'CollectionRegexesController@edit'); - Route::get('collection_regexes-test', 'CollectionRegexesController@testRegex'); - Route::post('collection_regexes-test', 'CollectionRegexesController@testRegex'); - Route::get('release_naming_regexes-list', 'ReleaseNamingRegexesController@index'); - Route::post('release_naming_regexes-list', 'ReleaseNamingRegexesController@index'); - Route::get('release_naming_regexes-edit', 'ReleaseNamingRegexesController@edit'); - Route::post('release_naming_regexes-edit', 'ReleaseNamingRegexesController@edit'); - Route::get('release_naming_regexes-test', 'ReleaseNamingRegexesController@testRegex'); - Route::post('release_naming_regexes-test', 'ReleaseNamingRegexesController@testRegex'); - Route::get('ajax', 'AjaxController@ajaxAction'); - Route::post('ajax', 'AjaxController@ajaxAction'); - Route::get('tmux-edit', 'TmuxController@edit'); - Route::post('tmux-edit', 'TmuxController@edit'); - Route::get('posters-list', 'MgrPosterController@index'); - Route::post('posters-list', 'MgrPosterController@index'); - Route::get('posters-edit/{id?}', 'MgrPosterController@edit'); - Route::post('posters-edit{id?}', 'MgrPosterController@edit'); - Route::get('poster-delete/{id}', 'MgrPosterController@destroy'); - Route::post('poster-delete/{id}', 'MgrPosterController@destroy'); - Route::get('release-list', 'ReleasesController@index'); - Route::post('release-list', 'ReleasesController@index'); - Route::get('release-edit', 'ReleasesController@edit'); - Route::post('release-edit', 'ReleasesController@edit'); - Route::get('release-delete/{id}', 'ReleasesController@destroy'); - Route::post('release-delete/{id}', 'ReleasesController@destroy'); - Route::get('show-list', 'ShowsController@index'); - Route::post('show-list', 'ShowsController@index'); - Route::get('show-edit', 'ShowsController@edit'); - Route::post('show-edit', 'ShowsController@edit'); - Route::get('show-remove', 'ShowsController@destroy'); - Route::post('show-remove', 'ShowsController@destroy'); - Route::get('comments-list', 'CommentsController@index'); - Route::post('comments-list', 'CommentsController@index'); - Route::get('comments-delete/{id}', 'CommentsController@destroy'); - Route::post('comments-delete/{id}', 'CommentsController@destroy'); - Route::get('console-list', 'ConsoleController@index'); - Route::post('console-list', 'ConsoleController@index'); - Route::get('console-edit', 'ConsoleController@edit'); - Route::post('console-edit', 'ConsoleController@edit'); - Route::get('failrel-list', 'FailedReleasesController@index'); - Route::get('game-list', 'GameController@index'); - Route::post('game-list', 'GameController@index'); - Route::get('game-edit', 'GameController@edit'); - Route::post('game-edit', 'GameController@edit'); - Route::get('menu-list', 'MenuController@index'); - Route::post('menu-list', 'MenuController@index'); - Route::get('menu-edit', 'MenuController@edit'); - Route::post('menu-edit', 'MenuController@edit'); - Route::get('menu-delete/{id}', 'MenuController@destroy'); - Route::post('menu-delete/{id}', 'MenuController@destroy'); - Route::get('movie-list', 'MovieController@index'); - Route::post('movie-list', 'MovieController@index'); - Route::get('movie-edit', 'MovieController@edit'); - Route::post('movie-edit', 'MovieController@edit'); - Route::get('movie-add', 'MovieController@create'); - Route::post('movie-add', 'MovieController@create'); - Route::get('music-list', 'MusicController@index'); - Route::post('music-list', 'MusicController@index'); - Route::get('music-edit', 'MusicController@edit'); - Route::post('music-edit', 'MusicController@edit'); - Route::get('nzb-import', 'NzbController@import'); - Route::post('nzb-import', 'NzbController@import'); - Route::get('nzb-export', 'NzbController@export'); - Route::post('nzb-export', 'NzbController@export'); - Route::get('predb', 'PredbController@index'); - Route::post('predb', 'PredbController@index'); - Route::get('sharing', 'SharingController@index'); - Route::post('sharing', 'SharingController@index'); - Route::get('group-list', 'GroupController@index'); - Route::post('group-list', 'GroupController@index'); - Route::get('group-edit', 'GroupController@edit'); - Route::post('group-edit', 'GroupController@edit'); - Route::get('group-bulk', 'GroupController@createBulk'); - Route::post('group-bulk', 'GroupController@createBulk'); - Route::get('group-list-active', 'GroupController@active'); - Route::post('group-list-active', 'GroupController@active'); - Route::get('group-list-inactive', 'GroupController@inactive'); - Route::post('group-list-inactive', 'GroupController@inactive'); - }); +Route::group(['middleware' => ['role:Admin'], 'prefix' => 'admin', 'namespace' => 'Admin'], function () { + Route::get('index', 'AdminPageController@index'); + Route::get('anidb-delete/{id}', 'AnidbController@destroy'); + Route::post('anidb-delete/{id}', 'AnidbController@destroy'); + Route::get('anidb-edit/{id}', 'AnidbController@edit'); + Route::post('anidb-edit/{id}', 'AnidbController@edit'); + Route::get('anidb-list', 'AnidbController@index'); + Route::post('anidb-list', 'AnidbController@index'); + Route::get('binaryblacklist-list', 'BlacklistController@index'); + Route::post('binaryblacklist-list', 'BlacklistController@index'); + Route::get('binaryblacklist-edit', 'BlacklistController@edit'); + Route::post('binaryblacklist-edit', 'BlacklistController@edit'); + Route::get('book-list', 'BookController@index'); + Route::post('book-list', 'BookController@index'); + Route::get('book-edit', 'BookController@edit'); + Route::post('book-edit', 'BookController@edit'); + Route::get('category-list', 'CategoryController@index'); + Route::post('category-list', 'CategoryController@index'); + Route::get('category-edit', 'CategoryController@edit'); + Route::post('category-edit', 'CategoryController@edit'); + Route::get('user-list', 'UserController@index'); + Route::post('user-list', 'UserController@index'); + Route::get('user-edit', 'UserController@edit'); + Route::post('user-edit', 'UserController@edit'); + Route::get('user-delete', 'UserController@destroy'); + Route::post('user-delete', 'UserController@destroy'); + Route::get('site-edit', 'SiteController@edit'); + Route::post('site-edit', 'SiteController@edit'); + Route::get('site-stats', 'SiteController@stats'); + Route::post('site-stats', 'SiteController@stats'); + Route::get('role-list', 'RoleController@index'); + Route::post('role-list', 'RoleController@index'); + Route::get('role-edit', 'RoleController@edit'); + Route::post('role-edit', 'RoleController@edit'); + Route::get('role-delete', 'RoleController@destroy'); + Route::post('role-delete', 'RoleController@destroy'); + Route::get('content-list', 'ContentController@index'); + Route::post('content-list', 'ContentController@index'); + Route::get('content-add', 'ContentController@create'); + Route::post('content-add', 'ContentController@create'); + Route::get('content-delete', 'ContentController@destroy'); + Route::post('content-delete', 'ContentController@destroy'); + Route::get('category_regexes-list', 'CategoryRegexesController@index'); + Route::post('category_regexes-list', 'CategoryRegexesController@index'); + Route::get('category_regexes-edit', 'CategoryRegexesController@edit'); + Route::post('category_regexes-edit', 'CategoryRegexesController@edit'); + Route::get('collection_regexes-list', 'CollectionRegexesController@index'); + Route::post('collection_regexes-list', 'CollectionRegexesController@index'); + Route::get('collection_regexes-edit', 'CollectionRegexesController@edit'); + Route::post('collection_regexes-edit', 'CollectionRegexesController@edit'); + Route::get('collection_regexes-test', 'CollectionRegexesController@testRegex'); + Route::post('collection_regexes-test', 'CollectionRegexesController@testRegex'); + Route::get('release_naming_regexes-list', 'ReleaseNamingRegexesController@index'); + Route::post('release_naming_regexes-list', 'ReleaseNamingRegexesController@index'); + Route::get('release_naming_regexes-edit', 'ReleaseNamingRegexesController@edit'); + Route::post('release_naming_regexes-edit', 'ReleaseNamingRegexesController@edit'); + Route::get('release_naming_regexes-test', 'ReleaseNamingRegexesController@testRegex'); + Route::post('release_naming_regexes-test', 'ReleaseNamingRegexesController@testRegex'); + Route::get('ajax', 'AjaxController@ajaxAction'); + Route::post('ajax', 'AjaxController@ajaxAction'); + Route::get('tmux-edit', 'TmuxController@edit'); + Route::post('tmux-edit', 'TmuxController@edit'); + Route::get('posters-list', 'MgrPosterController@index'); + Route::post('posters-list', 'MgrPosterController@index'); + Route::get('posters-edit/{id?}', 'MgrPosterController@edit'); + Route::post('posters-edit{id?}', 'MgrPosterController@edit'); + Route::get('poster-delete/{id}', 'MgrPosterController@destroy'); + Route::post('poster-delete/{id}', 'MgrPosterController@destroy'); + Route::get('release-list', 'ReleasesController@index'); + Route::post('release-list', 'ReleasesController@index'); + Route::get('release-delete/{id}', 'ReleasesController@destroy'); + Route::post('release-delete/{id}', 'ReleasesController@destroy'); + Route::get('show-list', 'ShowsController@index'); + Route::post('show-list', 'ShowsController@index'); + Route::get('show-edit', 'ShowsController@edit'); + Route::post('show-edit', 'ShowsController@edit'); + Route::get('show-remove', 'ShowsController@destroy'); + Route::post('show-remove', 'ShowsController@destroy'); + Route::get('comments-list', 'CommentsController@index'); + Route::post('comments-list', 'CommentsController@index'); + Route::get('comments-delete/{id}', 'CommentsController@destroy'); + Route::post('comments-delete/{id}', 'CommentsController@destroy'); + Route::get('console-list', 'ConsoleController@index'); + Route::post('console-list', 'ConsoleController@index'); + Route::get('console-edit', 'ConsoleController@edit'); + Route::post('console-edit', 'ConsoleController@edit'); + Route::get('failrel-list', 'FailedReleasesController@index'); + Route::get('game-list', 'GameController@index'); + Route::post('game-list', 'GameController@index'); + Route::get('game-edit', 'GameController@edit'); + Route::post('game-edit', 'GameController@edit'); + Route::get('menu-list', 'MenuController@index'); + Route::post('menu-list', 'MenuController@index'); + Route::get('menu-edit', 'MenuController@edit'); + Route::post('menu-edit', 'MenuController@edit'); + Route::get('menu-delete/{id}', 'MenuController@destroy'); + Route::post('menu-delete/{id}', 'MenuController@destroy'); + Route::get('movie-list', 'MovieController@index'); + Route::post('movie-list', 'MovieController@index'); + Route::get('movie-edit', 'MovieController@edit'); + Route::post('movie-edit', 'MovieController@edit'); + Route::get('movie-add', 'MovieController@create'); + Route::post('movie-add', 'MovieController@create'); + Route::get('music-list', 'MusicController@index'); + Route::post('music-list', 'MusicController@index'); + Route::get('music-edit', 'MusicController@edit'); + Route::post('music-edit', 'MusicController@edit'); + Route::get('nzb-import', 'NzbController@import'); + Route::post('nzb-import', 'NzbController@import'); + Route::get('nzb-export', 'NzbController@export'); + Route::post('nzb-export', 'NzbController@export'); + Route::get('predb', 'PredbController@index'); + Route::post('predb', 'PredbController@index'); + Route::get('sharing', 'SharingController@index'); + Route::post('sharing', 'SharingController@index'); + Route::get('group-list', 'GroupController@index'); + Route::post('group-list', 'GroupController@index'); + Route::get('group-edit', 'GroupController@edit'); + Route::post('group-edit', 'GroupController@edit'); + Route::get('group-bulk', 'GroupController@createBulk'); + Route::post('group-bulk', 'GroupController@createBulk'); + Route::get('group-list-active', 'GroupController@active'); + Route::post('group-list-active', 'GroupController@active'); + Route::get('group-list-inactive', 'GroupController@inactive'); + Route::post('group-list-inactive', 'GroupController@inactive'); +}); + +Route::group(['middleware' => ['role:Admin|Moderator|permission:edit release'], 'prefix' => 'admin', 'namespace' => 'Admin'], function () { + Route::get('release-edit', 'ReleasesController@edit'); + Route::post('release-edit', 'ReleasesController@edit'); });