From 6d777aa2152a356d57d442fa74882255bdb9824f Mon Sep 17 00:00:00 2001 From: Kenan KARAER Date: Wed, 3 Dec 2025 23:22:23 +0300 Subject: [PATCH] Feat: Implement user filtering in Audit Logs page --- src/app/dashboard/settings/logs/page.tsx | 32 +++++++++++-- .../dashboard/settings/logs/user-filter.tsx | 48 +++++++++++++++++++ 2 files changed, 75 insertions(+), 5 deletions(-) create mode 100644 src/app/dashboard/settings/logs/user-filter.tsx diff --git a/src/app/dashboard/settings/logs/page.tsx b/src/app/dashboard/settings/logs/page.tsx index f30512d..2b5fc7d 100644 --- a/src/app/dashboard/settings/logs/page.tsx +++ b/src/app/dashboard/settings/logs/page.tsx @@ -16,20 +16,39 @@ export const dynamic = 'force-dynamic' import { createAdminClient } from "@/lib/supabase/admin" -export default async function AuditLogsPage() { +import { UserFilter } from "./user-filter" + +export default async function AuditLogsPage({ + searchParams, +}: { + searchParams: Promise<{ userId?: string }> +}) { + const { userId } = await searchParams const supabase = await createClient() const supabaseAdmin = await createAdminClient() // Use admin client if available to bypass RLS for debugging const client = supabaseAdmin || supabase + // Fetch all users for filter + const { data: allUsers } = await client + .from('profiles') + .select('id, full_name') + .order('full_name') + // Fetch logs without join first to avoid FK issues - const { data: logs, error } = await client + let query = client .from('audit_logs') .select('*') .order('created_at', { ascending: false }) .limit(50) + if (userId) { + query = query.eq('user_id', userId) + } + + const { data: logs, error } = await query + if (error) { console.error("AuditLogsPage: Error fetching logs:", error) } @@ -80,9 +99,12 @@ export default async function AuditLogsPage() { return (
-
-

İşlem Geçmişi

-

Sistem üzerindeki son aktiviteler.

+
+
+

İşlem Geçmişi

+

Sistem üzerindeki son aktiviteler.

+
+
diff --git a/src/app/dashboard/settings/logs/user-filter.tsx b/src/app/dashboard/settings/logs/user-filter.tsx new file mode 100644 index 0000000..e8b95eb --- /dev/null +++ b/src/app/dashboard/settings/logs/user-filter.tsx @@ -0,0 +1,48 @@ +'use client' + +import { + Select, + SelectContent, + SelectItem, + SelectTrigger, + SelectValue, +} from "@/components/ui/select" +import { useRouter, useSearchParams } from "next/navigation" + +interface UserFilterProps { + users: { id: string; full_name: string }[] +} + +export function UserFilter({ users }: UserFilterProps) { + const router = useRouter() + const searchParams = useSearchParams() + const currentUserId = searchParams.get('userId') || 'all' + + const handleValueChange = (value: string) => { + const params = new URLSearchParams(searchParams) + if (value === 'all') { + params.delete('userId') + } else { + params.set('userId', value) + } + router.push(`?${params.toString()}`) + } + + return ( +
+ +
+ ) +}