Role Powers (#810)
This commit is contained in:
commit
dd9fc5aa9b
|
@ -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
database/migrations/2023_05_05_090127_role_power.php
Normal file
32
database/migrations/2023_05_05_090127_role_power.php
Normal 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');
|
||||||
|
});
|
||||||
|
}
|
||||||
|
};
|
|
@ -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"]);
|
$adminRole = Role::updateOrCreate(["name"=>"Admin","color"=>"#fa0000", "power"=>100]);
|
||||||
$supportRole = Role::updateOrCreate(["name"=>"Support-Team","color"=>"#00b0b3"]);
|
$supportRole = Role::updateOrCreate(["name"=>"Support-Team","color"=>"#00b0b3","power"=>50]);
|
||||||
$clientRole = Role::updateOrCreate(["name"=>"Client","color"=>"#008009"]);
|
$clientRole = Role::updateOrCreate(["name"=>"Client","color"=>"#008009","power"=>10]);
|
||||||
$userRole = Role::updateOrCreate(["name"=>"User","color"=>"#0052a3"]);
|
$userRole = Role::updateOrCreate(["name"=>"User","color"=>"#0052a3","power"=>10]);
|
||||||
|
|
||||||
$adminRole->givePermissionTo(Permission::findByName('*'));
|
$adminRole->givePermissionTo(Permission::findByName('*'));
|
||||||
|
|
||||||
|
|
|
@ -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">
|
||||||
|
|
|
@ -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 ) {
|
||||||
|
|
Loading…
Reference in a new issue