Browse Source

role powers

1day2die 2 years ago
parent
commit
7d974d3408

+ 14 - 1
app/Http/Controllers/Admin/RoleController.php

@@ -10,6 +10,7 @@ use Illuminate\Contracts\View\Factory;
 use Illuminate\Contracts\View\View;
 use Illuminate\Contracts\View\View;
 use Illuminate\Http\RedirectResponse;
 use Illuminate\Http\RedirectResponse;
 use Illuminate\Http\Request;
 use Illuminate\Http\Request;
+use Illuminate\Support\Facades\Auth;
 use Spatie\Permission\Models\Permission;
 use Spatie\Permission\Models\Permission;
 use Spatie\Permission\Models\Role;
 use Spatie\Permission\Models\Role;
 
 
@@ -66,7 +67,8 @@ class RoleController extends Controller
 
 
         $role = Role::create([
         $role = Role::create([
             'name' => $request->name,
             'name' => $request->name,
-            'color' => $request->color
+            'color' => $request->color,
+            'power' => $request->power
         ]);
         ]);
 
 
         if ($request->permissions) {
         if ($request->permissions) {
@@ -96,6 +98,10 @@ class RoleController extends Controller
     {
     {
         $this->checkPermission(self::EDIT_PERMISSION);
         $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();
         $permissions = Permission::all();
 
 
         return view('admin.roles.edit', compact('role', 'permissions'));
         return view('admin.roles.edit', compact('role', 'permissions'));
@@ -111,6 +117,10 @@ class RoleController extends Controller
     {
     {
         $this->checkPermission(self::EDIT_PERMISSION);
         $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 ($request->permissions) {
             if($role->id != 1){ //disable admin permissions change
             if($role->id != 1){ //disable admin permissions change
                 $role->syncPermissions($request->permissions);
                 $role->syncPermissions($request->permissions);
@@ -201,6 +211,9 @@ class RoleController extends Controller
             ->editColumn('permissionscount', function ($query){
             ->editColumn('permissionscount', function ($query){
                 return $query->permissions_count;
                 return $query->permissions_count;
             })
             })
+            ->editColumn('power', function (Role $role){
+                return $role->power;
+            })
             ->rawColumns(['actions', 'name'])
             ->rawColumns(['actions', 'name'])
             ->make(true);
             ->make(true);
     }
     }

+ 32 - 0
database/migrations/2023_05_05_090127_role_power.php

@@ -0,0 +1,32 @@
+<?php
+
+use Illuminate\Database\Migrations\Migration;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Support\Facades\Schema;
+
+return new class extends Migration
+{
+    /**
+     * Run the migrations.
+     *
+     * @return void
+     */
+    public function up()
+    {
+        Schema::table('roles', function (Blueprint $table) {
+            $table->integer('power')->after("color")->default(50);
+        });
+    }
+
+    /**
+     * Reverse the migrations.
+     *
+     * @return void
+     */
+    public function down()
+    {
+        Schema::table('roles', function (Blueprint $table) {
+            $table->dropColumn('power');
+        });
+    }
+};

+ 4 - 4
database/seeders/PermissionsSeeder.php

@@ -66,10 +66,10 @@ class PermissionsSeeder extends Seeder
             'user.referral',
             'user.referral',
         ];
         ];
         /** @var Role $adminRole */
         /** @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('*'));
         $adminRole->givePermissionTo(Permission::findByName('*'));
 
 

+ 7 - 0
themes/default/views/admin/roles/edit.blade.php

@@ -25,6 +25,13 @@
                                       name="color"
                                       name="color"
                                       value="{{ isset($role) ? $role->color : null}}"/>
                                       value="{{ isset($role) ? $role->color : null}}"/>
 
 
+                        <x-input.number label="{{(__('Power'))}}"
+                                      name="power"
+                                        min="1"
+                                        max="100"
+                                        step="1"
+                                      value="{{ isset($role) ? $role->power : 10}}"/>
+
                     </div>
                     </div>
 
 
                     <div class="col-lg-6">
                     <div class="col-lg-6">

+ 2 - 0
themes/default/views/admin/roles/index.blade.php

@@ -22,6 +22,7 @@
                         <th>{{__("Name")}}</th>
                         <th>{{__("Name")}}</th>
                         <th>{{__("User count")}}</th>
                         <th>{{__("User count")}}</th>
                         <th>{{__("Permissions count")}}</th>
                         <th>{{__("Permissions count")}}</th>
+                        <th>{{__("Power")}}</th>
                         <th>{{__("Actions")}}</th>
                         <th>{{__("Actions")}}</th>
                     </tr>
                     </tr>
                     </thead>
                     </thead>
@@ -49,6 +50,7 @@
                 {data: 'name'},
                 {data: 'name'},
                 {data: 'usercount'},
                 {data: 'usercount'},
                 {data: 'permissionscount'},
                 {data: 'permissionscount'},
+                {data: 'power'},
                 {data: 'actions' , sortable : false},
                 {data: 'actions' , sortable : false},
             ],
             ],
             fnDrawCallback: function( oSettings ) {
             fnDrawCallback: function( oSettings ) {