Allow moderator role to edit releases, fixes issue #123

This commit is contained in:
DariusIII
2018-08-02 12:35:07 +02:00
parent d3494f33a4
commit db44d3a740
5 changed files with 147 additions and 145 deletions
+1
View File
@@ -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
@@ -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);
}
+7 -6
View File
@@ -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,
+4 -3
View File
@@ -11,16 +11,17 @@
<div class="col-lg-12 col-sm-12 col-xs-12">
<div class="panel panel-default">
<div class="panel-body pagination2">
<h1>{$release.searchname|escape:"htmlall"} {if !empty($failed)}<span class="btn btn-default btn-xs"
title="This release has failed to download for some users">
<h1>{$release.searchname|escape:"htmlall"} {if !empty($failed)}<span class="btn btn-default btn-xs"title="This release has failed to download for some users">
<i class="fa fa-thumbs-o-up"></i>
{$release.grabs} Grab{if $release.grabs != 1}s{/if} /
<i class="fa fa-thumbs-o-down"></i>
{$failed} Failed Download{if $failed != 1}s{/if}</span>{/if}</h1>
{if isset($isadmin)}
{if $isadmin == true || $ismod == true}
<a class="label label-warning"
href="{$smarty.const.WWW_TOP}/admin/release-edit?id={$release.guid}"
title="Edit release">Edit</a>
{/if}
{if isset($isadmin)}
<a class="label label-danger"
href="{$smarty.const.WWW_TOP}/admin/release-delete/{$release.guid}"
title="Delete release">Delete</a>
+132 -131
View File
@@ -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');
});