feat: Implement TOTP-based two-factor authentication

- Added TOTP support for two-factor authentication in user profiles and login flows.
- Introduced device management endpoints to handle known devices and their registration.
- Enhanced database schema to include devices and trusted two-factor tokens.
- Updated response handling to include two-factor token in successful login responses.
- Modified registration and login pages to guide users through enabling TOTP.
- Improved device identification and management utilities for better user experience.
This commit is contained in:
shuaiplus
2026-02-20 15:59:55 +08:00
parent d1a43f2e95
commit cdbe87aac2
15 changed files with 695 additions and 119 deletions
+11
View File
@@ -3,6 +3,7 @@ export interface Env {
DB: D1Database;
ATTACHMENTS: R2Bucket;
JWT_SECRET: string;
TOTP_SECRET?: string;
}
// Sample JWT secret used by `.dev.vars.example`.
@@ -147,6 +148,15 @@ export interface Folder {
updatedAt: string;
}
export interface Device {
userId: string;
deviceIdentifier: string;
name: string;
type: number;
createdAt: string;
updatedAt: string;
}
// JWT Payload
export interface JWTPayload {
sub: string; // user id
@@ -190,6 +200,7 @@ export interface TokenResponse {
expires_in: number;
token_type: string;
refresh_token: string;
TwoFactorToken?: string;
Key: string;
PrivateKey: string | null;
Kdf: number;