/** * Handle an incoming request. * * @param \Illuminate\Http\Request $request * @param \Closure $next * @param string|null $guard * * @return mixed */ public function handle($request, Closure $next, $guard = 'admin') { config(['auth.defaults.guard' => 'admin']); if (Auth::guard($guard)->user()->is_super_admin == 1) { return $next($request); } $permissionName = $request->route()->getName(); $permission = PermissionModel::where('name', '=', $permissionName)->first(); if ($permission != NULL && Auth::guard($guard)->user()->cannot('hasPermission', [AdminUser::class, $permissionName])) { throw new \Exception('User Don\'t have permissions', 401); } return $next($request); }
/** * Update the specified resource in storage. * * @param \Mage2\User\Requests\RoleRequest $request * @param int $id * @return \Illuminate\Http\Response */ public function update(RoleRequest $request, $id) { $role = Role::findorfail($id); $role->update($request->all()); if (count($request->get('permissions')) > 0) { $permissionIds = Collection::make([]); foreach ($request->get('permissions') as $key => $value) { //save it into db if ($value != 1) { continue; } $permissions = explode(',', $key); foreach ($permissions as $permissionName) { if (null === ($permissionModel = Permission::getPermissionByName($permissionName))) { $permissionModel = Permission::create(['name' => $permissionName]); } if (!$permissionIds->contains($permissionModel->id)) { $permissionIds->push($permissionModel->id); } } } } $role->permissions()->sync($permissionIds->toArray()); return redirect()->route('role.index'); }
private function _saveRolePermissions($request, $role) { $permissionIds = []; if (count($request->get('permissions')) > 0) { //$permissionIds = Collection::make([]); foreach ($request->get('permissions') as $key => $value) { //save it into db if ($value != 1) { continue; } $permissions = explode(',', $key); foreach ($permissions as $permissionName) { if (null === ($permissionModel = Permission::getPermissionByName($permissionName))) { $permissionModel = Permission::create(['name' => $permissionName]); } $permissionIds[] = $permissionModel->id; } } } $ids = array_unique($permissionIds); $role->permissions()->sync($ids); return $this; }