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

@@ -3,6 +3,7 @@
import {
Edit,
Eye,
Flag,
Heart,
MoreHorizontal,
Share2,
@@ -34,6 +35,7 @@ import { useAuth } from "@/providers/auth-provider";
import { ContentService } from "@/services/content.service";
import { FavoriteService } from "@/services/favorite.service";
import type { Content } from "@/types/content";
import { ReportDialog } from "./report-dialog";
import { UserContentEditDialog } from "./user-content-edit-dialog";
interface ContentCardProps {
@@ -49,6 +51,7 @@ export function ContentCard({ content, onUpdate }: ContentCardProps) {
const [isLiked, setIsLiked] = React.useState(content.isLiked || false);
const [likesCount, setLikesCount] = React.useState(content.favoritesCount);
const [editDialogOpen, setEditDialogOpen] = React.useState(false);
const [reportDialogOpen, setReportDialogOpen] = React.useState(false);
const isAuthor = user?.uuid === content.authorId;
const isVideo = !content.mimeType.startsWith("image/");
@@ -188,6 +191,12 @@ export function ContentCard({ content, onUpdate }: ContentCardProps) {
<Share2 className="h-4 w-4 mr-2" />
Partager
</DropdownMenuItem>
{!isAuthor && (
<DropdownMenuItem onClick={() => setReportDialogOpen(true)}>
<Flag className="h-4 w-4 mr-2" />
Signaler
</DropdownMenuItem>
)}
</DropdownMenuContent>
</DropdownMenu>
</div>