diff --git a/Changelog b/Changelog index e4898439b..02fa92e29 100755 --- a/Changelog +++ b/Changelog @@ -1,3 +1,5 @@ +2018-08-01 DariusIII + * Chg: Update role related classes, rename user_roles to roles where used 2018-07-30 DariusIII * Chg: Update roleCheck function in User model * Chg: Update roles handling diff --git a/app/Console/Commands/FixturesDown.php b/app/Console/Commands/FixturesDown.php index 7b6ab59d2..b45f0e56f 100644 --- a/app/Console/Commands/FixturesDown.php +++ b/app/Console/Commands/FixturesDown.php @@ -21,7 +21,6 @@ class FixturesDown extends Command 'release_naming_regexes', 'settings', 'tmux', - 'user_roles', ]; /** * The name and signature of the console command. @@ -47,8 +46,7 @@ class FixturesDown extends Command menu release_naming_regexes settings - tmux - user_roles'; + tmux'; /** * Create a new command instance. diff --git a/app/Console/Commands/FixturesUp.php b/app/Console/Commands/FixturesUp.php index 773afd2bd..7c4f13361 100644 --- a/app/Console/Commands/FixturesUp.php +++ b/app/Console/Commands/FixturesUp.php @@ -22,7 +22,6 @@ class FixturesUp extends Command 'release_naming_regexes', 'settings', 'tmux', - 'user_roles', ]; /** * The name and signature of the console command. @@ -48,8 +47,7 @@ class FixturesUp extends Command menu release_naming_regexes settings - tmux - user_roles'; + tmux'; /** * Create a new command instance. diff --git a/app/Http/Controllers/Admin/MenuController.php b/app/Http/Controllers/Admin/MenuController.php index 9df8db74b..d7def638a 100644 --- a/app/Http/Controllers/Admin/MenuController.php +++ b/app/Http/Controllers/Admin/MenuController.php @@ -3,9 +3,9 @@ namespace App\Http\Controllers\Admin; use App\Models\Menu; -use App\Models\UserRole; use Illuminate\Http\Request; use App\Http\Controllers\BasePageController; +use Spatie\Permission\Models\Role; class MenuController extends BasePageController { @@ -35,6 +35,7 @@ class MenuController extends BasePageController /** * @param \Illuminate\Http\Request $request * + * @return \Illuminate\Http\RedirectResponse|\Illuminate\Routing\Redirector * @throws \Exception */ public function edit(Request $request) @@ -42,7 +43,7 @@ class MenuController extends BasePageController $this->setAdminPrefs(); // Get the user roles. - $userroles = UserRole::getRoles(); + $userroles = Role::all()->toArray(); $roles = []; foreach ($userroles as $r) { $roles[$r['id']] = $r['name']; diff --git a/app/Http/Controllers/Admin/RoleController.php b/app/Http/Controllers/Admin/RoleController.php index 2ef84debe..a3cbb1943 100644 --- a/app/Http/Controllers/Admin/RoleController.php +++ b/app/Http/Controllers/Admin/RoleController.php @@ -7,6 +7,7 @@ use App\Models\UserRole; use Illuminate\Http\Request; use App\Models\RoleExcludedCategory; use App\Http\Controllers\BasePageController; +use Spatie\Permission\Models\Role; class RoleController extends BasePageController { @@ -20,7 +21,7 @@ class RoleController extends BasePageController $title = 'User Role List'; //get the user roles - $userroles = UserRole::getRoles(); + $userroles = Role::all()->toArray(); $this->smarty->assign('userroles', $userroles); @@ -49,7 +50,7 @@ class RoleController extends BasePageController $title = 'User Roles'; // Get the user roles. - $userRoles = UserRole::getRoles(); + $userRoles = Role::all()->toArray(); $roles = []; foreach ($userRoles as $userRole) { $roles[$userRole['id']] = $userRole['name']; @@ -76,10 +77,30 @@ class RoleController extends BasePageController case 'submit': if (empty($request->input('id'))) { $title = 'Add User Role'; - $role = UserRole::addRole($request->all()); + $role = Role::create([ + 'name' => $request->input('name'), + 'apirequests' => $request->input('apirequests'), + 'downloadrequests' => $request->input('downloadrequests'), + 'defaultinvites' => $request->input('defaultinvites'), + 'canpreview' => $request->input('canpreview'), + 'hideads' => $request->input('hideads'), + 'donation' => $request->input('donation'), + 'addyears' => $request->input('addyears'), + 'rate_limit' => $request->input('rate_limit'), + ]); } else { $title = 'Update User Role'; - $role = UserRole::updateRole($request->all()); + $role = Role::query()->where('id', $request->input('id'))->update([ + 'name' => $request->input('name'), + 'apirequests' => $request->input('apirequests'), + 'downloadrequests' => $request->input('downloadrequests'), + 'defaultinvites' => $request->input('defaultinvites'), + 'canpreview' => $request->input('canpreview'), + 'hideads' => $request->input('hideads'), + 'donation' => $request->input('donation'), + 'addyears' => $request->input('addyears'), + 'rate_limit' => $request->input('rate_limit'), + ]); $request->merge(['exccat' => (! $request->has('exccat') || ! \is_array($request->input('exccat'))) ? [] : $request->input('exccat')]); RoleExcludedCategory::addRoleCategoryExclusions($request->input('id'), $request->input('exccat')); @@ -92,7 +113,7 @@ class RoleController extends BasePageController default: if ($request->has('id')) { $title = 'User Roles Edit'; - $role = UserRole::getRoleById($request->input('id')); + $role = Role::query()->where('id', $request->input('id'))->first(); $this->smarty->assign('role', $role); $this->smarty->assign('roleexccat', RoleExcludedCategory::getRoleCategoryExclusion($request->input('id'))); } @@ -124,7 +145,7 @@ class RoleController extends BasePageController public function destroy(Request $request) { if ($request->has('id')) { - UserRole::deleteRole($request->input('id')); + Role::query()->where('id', $request->input('id'))->delete(); } return redirect($request->server('HTTP_REFERER')); diff --git a/app/Http/Controllers/Admin/SiteController.php b/app/Http/Controllers/Admin/SiteController.php index 5e29e854c..4675abaaf 100644 --- a/app/Http/Controllers/Admin/SiteController.php +++ b/app/Http/Controllers/Admin/SiteController.php @@ -8,10 +8,10 @@ use App\Models\Release; use Blacklight\SABnzbd; use App\Models\Category; use App\Models\Settings; -use App\Models\UserRole; use Illuminate\Http\Request; use Blacklight\utility\Utility; use App\Http\Controllers\BasePageController; +use Spatie\Permission\Models\Role; class SiteController extends BasePageController { @@ -214,7 +214,7 @@ class SiteController extends BasePageController $usersbymonth = User::getUsersByMonth(); $this->smarty->assign('usersbymonth', $usersbymonth); - $usersbyrole = UserRole::getUsersByRole(); + $usersbyrole = Role::query()->select(['name'])->withCount('users')->groupBy('name')->having('users_count', '>', 0)->orderBy('users_count', 'desc')->get(); $this->smarty->assign('usersbyrole', $usersbyrole); $this->smarty->assign('totusers', 0); $this->smarty->assign('totrusers', 0); diff --git a/app/Http/Controllers/Admin/UserController.php b/app/Http/Controllers/Admin/UserController.php index 18888394f..7da93cfb9 100644 --- a/app/Http/Controllers/Admin/UserController.php +++ b/app/Http/Controllers/Admin/UserController.php @@ -3,12 +3,12 @@ namespace App\Http\Controllers\Admin; use App\Models\User; -use App\Models\UserRole; use App\Models\Invitation; use App\Mail\AccountChange; use Illuminate\Http\Request; use Illuminate\Support\Facades\Mail; use App\Http\Controllers\BasePageController; +use Spatie\Permission\Models\Role; class UserController extends BasePageController { @@ -24,7 +24,7 @@ class UserController extends BasePageController $title = 'User List'; $roles = []; - foreach (UserRole::getRoles() as $userRole) { + foreach (Role::all()->toArray() as $userRole) { $roles[$userRole['id']] = $userRole['name']; } @@ -103,9 +103,9 @@ class UserController extends BasePageController $action = $request->input('action') ?? 'view'; //get the user roles - $userRoles = UserRole::getRoles(); + $userRoles = Role::all()->toArray(); $roles = []; - $defaultRole = User::ROLE_USER; + $defaultRole = 'User'; $defaultInvites = Invitation::DEFAULT_INVITES; foreach ($userRoles as $r) { $roles[$r['id']] = $r['name']; @@ -149,7 +149,7 @@ class UserController extends BasePageController User::updateUserRoleChangeDate($request->input('id'), $request->input('rolechangedate')); } if ($request->input('role') !== null) { - UserRole::query()->where('id', $request->input('role'))->value('name'); + Role::query()->where('id', $request->input('role'))->value('name'); $email = $request->input('email') ?? $request->input('email'); Mail::to($email)->send(new AccountChange($request->input('id'))); } diff --git a/app/Http/Controllers/Auth/RegisterController.php b/app/Http/Controllers/Auth/RegisterController.php index af743eccb..a769fd0bb 100644 --- a/app/Http/Controllers/Auth/RegisterController.php +++ b/app/Http/Controllers/Auth/RegisterController.php @@ -4,7 +4,6 @@ namespace App\Http\Controllers\Auth; use App\Models\User; use App\Models\Settings; -use App\Models\UserRole; use App\Models\Invitation; use Illuminate\Support\Str; use Illuminate\Http\Request; @@ -15,6 +14,7 @@ use Illuminate\Support\Facades\Password; use Illuminate\Foundation\Auth\RegistersUsers; use Jrean\UserVerification\Traits\VerifiesUsers; use Jrean\UserVerification\Facades\UserVerification; +use Spatie\Permission\Models\Role; class RegisterController extends Controller { @@ -114,7 +114,7 @@ class RegisterController extends Controller } // Get the default user role. - $userDefault = UserRole::getDefaultRole(); + $userDefault = Role::query()->where('isdefault', '=', 1)->first(); if ((int) Settings::settingValue('..registerstatus') === Settings::REGISTER_STATUS_INVITE) { if ($inviteCode === '') { diff --git a/app/Http/Controllers/BtcPaymentController.php b/app/Http/Controllers/BtcPaymentController.php index ea6fb8d88..e2900a148 100644 --- a/app/Http/Controllers/BtcPaymentController.php +++ b/app/Http/Controllers/BtcPaymentController.php @@ -3,9 +3,9 @@ namespace App\Http\Controllers; use App\Models\User; -use App\Models\UserRole; use Illuminate\Http\Request; use Blacklight\libraries\Geary; +use Spatie\Permission\Models\Role; class BtcPaymentController extends BasePageController { @@ -20,7 +20,7 @@ class BtcPaymentController extends BasePageController $gateway_secret = env('MYCELIUM_GATEWAY_SECRET'); $action = $request->input('action') ?? 'view'; - $donation = UserRole::query()->where('donation', '>', 0)->get(['id', 'name', 'donation', 'addyears']); + $donation = Role::query()->where('donation', '>', 0)->get(['id', 'name', 'donation', 'addyears']); $this->smarty->assign('donation', $donation); switch ($action) { diff --git a/app/Models/Forumpost.php b/app/Models/Forumpost.php index a576d70c3..9c26f2efb 100644 --- a/app/Models/Forumpost.php +++ b/app/Models/Forumpost.php @@ -116,7 +116,7 @@ class Forumpost extends Model ->where('forumpost.id', $parent) ->orWhere('forumpost.parentid', $parent) ->leftJoin('users', 'users.id', '=', 'forumpost.users_id') - ->leftJoin('user_roles', 'user_roles.id', '=', 'users.user_roles_id') + ->leftJoin('roles', 'roles.id', '=', 'users.roles_id') ->orderBy('forumpost.created_at') ->limit(250) ->select(['forumpost.*', 'users.username', 'user_roles.name as rolename']) @@ -148,8 +148,8 @@ class Forumpost extends Model return self::query() ->where('forumpost.parentid', '=', 0) ->leftJoin('users', 'users.id', '=', 'forumpost.users_id') - ->leftJoin('user_roles', 'user_roles.id', '=', 'users.user_roles_id') - ->select(['forumpost.*', 'users.username', 'user_roles.name as rolename']) + ->leftJoin('roles', 'roles.id', '=', 'users.roles_id') + ->select(['forumpost.*', 'users.username', 'roles.name as rolename']) ->orderBy('forumpost.updated_at', 'desc') ->paginate(config('nntmux.items_per_page')); } diff --git a/app/Models/RoleExcludedCategory.php b/app/Models/RoleExcludedCategory.php index 291682a3c..adaef4507 100644 --- a/app/Models/RoleExcludedCategory.php +++ b/app/Models/RoleExcludedCategory.php @@ -3,6 +3,7 @@ namespace App\Models; use Illuminate\Database\Eloquent\Model; +use Spatie\Permission\Models\Role; /** * App\Models\RoleExcludedCategory. @@ -13,7 +14,6 @@ use Illuminate\Database\Eloquent\Model; * @property \Carbon\Carbon|null $created_at * @property \Carbon\Carbon|null $updated_at * @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\Category[] $category - * @property-read \App\Models\UserRole $role * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\RoleExcludedCategory whereCategoriesId($value) * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\RoleExcludedCategory whereCreatedAt($value) * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\RoleExcludedCategory whereId($value) @@ -29,7 +29,7 @@ class RoleExcludedCategory extends Model public function role() { - return $this->belongsTo(UserRole::class, 'user_roles_id'); + return $this->belongsTo(Role::class, 'roles_id'); } public function category() diff --git a/app/Models/User.php b/app/Models/User.php index a82d88714..d662dc3a2 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -24,7 +24,7 @@ use Illuminate\Foundation\Auth\User as Authenticatable; * @property string|null $lastname * @property string $email * @property string $password - * @property int $user_roles_id FK to user_roles.id + * @property int $user_roles_id FK to roles.id * @property string|null $host * @property int $grabs * @property string $rsstoken diff --git a/database/migrations/2018_01_16_195548_create_users_table.php b/database/migrations/2018_01_16_195548_create_users_table.php index ea877c8ef..44eb8a01e 100644 --- a/database/migrations/2018_01_16_195548_create_users_table.php +++ b/database/migrations/2018_01_16_195548_create_users_table.php @@ -23,6 +23,7 @@ class CreateUsersTable extends Migration { $table->string('lastname')->nullable(); $table->string('email'); $table->string('password'); + $table->integer('roles_id')->default(1)->index('ix_user_roles')->comment('FK to roles.id'); $table->string('host', 40)->nullable(); $table->integer('grabs')->default(0); $table->string('api_token', 64);