feat: implement force logout notifications for password reset and account deletion
All checks were successful
Chore App Build, Test, and Push Docker Images / build-and-push (push) Successful in 2m29s
All checks were successful
Chore App Build, Test, and Push Docker Images / build-and-push (push) Successful in 2m29s
This commit is contained in:
@@ -103,7 +103,7 @@ import EntityEditForm from '../shared/EntityEditForm.vue'
|
||||
import ModalDialog from '../shared/ModalDialog.vue'
|
||||
import { parseErrorResponse, isEmailValid } from '@/common/api'
|
||||
import { ALREADY_MARKED } from '@/common/errorCodes'
|
||||
import { logoutUser } from '@/stores/auth'
|
||||
import { logoutUser, suppressForceLogout } from '@/stores/auth'
|
||||
import '@/assets/styles.css'
|
||||
|
||||
const router = useRouter()
|
||||
@@ -300,6 +300,9 @@ function closeDeleteWarning() {
|
||||
async function confirmDeleteAccount() {
|
||||
if (!isEmailValid(confirmEmail.value)) return
|
||||
|
||||
// Set flag before the request so it's guaranteed to be set
|
||||
// before the force_logout SSE event can arrive on this tab
|
||||
suppressForceLogout.value = true
|
||||
deletingAccount.value = true
|
||||
try {
|
||||
const res = await fetch('/api/user/mark-for-deletion', {
|
||||
@@ -309,6 +312,7 @@ async function confirmDeleteAccount() {
|
||||
})
|
||||
|
||||
if (!res.ok) {
|
||||
suppressForceLogout.value = false
|
||||
const { msg, code } = await parseErrorResponse(res)
|
||||
let errorMessage = msg
|
||||
if (code === ALREADY_MARKED) {
|
||||
@@ -320,10 +324,11 @@ async function confirmDeleteAccount() {
|
||||
return
|
||||
}
|
||||
|
||||
// Success
|
||||
// Success — suppressForceLogout is already set; show confirmation modal
|
||||
showDeleteWarning.value = false
|
||||
showDeleteSuccess.value = true
|
||||
} catch {
|
||||
suppressForceLogout.value = false
|
||||
deleteErrorMessage.value = 'Network error. Please try again.'
|
||||
showDeleteWarning.value = false
|
||||
showDeleteError.value = true
|
||||
|
||||
Reference in New Issue
Block a user