/home/kueuepay/public_html/app/Http/Controllers/User/SettingsController.php
<?php

namespace App\Http\Controllers\User;

use App\Models\User;
use App\Models\UserProfile;
use Illuminate\Support\Str;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Hash;
use Intervention\Image\Facades\Image;
use Illuminate\Support\Facades\Validator;


class SettingsController extends Controller
{
    public function dashboard()
    {
        return view('frontend.pages.user.dashboard');
    }
    public function profile($username)
    {
        $user_row = User::with('kyc_profile')->where('username', $username)->first();
        $user = json_decode(json_encode($user_row), true);
        $countries = get_all_countries();
        return view('frontend.pages.user.profile', compact('user', 'countries'));
    }
    public function profileUpdate(Request $request, $username)
    {
        $validator = Validator::make($request->all(), [
            'first_name' => 'required|string',
            'last_name'  => 'required|string',
            'mobile'     => 'nullable|string',
            'address'   => 'nullable|string',
            'image'     => 'nullable|image|mimes:jpg,png,jpeg,webp,svg|max:10000',
            'country'   => 'nullable|string',
            'state'     => 'nullable|string',
            'city'      => 'nullable|string',
            'zip_code' => 'nullable|numeric',
        ]);
        $validated = $validator->validate();
        $user = User::where('username', $username)->firstOrFail();
        if ($request->hasfile('image')) {
            $image = $request->file('image');
            $imageName  = Str::uuid() . '.' . $image->getClientOriginalExtension();
            create_dir('public/frontend/user');
            delete_file(get_files_path('user-profile').'/'. $user->image);
            Image::make($image)->resize(200, 200)->save(get_files_path('user-profile').'/'. $imageName);
        } else {

            $imageName = $user->image;
        }
        $user->first_name = $request->first_name;
        $user->last_name = $request->last_name;
        $user->mobile = $request->mobile;
        $user->image = $imageName;
        $user->address = $request->address;
        $user->update();

        $userProife = UserProfile::where('user_id', $user->id)->firstOrFail();
       
        $userProife->country = $request->country;
        $userProife->state = $request->state ?? null;
        $userProife->city = $request->city ?? null;
        $userProife->zip_code = $request->zip_code ?? null;
        $userProife->update();

        return back()->with(['success' => ['Profile Information Updated Successfully!']]);
    }

    public function passwordUpdate(Request $request)
    {
        if ($request->isMethod('POST')) {
            $data = $request->all();
            //Check if current password is correct or not
            if (Hash::check($data['current_password'], Auth::user()->password)) {
                //Check new and confirm password is matching
                if ($data['new_password'] == $data['again_new_password']) {
                    $user = User::find(Auth::user()->id);
                    $user->password = bcrypt($request->new_password);
                    $user->save();
                    Auth::logout();
                    $request->session()->invalidate();
                    $request->session()->regenerateToken();
                    return redirect('/user/login')->with(['success' =>  ['Password Changed successfully login again!']]);
                } else {
                    return redirect()->back()->with(['error' => ['New password & confirm password is not same!']]);
                }
            } else {
                return redirect()->back()->with(['error' => ['Password not updated!']]);
            }
            return redirect()->back();
        }
    }

    public function checkCurrentPassword(Request $request)
    {
        $data = $request->all();
        if (Hash::check($data['current_password'], Auth::user()->password)) {
            echo "true";
        } else {
            echo "false";
        }
    }

}
Forgot Password