middleware(function ($request, $next) { $this->user = Auth::guard('web')->user(); return $next($request); }); } /** * Display a listing of the resource. * * @return \Illuminate\Http\Response */ public function index(PermissionsDataTable $dataTable) { if (is_null($this->user) || !$this->user->can('permission.read')) { abort(403, 'Sorry !! You are Unauthorized to view any permission !'); } return $dataTable->render('usermanager::users.permissions.index'); } /** * Store a newly created resource in storage. * * @param \Illuminate\Http\Request $request * * @return \Illuminate\Http\Response */ public function store(Request $request) { if (is_null($this->user) || !$this->user->can('permission.create')) { abort(403, 'Sorry !! You are Unauthorized to create any permission !'); } // Validation Data $validate = $request->validate([ 'name' => 'required|max:100|unique:permission_groups' ], [ 'name.requried' => 'Please give a permission name' ]); if ($validate) { try { // Process Data $group = PermissionGroup::create(['name' => $request->name]); $group_name = strtolower($request->name); $data = [ $group_name . '.create', $group_name . '.read', $group_name . '.update', $group_name . '.delete', $group_name . '.authorize', $group_name . '.report' ]; foreach ($data as $permission) { Permission::create([ 'name' => $permission, 'guard_name' => 'web', 'permission_group_id' => $group->id ]); } echo json_encode(['status' => 'success', 'message' => 'Permission created successfully.']); } catch (Exception $e) { echo json_encode(['status' => 'error', 'message' => 'Permission created failed.']); } } return false; } /** * Show the form for creating a new resource. * * @return \Illuminate\Http\Response */ public function create() { } /** * Display the specified resource. * * @param int $id * * @return \Illuminate\Http\Response */ public function show($id) { // } /** * Show the form for editing the specified resource. * * @param int $id * * @return \Illuminate\Http\Response */ public function edit($id) { if (is_null($this->user) || !$this->user->can('permission.update')) { abort(403, 'Sorry !! You are Unauthorized to edit any permission !'); } $permission = PermissionGroup::find($id); echo json_encode($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) { if (is_null($this->user) || !$this->user->can('permission.update')) { abort(403, 'Sorry !! You are Unauthorized to edit any permission !'); } // Validation Data $validated = $request->validate([ 'name' => 'required|max:100|unique:permission_groups,name,' . $id ], [ 'name.requried' => 'Please give a permission name' ]); if ($validated) { try { // Process Data $group = PermissionGroup::find($id); $group->name = $request->name; if ($group->save()) { $group_name = strtolower($request->name); $permissions = Permission::where('permission_group_id', $group->id)->get(); $data = [ $group_name . '.create', $group_name . '.read', $group_name . '.update', $group_name . '.delete', $group_name . '.authorize', $group_name . '.report' ]; $i = 0; foreach ($permissions as $permission) { $permission->name = $data[$i]; $permission->save(); $i++; } } echo json_encode(['status' => 'success', 'message' => 'Permission updated successfully.']); } catch (Exception $e) { echo json_encode(['status' => 'error', 'message' => 'Permission updated failed.']); } } return false; } /** * Remove the specified resource from storage. * * @param int $id * * @return \Illuminate\Http\Response */ public function destroy($id) { if (is_null($this->user) || !$this->user->can('permission.delete')) { abort(403, 'Sorry !! You are Unauthorized to delete any role !'); } $permission = PermissionGroup::find($id); if (!is_null($permission)) { if ($permission->delete()) { Permission::where('permission_group_id', $id)->delete(); } } echo json_encode(['status' => 'success', 'message' => 'Permission deleted successfully.']); } }