From 4bc31df554f758f35e48d3b6290c98ea3698cfc5 Mon Sep 17 00:00:00 2001 From: Xin Feng <126309503+danielxfeng@users.noreply.github.com> Date: Sun, 11 Jan 2026 14:38:50 +0200 Subject: [PATCH 1/4] fix/frontend: update error message for password update failure --- frontend/src/routes/user/settings/ChangePasswordForm.svelte | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/src/routes/user/settings/ChangePasswordForm.svelte b/frontend/src/routes/user/settings/ChangePasswordForm.svelte index daa6c86..1766835 100644 --- a/frontend/src/routes/user/settings/ChangePasswordForm.svelte +++ b/frontend/src/routes/user/settings/ChangePasswordForm.svelte @@ -40,7 +40,7 @@ } logger.error('Password update failed:', error); - toast.error('Login failed, please try again later.'); + toast.error('Password update failed, please try again later.'); } finally { form.data.oldPassword = ''; form.data.newPassword = ''; From f2fa3e25a6e206c967918a1799d5b532966a0435 Mon Sep 17 00:00:00 2001 From: Xin Feng <126309503+danielxfeng@users.noreply.github.com> Date: Sun, 11 Jan 2026 14:47:30 +0200 Subject: [PATCH 2/4] fix: update password flow to redirect to login page and logout user --- .../src/routes/user/settings/ChangePasswordForm.svelte | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/frontend/src/routes/user/settings/ChangePasswordForm.svelte b/frontend/src/routes/user/settings/ChangePasswordForm.svelte index 1766835..0c5be9b 100644 --- a/frontend/src/routes/user/settings/ChangePasswordForm.svelte +++ b/frontend/src/routes/user/settings/ChangePasswordForm.svelte @@ -25,13 +25,13 @@ void confirmNewPassword; try { - const user = await updatePassword(payload); + await updatePassword(payload); - toast.success('Password updated successfully! Redirecting to home page...'); - userStore.login(user); + toast.success('Password updated successfully! Redirecting to login page...'); + userStore.logout(); setTimeout(() => { - goto('/'); + goto('/user/login'); }, 0); } catch (error) { if (error instanceof AuthError && error.status === 401) { From 43f703a6619d7c4bafb9b2711bb6a6c46f3525c5 Mon Sep 17 00:00:00 2001 From: Xin Feng <126309503+danielxfeng@users.noreply.github.com> Date: Sun, 11 Jan 2026 14:48:36 +0200 Subject: [PATCH 3/4] fix: update friend online status indicator styles for better visibility --- frontend/src/routes/user/profile/Friends.svelte | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/src/routes/user/profile/Friends.svelte b/frontend/src/routes/user/profile/Friends.svelte index 1b4919e..919b80d 100644 --- a/frontend/src/routes/user/profile/Friends.svelte +++ b/frontend/src/routes/user/profile/Friends.svelte @@ -143,7 +143,7 @@ {/each} From 21c252e86fc7c44e7aa22c48ed7d665d7ac5db00 Mon Sep 17 00:00:00 2001 From: Xin Feng <126309503+danielxfeng@users.noreply.github.com> Date: Sun, 11 Jan 2026 15:12:16 +0200 Subject: [PATCH 4/4] fix/backend: fix hard deletion for avoid username/email conflicts --- backend/internal/service/helper.go | 6 +++--- backend/internal/service/user_service.go | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/backend/internal/service/helper.go b/backend/internal/service/helper.go index 1592917..cc91742 100644 --- a/backend/internal/service/helper.go +++ b/backend/internal/service/helper.go @@ -109,9 +109,9 @@ func (s *UserService) updateHeartBeat(userID uint) { func (s *UserService) issueNewTokenForUser(ctx context.Context, userID uint, revokeAllTokens bool) (string, error) { if revokeAllTokens { - _, err := gorm.G[model.Token](s.DB.Unscoped()).Where("user_id = ?", userID).Delete(ctx) - if err != nil { - return "", err + res := s.DB.WithContext(ctx).Exec("DELETE FROM tokens WHERE user_id = ?", userID) + if res.Error != nil { + return "", res.Error } } diff --git a/backend/internal/service/user_service.go b/backend/internal/service/user_service.go index 079cfc0..39eea67 100644 --- a/backend/internal/service/user_service.go +++ b/backend/internal/service/user_service.go @@ -184,9 +184,9 @@ func (s *UserService) UpdateUserProfile(ctx context.Context, userID uint, reques } func (s *UserService) DeleteUser(ctx context.Context, userID uint) error { - _, err := gorm.G[model.User](s.DB.Unscoped()).Where("id = ?", userID).Delete(ctx) - if err != nil { - return err + res := s.DB.WithContext(ctx).Unscoped().Delete(&model.User{}, userID) + if res.Error != nil { + return res.Error } return nil