diff --git a/app/Http/Controllers/Account/EditProfileController.php b/app/Http/Controllers/Account/EditProfileController.php index e107320..113ee3e 100644 --- a/app/Http/Controllers/Account/EditProfileController.php +++ b/app/Http/Controllers/Account/EditProfileController.php @@ -4,6 +4,8 @@ namespace App\Http\Controllers\Account; use App\Http\Controllers\Controller; use App\Http\Requests\EditProfilePostRequest; +use Illuminate\Support\Facades\Storage; + use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Hash; @@ -11,7 +13,8 @@ class EditProfileController extends Controller { public function index() { - $user = Auth::user(); + + $user = Auth::user()->load(['comments.commentable', 'favorites.favoritable']); return view('account.edit-profile.index', compact('user')); } @@ -20,12 +23,26 @@ class EditProfileController extends Controller { $user = Auth::user(); - $user->name = $request['name']; - $user->username = $request['username']; - $user->email = $request['email']; + // به‌روزرسانی فیلدها + $user->first_name = $request->first_name; + $user->last_name = $request->last_name; + $user->email = $request->email; + $user->username = $request->username; + if ($request->filled('password')) { - $user->password = Hash::make($request['password']); + $user->password = Hash::make($request->password); + } + + + if ($request->hasFile('image')) { + + if ($user->image) { + Storage::disk('public')->delete($user->image); + } + + $path = $request->file('image')->store('avatars', 'public'); + $user->image = $path; } $user->save(); diff --git a/app/Http/Requests/EditProfilePostRequest.php b/app/Http/Requests/EditProfilePostRequest.php index 3e1c281..ef2ed07 100644 --- a/app/Http/Requests/EditProfilePostRequest.php +++ b/app/Http/Requests/EditProfilePostRequest.php @@ -22,35 +22,44 @@ class EditProfilePostRequest extends FormRequest */ public function rules(): array { + // دریافت آیدی کاربر از طریق سشن لاگین + $userId = auth()->id(); + return [ - 'name' => - [ - 'required', - 'string', - 'max:255' - ], - 'username' => - [ + 'first_name' => + [ 'required', 'string', - 'max:255', - 'unique:users,username,' . $user->id, + 'max:100' ], - 'email' => [ + 'last_name' => + [ 'required', - 'email', - 'max:255', - 'unique:users,email,' . $user->id, + 'string', + 'max:100' ], - 'password' => + 'username' => + [ + 'required', + 'string', + 'max:50', + 'unique:users,username,' . $userId, + ], + 'email' => [ + 'required', + 'email', + 'max:150', + 'unique:users,email,' . $userId, + ], + 'password' => - [ - 'nullable', - 'string', - 'min:8', - 'confirmed' - ], + [ + 'nullable', + 'string', + 'min:8', + 'confirmed' + ], ]; }