/** * Function for resources of user based on a specific permission * @param $permission * @return array */ function resourcesByPermission($permission) { try { $permissionObj = Permission::where('name', '=', $permission)->firstOrFail(); } catch (ModelNotFoundException $e) { return false; } $roleResourcePermissions = $this->resourcePermissions()->where('permission_id', $permissionObj->id)->get(); $resources = array(); foreach ($roleResourcePermissions as $p) { $resources[] = $p->resource; } return $resources; }
/** * Store a newly created resource in storage. * * @return Response */ public function store() { if (Auth::user() && Auth::user()->id == Config::get('laracancan.super_admin')) { $permissionIds = Input::get('permissions'); if (count($permissionIds) > 0) { $ps = Permission::whereIn('id', $permissionIds)->get(); $permissions = array(); foreach ($ps as $p) { $permissions[] = $p->id; } $resource = Resource::find(Input::get('resource_id')); $resource->resourcePermissions()->detach($permissions); $resource->resourcePermissions()->attach($permissions); return redirect()->back()->with('flash_success', 'Permissions added for this resource.'); } return redirect()->back()->with('flash_warn', 'No permission selected!'); } return response(view('laracancan::master.401'), 401); }
/** * Execute the console command. * * @return void */ public function fire() { $this->line(''); $this->info("Seeding Permissions Table"); $this->line(''); if (Permission::count() == 0) { if ($this->confirm("Proceed with seeding? [Yes|no]", "Yes")) { $this->line(''); $this->info("Seeding Permissions..."); DB::table('lcc_permissions')->delete(); Permission::create(['name' => 'create', 'display_name' => 'Create', 'description' => 'Permission To Create An Object Of A Resource.']); Permission::create(['name' => 'read', 'display_name' => 'Read', 'description' => 'Permission To View A Resource.']); Permission::create(['name' => 'update', 'display_name' => 'Update', 'description' => 'Permission To Update An Object Of A Resource.']); Permission::create(['name' => 'delete', 'display_name' => 'Delete', 'description' => 'Permission To Delete An Object Of A Resource.']); $this->line(''); $this->info("Done"); } } else { $this->error("Table permissions is already filled with data."); } }
/** * Update the specified resource in storage. * * @param int $id * @return Response */ public function update($id) { if (Auth::user() && Auth::user()->id == Config::get('laracancan.super_admin')) { $input = Input::all(); $rules = ['name' => 'required|min:3|max:32', 'display_name' => 'required|min:3|max:32']; $validator = Validator::make($input, $rules); $error_msg = $validator->errors(); if (count($error_msg) != 0) { return redirect()->back()->withErrors($validator)->withInput(); } $permissions = Permission::where('name', '=', $input['name'])->where('id', '!=', $id)->get(); $permissions1 = Permission::where('display_name', '=', $input['display_name'])->where('id', '!=', $id)->get(); if (count($permissions) > 0 || count($permissions1) > 0) { return redirect()->back()->with('flash_error', 'Permission already exists!'); } $permission = Permission::findOrFail($id); $permission->name = $input['name']; $permission->display_name = $input['display_name']; $permission->description = $input['description']; $permission->save(); return redirect()->back()->with('flash_success', 'Permission edited Successfully !'); } return response(view('laracancan::master.401'), 401); }