diff --git a/apps/dokploy/components/dashboard/settings/sessions/show-sessions.tsx b/apps/dokploy/components/dashboard/settings/sessions/show-sessions.tsx index f5c018459..6f0eab1e2 100644 --- a/apps/dokploy/components/dashboard/settings/sessions/show-sessions.tsx +++ b/apps/dokploy/components/dashboard/settings/sessions/show-sessions.tsx @@ -84,10 +84,14 @@ export const ShowSessions = () => { } = api.user.listSessions.useQuery(); const { mutateAsync: revoke, isPending: isRevoking } = api.user.revokeSession.useMutation(); + const { data: members } = api.user.all.useQuery(undefined, { + enabled: isOwner, + }); const [statusFilter, setStatusFilter] = useState< "all" | "active" | "expired" >("all"); + const [userFilter, setUserFilter] = useState("all"); const [globalFilter, setGlobalFilter] = useState(""); const [sorting, setSorting] = useState([ { id: "createdAt", desc: true }, @@ -119,23 +123,21 @@ export const ShowSessions = () => { }); } + if (isOwner && userFilter !== "all") { + list = list.filter((s) => s.userId === userFilter); + } + if (globalFilter.trim()) { const query = globalFilter.toLowerCase(); list = list.filter((s) => - [ - s.firstName, - s.lastName, - s.email, - s.ipAddress, - s.userAgent ? parseUserAgent(s.userAgent) : null, - ] + [s.ipAddress, s.userAgent ? parseUserAgent(s.userAgent) : null] .filter(Boolean) .some((field) => field?.toLowerCase().includes(query)), ); } return list; - }, [sessions, statusFilter, globalFilter]); + }, [sessions, statusFilter, userFilter, isOwner, globalFilter]); const columns = useMemo[]>( () => [ @@ -303,7 +305,7 @@ export const ShowSessions = () => { <>
setGlobalFilter(e.target.value)} className="max-w-xs" @@ -323,6 +325,22 @@ export const ShowSessions = () => { Expired + {isOwner && ( + + )}