feat: introduce reporting system and two-factor authentication (2FA)

- Added `ReportDialog` component for user-generated content reporting.
- Integrated `ReportService` with create, update, and fetch report functionalities.
- Enhanced `AuthService` with 2FA setup, enable, disable, and verification methods.
- Updated types to include 2FA responses and reporting-related data.
- Enhanced `ContentCard` UI to support reporting functionality.
- Improved admin services to manage user reports and statuses.
This commit is contained in:
Mathis HERRIOT
2026-01-29 13:48:59 +01:00
parent ba0234fd13
commit 13ccdbc2ab
6 changed files with 215 additions and 2 deletions

View File

@@ -1,5 +1,5 @@
import api from "@/lib/api";
import type { LoginResponse, RegisterPayload } from "@/types/auth";
import type { LoginResponse, RegisterPayload, TwoFactorSetupResponse } from "@/types/auth";
export const AuthService = {
async login(email: string, password: string): Promise<LoginResponse> {
@@ -10,6 +10,14 @@ export const AuthService = {
return data;
},
async verify2fa(userId: string, token: string): Promise<LoginResponse> {
const { data } = await api.post<LoginResponse>("/auth/verify-2fa", {
userId,
token,
});
return data;
},
async register(payload: RegisterPayload): Promise<void> {
await api.post("/auth/register", payload);
},
@@ -21,4 +29,17 @@ export const AuthService = {
async refresh(): Promise<void> {
await api.post("/auth/refresh");
},
async setup2fa(): Promise<TwoFactorSetupResponse> {
const { data } = await api.post<TwoFactorSetupResponse>("/users/me/2fa/setup");
return data;
},
async enable2fa(token: string): Promise<void> {
await api.post("/users/me/2fa/enable", { token });
},
async disable2fa(token: string): Promise<void> {
await api.post("/users/me/2fa/disable", { token });
},
};