user()->info; // get the default inner page return view('pages.account.settings.settings', compact('info')); } /** * Update the specified resource in storage. * * @param \Illuminate\Http\Request $request * @param int $user * * @return \Illuminate\Http\RedirectResponse */ public function update(SettingsInfoRequest $request) { // save user name $validated = $request->validate([ 'first_name' => 'required|string|max:255', 'last_name' => 'required|string|max:255', ]); auth()->user()->update($validated); // save on user info $info = UserInfo::where('user_id', auth()->user()->id)->first(); if ($info === null) { // create new model $info = new UserInfo(); } // attach this info to the current user $info->user()->associate(auth()->user()); foreach ($request->only(array_keys($request->rules())) as $key => $value) { if (is_array($value)) { $value = serialize($value); } $info->$key = $value; } // include to save avatar if ($avatar = $this->upload()) { $info->avatar = $avatar; } if ($request->boolean('avatar_remove')) { Storage::delete($info->avatar); $info->avatar = null; } $info->save(); return redirect()->intended('account/settings'); } /** * Function for upload avatar image * * @param string $folder * @param string $key * @param string $validation * * @return false|string|null */ public function upload($folder = 'images', $key = 'avatar', $validation = 'image|mimes:jpeg,png,jpg,gif,svg|max:2048|sometimes') { request()->validate([$key => $validation]); $file = null; if (request()->hasFile($key)) { $file = Storage::disk('public')->putFile($folder, request()->file($key), 'public'); } return $file; } /** * Function to accept request for change email * * @param SettingsEmailRequest $request */ public function changeEmail(SettingsEmailRequest $request) { // prevent change email for demo account if ($request->input('current_email') === 'demo@demo.com') { return redirect()->intended('account/settings'); } auth()->user()->update(['email' => $request->input('email')]); if ($request->expectsJson()) { return response()->json($request->all()); } return redirect()->intended('account/settings'); } /** * Function to accept request for change password * * @param SettingsPasswordRequest $request */ public function changePassword(SettingsPasswordRequest $request) { // prevent change password for demo account if ($request->input('current_email') === 'demo@demo.com') { return redirect()->intended('account/settings'); } auth()->user()->update(['password' => Hash::make($request->input('password'))]); if ($request->expectsJson()) { return response()->json($request->all()); } return redirect()->intended('account/settings'); } }