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