You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

71 lines
1.8 KiB

<?php
namespace App\Http\Controllers;
use App\Traits\Authorizable;
use App\Models\Permission;
use App\Models\Role;
use Illuminate\Http\Request;
class RoleController extends Controller
{
use Authorizable;
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
$roles = Role::whereNot('name', 'Super Admin')->get();
$permissions = Permission::all();
return view('role.index', compact('roles', 'permissions'));
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
$this->validate($request, ['name' => 'required|unique:roles']);
if( Role::create($request->only('name', 'guard_name')) ) {
flash('Role Added');
}
return redirect()->back();
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param int $id
* @return \Illuminate\Http\Response
*/
public function update(Request $request, $id)
{
if($role = Role::findOrFail($id)) {
// admin role has everything
// if($role->name === 'Admin') {
// $role->syncPermissions(Permission::all());
// return redirect()->route('roles.index');
// }
$permissions = $request->get('permissions', []);
$role->syncPermissions($permissions);
flash( $role->name . ' permissions has been updated.');
} else {
flash()->error( 'Role with id '. $id .' note found.');
}
return redirect()->route('roles.index');
}
}