[FEAT] 完善個人檔案功能:新增頭像即時上傳、麵包屑導覽、版面寬度優化與日期格式統一
All checks were successful
star-cloud-deploy-demo / deploy-demo (push) Successful in 58s

This commit is contained in:
2026-03-13 10:08:30 +08:00
parent ea460cf6d9
commit 6fab048461
19 changed files with 434 additions and 201 deletions

View File

@@ -37,6 +37,22 @@ class ProfileController extends Controller
$user->email_verified_at = null;
}
$user->save();
return Redirect::route('profile.edit')->with('status', 'profile-updated');
}
/**
* Update the user's avatar via AJAX.
*/
public function updateAvatar(Request $request): \Illuminate\Http\JsonResponse
{
$request->validate([
'avatar' => ['required', 'image', 'mimes:jpeg,png,jpg,gif', 'max:1024'],
]);
$user = $request->user();
if ($request->hasFile('avatar')) {
// Delete old avatar if exists
if ($user->avatar) {
@@ -45,31 +61,19 @@ class ProfileController extends Controller
$path = $request->file('avatar')->store('avatars', 'public');
$user->avatar = $path;
$user->save();
return response()->json([
'success' => true,
'avatar_url' => $user->avatar_url,
'message' => __('Avatar updated successfully.'),
]);
}
$user->save();
return Redirect::route('profile.edit')->with('status', 'profile-updated');
return response()->json([
'success' => false,
'message' => __('No file uploaded.'),
], 400);
}
/**
* Delete the user's account.
*/
public function destroy(Request $request): RedirectResponse
{
$request->validateWithBag('userDeletion', [
'password' => ['required', 'current_password'],
]);
$user = $request->user();
Auth::logout();
$user->delete();
$request->session()->invalidate();
$request->session()->regenerateToken();
return Redirect::to('/');
}
}