role powers

This commit is contained in:
1day2die 2023-05-05 11:17:40 +02:00
parent a573454810
commit 7d974d3408
5 changed files with 59 additions and 5 deletions

View file

@ -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);
}

View file

@ -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');
});
}
};

View file

@ -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('*'));

View file

@ -25,6 +25,13 @@
name="color"
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 class="col-lg-6">

View file

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