Skip to main content
Là một Chủ nuôi (Pet Owner), Tôi muốn đăng ký hoặc đăng nhập vào ứng dụng bằng tài khoản Google/SĐT/Email/Apple, Để tôi có thể truy cập hệ thống một cách nhanh chóng, bảo mật

Điều kiện tiên quyết (Pre-conditions)

Để User Story này có thể thực hiện và nghiệm thu, hệ thống cần đáp ứng các điều kiện sau:
  • Better Auth: Đã cài đặt và cấu hình thư viện Better Auth trên Backend (Node.js).
  • Google Cloud Console: Đã tạo Project, cấu hình OAuth 2.0 Client ID và Secret, đồng thời khai báo các Redirect URIs hợp lệ.
  • Apple Developer: Đã cấu hình Sign in with Apple, thiết lập Services ID và xác nhận domain.
  • OTP Provider: Đã tích hợp thành công dịch vụ gửi thông qua Email, SMS để gửi mã xác thực.
  • Cơ sở dữ liệu: Các bảng lưu trữ User, Session, Account (theo chuẩn Better Auth) đã được định nghĩa.
  • Phone Number Normalization: Hệ thống hỗ trợ chuẩn hóa định dạng số điện thoại quốc tế (E.164).

Quy trình Đăng ký tài khoản (Bắt buộc OTP)

Để đảm bảo định danh liên lạc là chính xác khi tạo tài khoản:
Người dùng có thể chọn đăng ký bằng Email HOẶC Số điện thoại, không cần cung cấp cả hai.

Quy trình Đăng nhập (Không cần OTP)

Sau khi đã có tài khoản, việc truy cập phải diễn ra nhanh chóng:
  1. Người dùng nhấn nút Tiếp tục với Google
  2. Hiện Popup xác thực Google
  3. Xác thực thành công → Vào thẳng ứng dụng ngay lập tức (Không cần OTP)
Phiên đăng nhập luôn tồn tại cho đến khi người dùng thực hiện thủ công log out

Quên mật khẩu

  • OTP quên mật khẩu có hiệu lực 3 phút
  • Giới hạn gửi OTP: 1 lần / 1 phút
  • Sau 5 lần nhập OTP sai: khóa tính năng trong 10 phút
  • Mật khẩu mới không được trùng với 3 mật khẩu gần nhất
  • Sau khi đổi mật khẩu thành công: tất cả phiên đăng nhập cũ bị đăng xuất tự động
  • Hỗ trợ khôi phục qua cả Email và Số điện thoại đã đăng ký

Ràng buộc Bảo mật & Xử lý lỗi

Giao diện đề xuất

  • Tab chuyển đổi giữa Đăng ký Email và Đăng ký Số điện thoại
  • Input Email/Số điện thoại với validation realtime
  • Input Mật khẩu + Xác nhận mật khẩu
  • Checkbox đồng ý Điều khoản sử dụng và Chính sách bảo mật (bắt buộc)
  • Link mở Modal/WebView xem nội dung Điều khoản
  • Nút Đăng ký (bật/tắt theo điều kiện validation)
  • Nút Tiếp tục với Google và Tiếp tục với Apple ở vị trí đầu tiên
  • Input OTP 6 ô riêng biệt, tự động chuyển sang ô tiếp theo
  • Đếm ngược thời gian hiệu lực OTP
  • Nút Gửi lại OTP (chỉ khả dụng sau 1 phút)
  • Link quay lại màn hình trước
  • Hiển thị rõ phương thức OTP đang gửi đến (Email hay Số điện thoại)
  • Nút Tiếp tục với Google (ở vị trí nổi bật nhất)
  • Nút Tiếp tục với Apple
  • Tab chuyển đổi giữa Đăng nhập Email/Mật khẩu và Đăng nhập Số Điện Thoại OTP
  • Link Quên mật khẩu
  • Link chuyển sang màn hình Đăng ký
  • Lựa chọn phương thức khôi phục: Email / Số Điện Thoại
  • Bước 1: Nhập Email / Số điện thoại
  • Bước 2: Nhập OTP
  • Bước 3: Nhập mật khẩu mới + Xác nhận