diff --git a/app/Http/Controllers/Account/EditProfileController.php b/app/Http/Controllers/Account/EditProfileController.php index 7cad266..bd8d04a 100644 --- a/app/Http/Controllers/Account/EditProfileController.php +++ b/app/Http/Controllers/Account/EditProfileController.php @@ -3,8 +3,10 @@ namespace App\Http\Controllers\Account; use App\Http\Controllers\Controller; +use App\Http\Requests\Account\EditProfileChangePasswordRequest; use App\Http\Requests\Account\EditProfileRequest; use App\Http\Requests\EditProfileUpdateRequest; +use App\Models\City; use App\Models\Province; use Illuminate\Http\Request; use Illuminate\Support\Facades\Auth; @@ -16,8 +18,14 @@ class EditProfileController extends Controller { $title = 'ویرایش حساب'; $user = auth()->user(); - $provinces = Province::with('cities')->get(); - return view('account.edit-profile' , compact('title','user', 'provinces')); + $provinces = Province::orderBy('name')->get(); + $selectedProvinceId = old('province_id', $user->province_id); + + $cities = []; + if ($selectedProvinceId) { + $cities = City::where('province_id', $selectedProvinceId)->orderBy('name')->get(); + } + return view('account.edit-profile', compact('title','user', 'provinces' , 'cities')); } public function update(EditProfileUpdateRequest $request) @@ -28,13 +36,30 @@ class EditProfileController extends Controller 'email', 'mobile', 'city_id', - 'province_id' + 'province_id', ]); - Auth::user()->update($inputs); - return redirect()->back(); + return redirect()->back()->with('success', 'پروفایل با موفقیت ویرایش شد.'); + } + + public function changePassword(EditProfileChangePasswordRequest $request) + { + $user = Auth::user(); + + if (!Hash::check($request->current_password, $user->password)) { + return back() + ->withErrors([ + 'current_password' => 'رمز عبور فعلی اشتباه است.', + ]); + } + + $user->update([ + 'password' => Hash::make($request->new_password), + ]); + + return back()->with('success', 'رمز عبور با موفقیت تغییر کرد.'); } } diff --git a/app/Http/Controllers/Account/ProfileController.php b/app/Http/Controllers/Account/ProfileController.php index 59333b7..57d412b 100644 --- a/app/Http/Controllers/Account/ProfileController.php +++ b/app/Http/Controllers/Account/ProfileController.php @@ -3,6 +3,8 @@ namespace App\Http\Controllers\Account; use App\Http\Controllers\Controller; +use App\Models\City; +use App\Models\Province; use Illuminate\Http\Request; use Illuminate\Support\Facades\Auth; @@ -13,6 +15,15 @@ class ProfileController extends Controller { $title = 'پروفایل'; $user = Auth::user(); + return view('account.profile', compact('title', 'user')); } + + public function getCities($provinceId) + { + $cities = City::where('province_id', $provinceId)->orderBy('name')->get(['id', 'name']); + return response()->json($cities); + } + + } diff --git a/app/Http/Requests/Account/EditProfileChangePasswordRequest.php b/app/Http/Requests/Account/EditProfileChangePasswordRequest.php new file mode 100644 index 0000000..878c8d6 --- /dev/null +++ b/app/Http/Requests/Account/EditProfileChangePasswordRequest.php @@ -0,0 +1,39 @@ +|string> + */ + public function rules(): array + { + return [ + 'current_password' => [ + 'required', + 'current_password' + ], + 'new_password' => [ + 'required', + 'min:8', + 'max:255', + 'alpha_num', + 'confirmed' + ], + ]; + } +} diff --git a/lang/fa/validation.php b/lang/fa/validation.php index 3c533be..6a03d28 100644 --- a/lang/fa/validation.php +++ b/lang/fa/validation.php @@ -251,7 +251,8 @@ return [ 'avatar' => 'تصویر', 'province_id' => 'استان', 'city_id' => 'شهر', - 'national_code' => 'کدملی' + 'national_code' => 'کدملی', + 'new_password' => 'رمزعبور جدید' ], diff --git a/resources/views/account/edit-profile.blade.php b/resources/views/account/edit-profile.blade.php index f4579a8..b1834e5 100644 --- a/resources/views/account/edit-profile.blade.php +++ b/resources/views/account/edit-profile.blade.php @@ -8,14 +8,18 @@