id; } // @todo add some authorization (e.g. via can/cannot methods) // try to find given user $user = User::where('status', '!=', User::STATE_DELETED) ->findOrFail($id); $states = UserStates::getWithTranslations(); $roles = UserRoles::getWithTranslations(); return view('admin.userManagement.edit', [ 'user' => $user, 'states' => $states, 'roles' => $roles ]); } /** * @param EditUserRequest $request * @param $id * * @return \Illuminate\Http\RedirectResponse */ public function postEdit(EditUserRequest $request, $id) { $loggedUser = Auth::user(); $user = User::findOrFail($id); // non-admin user is trying to edit someone else if ($loggedUser->role != User::ROLE_ADMIN && $id != $loggedUser->id) { return redirect() ->back() ->with('error', trans('auth.accessDenied')); } // update username if set if (isset($request->username)) { $user->username = $request->username; } // change name (if set) if (isset($request->name)) { $user->name = $request->name; } if (isset($request->role)) { $user->role = $request->role; } if (isset($request->status)) { $user->status = $request->status; } if (isset($request->password)) { $user->password = Hash::make($request->password); } $user->email = $request->email; $user->save(); // fire event about editing user Event::fire(new EditUserEvent($user)); return redirect() ->route('users.detail', ['id' => $id]) ->with('success', trans('admin/userManagement.userSuccessfullyEdited')); } }