middleware('permission:role-list'); $this->middleware('permission:role-create', ['only' => ['create', 'store']]); $this->middleware('permission:role-edit', ['only' => ['edit', 'update']]); $this->middleware('permission:role-delete', ['only' => ['destroy']]); } /** * Display a listing of the resource. * * @return \Illuminate\Http\Response */ public function index(Request $request) { if (Auth::user()->hasRole(Roles::SUPER_ADMIN->value)) { $roles = Role::withCount('users')->withCount('permissions')->orderBy('name')->get(); } else { $roles = Role::where('name', '!=', 'Super Admin')->withCount('users')->withCount('permissions')->orderBy('name')->get(); } return view('roles.index', compact('roles'))->with('i', ($request->input('page', 1) - 1) * 5); } /** * Show the form for creating a new resource. * * @return \Illuminate\Http\Response */ public function create() { $categories = PermissionCategory::orderBy('name')->get(); return view('roles.create', compact('categories')); } /** * 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|unique:roles,name', 'permission' => 'required', ], [ 'name.required' => 'Name of the role is required', 'name.unique' => 'The role name is already registered on stre@mline', 'permission.required' => 'Select some permissions for the role' ]); $role = Role::create(['name' => $request->input('name')]); $role->syncPermissions($request->input('permission')); return redirect()->route('roles.index')->with('success', 'Role created successfully'); } public function show($id) { $role = Role::find($id); $rolePermissions = Permission::join("role_has_permissions", "role_has_permissions.permission_id", "=", "permissions.id") ->where("role_has_permissions.role_id", $id) ->orderBy('permission_category_id') ->get(); return view('roles.show', compact('role', 'rolePermissions')); } /** * Show the form for editing the specified resource. * * @param int $id * @return \Illuminate\Http\Response */ public function edit($id) { $role = Role::find($id); $categories = PermissionCategory::where(['is_module_active' => 1])->orderBy('name')->get(); $rolePermissions = DB::table("role_has_permissions")->where("role_id", $id)->pluck('permission_id', 'permission_id')->all(); return view('roles.edit', compact('role', 'rolePermissions', 'categories')); } /** * Update the specified resource in storage. * * @param \Illuminate\Http\Request $request * @param int $id * @return \Illuminate\Http\Response */ public function update(Request $request, $id) { $this->validate($request, [ 'name' => 'required', 'permission' => 'required', ]); $role = Role::find($id); $role->name = $request->input('name'); $role->save(); $role->syncPermissions($request->input('permission')); return redirect()->route('roles.index')->with('success', 'Role updated successfully'); } /** * Remove the specified resource from storage. * * @param int $id * @return \Illuminate\Http\Response */ public function destroy($id) { DB::table("roles")->where('id', $id)->delete(); return redirect()->route('roles.index')->with('success', 'Role has been deactivated.'); } public function edit_permission_desc(Request $request) { $permission = Permission::find($request->permission_id); $permission->long_description = $request->permission_desc; if ($permission->save()) { return 1; } else { return 0; } } }