Khởi động splash gốc tĩnh → hoạt ảnh khi app sẵn sàng
S0Splash gốc (tĩnh)
XuNói là ghi
S1Màn khởi động
XuNói là ghi
Xác thực khớp API /auth: đăng ký → xác minh → tự đăng nhập · quên → đặt lại → đăng nhập lại
A1Đăng nhập
Chào bạn!
POST /auth/login trả cặp token. Sai email hoặc mật khẩu (401 invalid_credentials) hiện một lời nhắn chung dưới ô mật khẩu, không nói ô nào sai.
A1bĐăng nhập · email chưa xác minh
Còn một bước nữa!
Khi POST /auth/login trả 403 email_not_verified. Banner chỉ hiện ở lỗi này. Nút gọi /auth/resend-verification rồi mở A3 (mật khẩu vừa nhập được giữ trong bộ nhớ để dùng ở bước xác minh).
A2Đăng ký
Cùng gom vàng nào!
POST /auth/register. Backend chỉ yêu cầu mật khẩu 8–128 ký tự; thanh độ mạnh chỉ là gợi ý. App giữ mật khẩu trong bộ nhớ (không lưu xuống máy) để dùng ở A3.
A3Xác minh email
Kiểm tra hộp thư nhé!
POST /auth/register luôn trả 202 kèm challenge_id, kể cả khi email đã tồn tại (khi đó không gửi mã), nên lời nhắn không khẳng định mã đã đến. Không có ô mật khẩu: app gửi lại mật khẩu đã nhập ở A2 cùng mã tới /auth/verify-email. Hết hạn 600 giây (expires_in), gửi lại sau 60 giây (resend_after).
A3bXác minh · mã chưa đúng
Ối, chưa khớp rồi…
Backend trả cùng một lỗi invalid_code cho mã sai, mã hết hạn và mã đã sai quá 5 lần, nên lời nhắn gộp cả ba và luôn mời gửi mã mới. Không hiển thị số lần thử còn lại (API không trả). Khi bị chặn tạm (429 rate_limited), nút gửi lại đếm ngược theo retry_after.
A3cXác minh xong · tự đăng nhập
Wow! Chào mừng tới Xu!
Sau POST /auth/verify-email (204, không token), app tự gọi POST /auth/login bằng email và mật khẩu đã giữ từ A2 rồi vào Trang chủ. Nếu đăng nhập tự động lỗi, chuyển về A1 với email điền sẵn.
A4Quên mật khẩu
Quên mật khẩu? Không sao!??
POST /auth/forgot-password luôn trả 202, không cho biết email có tồn tại hay không, nên luôn chuyển sang A5.
A5Đặt lại mật khẩu
Sắp xong rồi!
Mã và mật khẩu mới gửi cùng lúc tới POST /auth/reset-password. "Gửi lại mã" gọi lại /auth/forgot-password với email ở bước 1. Mã sai dùng cùng lời nhắn với A3b. Thành công thì sang A1c.
A1cĐăng nhập · sau khi đặt lại mật khẩu
Xong rồi! Đăng nhập lại nhé
POST /auth/reset-password trả 204, không có token và thu hồi mọi phiên. Vì vậy quay về đăng nhập, điền sẵn email.