diff --git a/Changelog b/Changelog index 599404c78..f00c75c1f 100755 --- a/Changelog +++ b/Changelog @@ -1,4 +1,5 @@ 2018-08-24 DariusIII + * Fix: Fix adding new roles * Chg: Update spatie/laravel-fractal to version 5.4.1 * Chg: Add additional checks to audio related data in ReleaseExtra class * Chg: Update firewall config, allow 10 requests per minute diff --git a/app/Http/Controllers/Admin/RoleController.php b/app/Http/Controllers/Admin/RoleController.php index 263347ce2..a771da7ae 100644 --- a/app/Http/Controllers/Admin/RoleController.php +++ b/app/Http/Controllers/Admin/RoleController.php @@ -24,13 +24,11 @@ class RoleController extends BasePageController $content = $this->smarty->fetch('role-list.tpl'); - $this->smarty->assign( - [ + $this->smarty->assign([ 'title' => $title, 'meta_title' => $title, 'content' => $content, - ] - ); + ]); $this->adminrender(); } @@ -40,47 +38,20 @@ class RoleController extends BasePageController * * @throws \Exception */ - public function edit(Request $request) + public function create(Request $request): void { $this->setAdminPrefs(); - $title = 'User Roles'; - - // Get the user roles. - $userRoles = Role::all(); - $roles = []; - foreach ($userRoles as $userRole) { - $roles[$userRole['id']] = $userRole['name']; - } - switch ($request->input('action') ?? 'view') { - case 'add': - $title = 'Add User Role'; - $role = [ - 'id' => '', - 'name' => '', - 'apirequests' => '', - 'downloadrequests' => '', - 'defaultinvites' => '', - 'isdefault' => 0, - 'canpreview' => 0, - 'hideads' => 0, - 'donation' => 0, - 'addyears' => 0, - ]; - $this->smarty->assign('role', $role); - break; - case 'submit': - if (empty($request->input('id'))) { - $title = 'Add User Role'; + $title = 'Add User Role'; $role = Role::create([ 'name' => $request->input('name'), 'apirequests' => $request->input('apirequests'), 'downloadrequests' => $request->input('downloadrequests'), 'defaultinvites' => $request->input('defaultinvites'), - 'donation' => $request->input('donation'), - 'addyears' => $request->input('addyears'), + 'donation' => $request->input('donation') ?? 0, + 'addyears' => $request->input('addyears') ?? 0, 'rate_limit' => $request->input('rate_limit'), ]); if ((int) $request->input('canpreview') === 1) { @@ -126,7 +97,54 @@ class RoleController extends BasePageController if ((int) $request->input('viewother') === 1) { $role->givePermissionTo('view other'); } - } else { + redirect()->to('admin/role-list')->sendHeaders(); + break; + case 'view': + default : + $title = 'Add User Role'; + $role = [ + ]; + + break; + } + + $this->smarty->assign('yesno_ids', [1, 0]); + $this->smarty->assign('yesno_names', ['Yes', 'No']); + + $content = $this->smarty->fetch('role-add.tpl'); + + $this->smarty->assign( + [ + 'title' => $title, + 'meta_title' => $title, + 'content' => $content, + 'role' => $role + ] + ); + + $this->adminrender(); + } + + /** + * @param \Illuminate\Http\Request $request + * + * @throws \Exception + */ + public function edit(Request $request): void + { + $this->setAdminPrefs(); + + $title = 'User Roles'; + + // Get the user roles. + $userRoles = Role::all(); + $roles = []; + foreach ($userRoles as $userRole) { + $roles[$userRole['id']] = $userRole['name']; + } + + switch ($request->input('action') ?? 'view') { + case 'submit': $title = 'Update User Role'; $role = Role::find($request->input('id')); $role->update([ @@ -205,7 +223,7 @@ class RoleController extends BasePageController } elseif ((int) $request->input('viewother') === 0 && $role->hasPermissionTo('view other') === true) { $role->revokePermissionTo('view other'); } - } + $this->smarty->assign('role', $role); redirect()->to('admin/role-list')->sendHeaders(); break; diff --git a/resources/views/themes/admin/adminmenu.tpl b/resources/views/themes/admin/adminmenu.tpl index 75299c85d..b65c3cd75 100644 --- a/resources/views/themes/admin/adminmenu.tpl +++ b/resources/views/themes/admin/adminmenu.tpl @@ -107,7 +107,7 @@
  • View Users
  • Add Users
  • View User Roles
  • -
  • Add User Roles
  • +
  • Add User Roles
  • Tmux diff --git a/resources/views/themes/admin/role-add.tpl b/resources/views/themes/admin/role-add.tpl new file mode 100644 index 000000000..75d3233ea --- /dev/null +++ b/resources/views/themes/admin/role-add.tpl @@ -0,0 +1,159 @@ +
    +

    {$title}

    + + Go + back + {{Form::open(['url' => 'admin/role-add?action=submit', 'method' => 'post'])}} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Name: + +
    The name of the role
    +
    Api Requests: + +
    Number of api requests allowed per 24 hour period
    +
    Api rate limit: + +
    Number of api requests allowed per 1 minute
    +
    Download Requests: + +
    Number of downloads allowed per 24 hour period
    +
    Invites: + +
    Default number of invites to give users on account creation
    +
    Can Preview: + {html_radios id="canpreview" name='canpreview' values=$yesno_ids output=$yesno_names selected=0 separator='
    '} +
    Whether the role can preview screenshots
    +
    Hide Ads: + {html_radios id="hideads" name='hideads' values=$yesno_ids output=$yesno_names selected=0 separator='
    '} +
    Whether ad's are hidden
    +
    Edit Release: + {html_radios id="editrelease" name='editrelease' values=$yesno_ids output=$yesno_names selected=0 separator='
    '} +
    Can the role edit releases
    +
    Donation amount: + +
    Years Added: + +
    Is Default Role: + {html_radios id="role" name='isdefault' values=$yesno_ids output=$yesno_names selected=0 separator='
    '} +
    Make this the default role for new users
    +
    Can view Console releases + {html_radios id="viewconsole" name='viewconsole' values=$yesno_ids output=$yesno_names selected=0 separator='
    '} +
    Can this role view console releases
    +
    Can view Movie releases + {html_radios id="viewmovies" name='viewmovies' values=$yesno_ids output=$yesno_names selected=0 separator='
    '} +
    Can this role view movie releases
    +
    Can view Audio releases + {html_radios id="viewaudio" name='viewaudio' values=$yesno_ids output=$yesno_names selected=0 separator='
    '} +
    Can this role view audio releases
    +
    Can view PC releases + {html_radios id="viewpc" name='viewpc' values=$yesno_ids output=$yesno_names selected=0 separator='
    '} +
    Can this role view pc releases
    +
    Can view TV releases + {html_radios id="viewtv" name='viewtv' values=$yesno_ids output=$yesno_names selected=0 separator='
    '} +
    Can this role view tv releases
    +
    Can view Adult releases + {html_radios id="viewadult" name='viewadult' values=$yesno_ids output=$yesno_names selected=0 separator='
    '} +
    Can this role view adult releases
    +
    Can view Book releases + {html_radios id="viewbooks" name='viewbooks' values=$yesno_ids output=$yesno_names selected=0 separator='
    '} +
    Can this role view book releases
    +
    Can view Other releases + {html_radios id="viewother" name='viewother' values=$yesno_ids output=$yesno_names selected=0 separator='
    '} +
    Can this role view other releases
    +
    + +
    + + {{Form::close()}} +
    diff --git a/routes/web.php b/routes/web.php index 2f0df68c8..793897334 100644 --- a/routes/web.php +++ b/routes/web.php @@ -244,6 +244,8 @@ Route::group(['middleware' => ['role:Admin'], 'prefix' => 'admin', 'namespace' = Route::post('site-stats', 'SiteController@stats'); Route::get('role-list', 'RoleController@index'); Route::post('role-list', 'RoleController@index'); + Route::get('role-add', 'RoleController@create'); + Route::post('role-add', 'RoleController@create'); Route::get('role-edit', 'RoleController@edit'); Route::post('role-edit', 'RoleController@edit'); Route::get('role-delete', 'RoleController@destroy');