feat(auth): implement social login support, forgot password, email...
1. Hệ thống vai trò & Hằng số phân quyền (Role Constants)
- Chuyển đổi và chuẩn hóa hệ thống phân quyền sang hằng số
ROLESlưu tạisrc/common/constants/role.constant.ts. - Ba vai trò mới phù hợp với ứng dụng quản lý tài chính FinWise gồm:
ADMIN,MANAGERvàUSER. - Thay thế toàn bộ chuỗi vai trò hardcode tại tầng validation, router và services.
2. Bảo mật token bằng HttpOnly Cookies
- Tích hợp middleware
cookie-parserđể lưu trữaccessTokenvàrefreshTokentrong HttpOnly Cookies bảo mật. - Hỗ trợ cơ chế đọc token song song: Ưu tiên đọc từ Cookies cho Web client, và tự động dự phòng (fallback) đọc từ Header
Authorization: Bearer <token>để giữ tính tương thích ngược cho Zalo Mini App hoặc Mobile client.
3. Luồng xác thực & Khôi phục mật khẩu qua Email
-
Đăng ký tài khoản: Giới hạn đăng ký chỉ cho phép email
@gmail.com. Tài khoản mới tạo ở trạng thái chưa kích hoạt (isActive: false). -
Kích hoạt tài khoản: Tự động sinh
VerificationTokenvà gửi link kích hoạt có thời hạn 24 giờ qua email (sử dụng thư việnnodemailer). -
Gửi lại mã xác nhận: Bổ sung API
POST /auth/resend-verificationgửi lại email xác thực. -
Quên mật khẩu: Triển khai bảng
PasswordResetTokenvà 2 API/auth/forgot-password(gửi mail khôi phục mật khẩu, hiệu lực 1 giờ) và/auth/reset-password(đặt lại mật khẩu bằng token).
4. Tính năng Xóa mềm (Soft Delete)
- Thêm trường
deletedAt(thời gian xóa) vàdeletedBy(ID Admin thực hiện xóa) vào bảngUserđể làm vết phát triển Activity Log. - Khi tài khoản bị xóa mềm:
- Trạng thái
isActivechuyển sangfalse. - Toàn bộ
RefreshTokencủa người dùng bị thu hồi ngay trong cơ sở dữ liệu để ép buộc đăng xuất trên mọi thiết bị. - Các API truy vấn danh sách và chi tiết người dùng được tự động cấu hình để lọc bỏ các tài khoản đã bị xóa mềm (
deletedAt: null).
- Trạng thái