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.
 
 
 
 
 

85 lines
2.0 KiB

<?php
namespace App\Http\Controllers\Users;
use App\Entities\Users\Permission;
use App\Entities\Users\Role;
use App\Http\Controllers\Controller;
use App\Http\Requests\Users\Roles\CreateRequest;
use App\Http\Requests\Users\Roles\DeleteRequest;
use App\Http\Requests\Users\Roles\UpdateRequest;
use Illuminate\Http\Request;
class RolesController extends Controller {
public function index(Request $req)
{
// $role = null;
if ($req->has('act') && in_array($req->get('act'), ['show','edit','del'])) {
$role = $this->requireById($req->get('id'));
if ($req->get('act') == 'show') {
$permissions = $this->getAllPermissions();
}
}
$roles = Role::whereType(0)->get();
return view('users.roles',compact('roles','role','permissions'));
}
public function store(CreateRequest $req)
{
$roleData = $req->except('_token');
$roleData['type'] = 0; // Role Type
$role = Role::create($roleData);
flash()->success(trans('role.created'));
return redirect()->route('roles.index');
}
public function update(UpdateRequest $req, $roleId)
{
$role = $this->requireById($roleId);
$role->update($req->except(['_method','_token']));
flash()->success(trans('role.updated'));
return redirect()->back();
}
public function destroy(DeleteRequest $req, $roleId)
{
if ($roleId == $req->get('role_id'))
{
$role = $this->requireById($roleId);
$role->permissions()->detach();
$role->delete();
flash()->success(trans('role.deleted'));
}
else
flash()->error(trans('role.undeleted'));
return redirect()->route('roles.index');
}
public function updatePermissions(Request $req, $roleId)
{
$role = $this->requireById($roleId);
if ($req->has('permission'))
$role->permissions()->sync($req->get('permission'));
else
$role->permissions()->detach();
flash()->success(trans('role.updated'));
return redirect()->back();
}
private function requireById($roleId)
{
return Role::findOrFail($roleId);
}
private function getAllPermissions()
{
return Permission::whereType(1)->get();
}
}