diff --git a/app/Http/Controllers/Admin/RoleController.php b/app/Http/Controllers/Admin/RoleController.php
index 3850c180..9a521938 100644
--- a/app/Http/Controllers/Admin/RoleController.php
+++ b/app/Http/Controllers/Admin/RoleController.php
@@ -10,6 +10,7 @@ use Illuminate\Contracts\View\Factory;
use Illuminate\Contracts\View\View;
use Illuminate\Http\RedirectResponse;
use Illuminate\Http\Request;
+use Illuminate\Support\Facades\Auth;
use Spatie\Permission\Models\Permission;
use Spatie\Permission\Models\Role;
@@ -66,7 +67,8 @@ class RoleController extends Controller
$role = Role::create([
'name' => $request->name,
- 'color' => $request->color
+ 'color' => $request->color,
+ 'power' => $request->power
]);
if ($request->permissions) {
@@ -96,6 +98,10 @@ class RoleController extends Controller
{
$this->checkPermission(self::EDIT_PERMISSION);
+ if(Auth::user()->roles[0]->power < $role->power){
+ return back()->with("error","You dont have enough Power to edit that Role");
+ }
+
$permissions = Permission::all();
return view('admin.roles.edit', compact('role', 'permissions'));
@@ -111,6 +117,10 @@ class RoleController extends Controller
{
$this->checkPermission(self::EDIT_PERMISSION);
+ if(Auth::user()->roles[0]->power < $role->power){
+ return back()->with("error","You dont have enough Power to edit that Role");
+ }
+
if ($request->permissions) {
if($role->id != 1){ //disable admin permissions change
$role->syncPermissions($request->permissions);
@@ -201,6 +211,9 @@ class RoleController extends Controller
->editColumn('permissionscount', function ($query){
return $query->permissions_count;
})
+ ->editColumn('power', function (Role $role){
+ return $role->power;
+ })
->rawColumns(['actions', 'name'])
->make(true);
}
diff --git a/database/migrations/2023_05_05_090127_role_power.php b/database/migrations/2023_05_05_090127_role_power.php
new file mode 100644
index 00000000..9c8da51d
--- /dev/null
+++ b/database/migrations/2023_05_05_090127_role_power.php
@@ -0,0 +1,32 @@
+integer('power')->after("color")->default(50);
+ });
+ }
+
+ /**
+ * Reverse the migrations.
+ *
+ * @return void
+ */
+ public function down()
+ {
+ Schema::table('roles', function (Blueprint $table) {
+ $table->dropColumn('power');
+ });
+ }
+};
diff --git a/database/seeders/PermissionsSeeder.php b/database/seeders/PermissionsSeeder.php
index e688bdf0..e7738e70 100644
--- a/database/seeders/PermissionsSeeder.php
+++ b/database/seeders/PermissionsSeeder.php
@@ -66,10 +66,10 @@ class PermissionsSeeder extends Seeder
'user.referral',
];
/** @var Role $adminRole */
- $adminRole = Role::updateOrCreate(["name"=>"Admin","color"=>"#fa0000"]);
- $supportRole = Role::updateOrCreate(["name"=>"Support-Team","color"=>"#00b0b3"]);
- $clientRole = Role::updateOrCreate(["name"=>"Client","color"=>"#008009"]);
- $userRole = Role::updateOrCreate(["name"=>"User","color"=>"#0052a3"]);
+ $adminRole = Role::updateOrCreate(["name"=>"Admin","color"=>"#fa0000", "power"=>100]);
+ $supportRole = Role::updateOrCreate(["name"=>"Support-Team","color"=>"#00b0b3","power"=>50]);
+ $clientRole = Role::updateOrCreate(["name"=>"Client","color"=>"#008009","power"=>10]);
+ $userRole = Role::updateOrCreate(["name"=>"User","color"=>"#0052a3","power"=>10]);
$adminRole->givePermissionTo(Permission::findByName('*'));
diff --git a/themes/default/views/admin/roles/edit.blade.php b/themes/default/views/admin/roles/edit.blade.php
index 2abbe808..453233f6 100644
--- a/themes/default/views/admin/roles/edit.blade.php
+++ b/themes/default/views/admin/roles/edit.blade.php
@@ -25,6 +25,13 @@
name="color"
value="{{ isset($role) ? $role->color : null}}"/>
+