mirror of
https://gitlab.com/signalytic/client-external/streamline/streamline-emr.git
synced 2026-09-11 18:51:31 +00:00
131 lines
3.7 KiB
PHP
Executable File
131 lines
3.7 KiB
PHP
Executable File
<?php
|
|
|
|
namespace Streamline\Http\Controllers;
|
|
|
|
use Illuminate\Http\Request;
|
|
use Auth;
|
|
use Spatie\Permission\Models\Role;
|
|
use Spatie\Permission\Models\Permission;
|
|
use Session;
|
|
|
|
class PermissionController extends Controller {
|
|
|
|
public function __construct() {
|
|
$this->middleware(['auth', 'isAdmin']); //isAdmin middleware lets only users with a //specific permission permission to access these resources
|
|
}
|
|
|
|
/**
|
|
* Display a listing of the resource.
|
|
*
|
|
* @return \Illuminate\Http\Response
|
|
*/
|
|
public function index() {
|
|
$permissions = Permission::all(); //Get all permissions
|
|
return view('permissions.index')->with('permissions', $permissions);
|
|
}
|
|
|
|
/**
|
|
* Show the form for creating a new resource.
|
|
*
|
|
* @return \Illuminate\Http\Response
|
|
*/
|
|
public function create() {
|
|
$roles = Role::get(); //Get all roles
|
|
return view('permissions.create')->with('roles', $roles);
|
|
}
|
|
|
|
/**
|
|
* 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|max:40',
|
|
]);
|
|
|
|
$name = $request['name'];
|
|
$permission = new Permission();
|
|
$permission->name = $name;
|
|
|
|
$roles = $request['roles'];
|
|
|
|
$permission->save();
|
|
|
|
if (!empty($request['roles'])) { //If one or more role is selected
|
|
foreach ($roles as $role) {
|
|
$r = Role::where('id', '=', $role)->firstOrFail(); //Match input role to db record
|
|
|
|
$permission = Permission::where('name', '=', $name)->first(); //Match input //permission to db record
|
|
$r->givePermissionTo($permission);
|
|
}
|
|
}
|
|
|
|
return redirect()->route('permissions.index')
|
|
->with('flash_message', 'Permission' . $permission->name . ' added!');
|
|
}
|
|
|
|
/**
|
|
* Display the specified resource.
|
|
*
|
|
* @param int $id
|
|
* @return \Illuminate\Http\Response
|
|
*/
|
|
public function show($id) {
|
|
return redirect('permissions');
|
|
}
|
|
|
|
/**
|
|
* Show the form for editing the specified resource.
|
|
*
|
|
* @param int $id
|
|
* @return \Illuminate\Http\Response
|
|
*/
|
|
public function edit($id) {
|
|
$permission = Permission::find($id);
|
|
return view('permissions.edit', compact('permission'));
|
|
}
|
|
|
|
/**
|
|
* Update the specified resource in storage.
|
|
*
|
|
* @param \Illuminate\Http\Request $request
|
|
* @param int $id
|
|
* @return \Illuminate\Http\Response
|
|
*/
|
|
public function update(Request $request, $id) {
|
|
$permission = Permission::find($id);
|
|
$this->validate($request, [
|
|
'name' => 'required|max:40',
|
|
]);
|
|
$input = $request->all();
|
|
$permission->fill($input)->save();
|
|
|
|
return redirect()->route('permissions.index')
|
|
->with('flash_message', 'Permission' . $permission->name . ' updated!');
|
|
}
|
|
|
|
/**
|
|
* Remove the specified resource from storage.
|
|
*
|
|
* @param int $id
|
|
* @return \Illuminate\Http\Response
|
|
*/
|
|
public function destroy($id) {
|
|
$permission = Permission::find($id);
|
|
|
|
//Make it impossible to delete this specific permission
|
|
if ($permission->name == "Administer roles & permissions") {
|
|
return redirect()->route('permissions.index')
|
|
->with('flash_message', 'Cannot delete this Permission!');
|
|
}
|
|
|
|
$permission->delete();
|
|
|
|
return redirect()->route('permissions.index')
|
|
->with('flash_message', 'Permission deleted!');
|
|
}
|
|
|
|
}
|