feat(auth): implement unrecognized device warning and session management
Mô tả tính năng (PR Description)
Tính năng này triển khai hệ thống cảnh báo khi người dùng đăng nhập bằng thiết bị lạ (chưa từng được ghi nhận trong cơ sở dữ liệu) và bổ sung các API để quản lý các phiên đăng nhập (sessions) đang hoạt động.
Các thay đổi chính:
-
Cơ sở dữ liệu:
- Thêm bảng
UserDeviceđể lưu trữ dấu vân tay thiết bị của người dùng (tạo từ mã MD5 của User-Agent).
- Thêm bảng
-
Logic nhận diện & Cảnh báo thiết bị lạ:
- Tích hợp bước kiểm tra thiết bị khi người dùng đăng nhập thành công.
- Nếu phát hiện thiết bị lạ (chưa từng đăng ký), hệ thống sẽ lưu thiết bị mới và tự động gửi email cảnh báo bảo mật qua
MailService. - Tiến hành cải tiến sinh Refresh Token đi kèm
jti(JWT ID) để ngăn chặn trùng lặp token trong cơ sở dữ liệu.
-
Quản lý phiên đăng nhập (Session Management):
- Thêm API lấy danh sách phiên đăng nhập hoạt động:
GET /auth/sessions(có chỉ rõ phiên hiện tại). - Thêm API đăng xuất một thiết bị cụ thể từ xa:
DELETE /auth/sessions/:id. - Thêm API đăng xuất khỏi tất cả các thiết bị khác:
DELETE /auth/sessions.
- Thêm API lấy danh sách phiên đăng nhập hoạt động:
-
Tài liệu:
- Cập nhật định nghĩa Swagger (
swagger.config.ts) cho các schemas và endpoints mới.
- Cập nhật định nghĩa Swagger (