@@ -7,13 +7,12 @@ import {
77 SecurityPanel ,
88 LoadingSkeleton ,
99 DashboardHeader ,
10- StatusBadge ,
1110 OAuthOverview ,
1211 OAuthSecurityPanel ,
1312 OAuthClientActivity ,
1413 TokenExpiration ,
15- GrantTypeDistribution ,
16- ToolUsagePanel
14+ ToolUsagePanel ,
15+ GrantTypeChart
1716} from "@/components/analytics"
1817import {
1918 BarChart3 ,
@@ -31,21 +30,25 @@ export default function AnalyticsPage() {
3130 errorRate : number
3231 }
3332 oauth ?: {
33+ totalUsers : number
34+ activeUsers : number
3435 totalClients : number
36+ activeClients : number
3537 activeTokens : number
38+ recentAuthorizations : number
3639 tokenRefreshRate : number
3740 pkceAdoption : number
38- clientGrowth ?: string
39- tokenGrowth ?: string
40- refreshGrowth ?: string
41- pkceGrowth ?: string
41+ userActivity ?: string
42+ clientActivity ?: string
4243 clients ?: {
4344 name : string
4445 clientId : string
45- tokenCount : number
46+ uniqueUsers : number
47+ activeTokens : number
48+ recentRequests : number
4649 lastActivity : string
47- grantType : string
48- pkceEnabled : boolean
50+ userNames : string
51+ status : string
4952 } [ ]
5053 expiringTokens ?: {
5154 clientName : string
@@ -125,9 +128,12 @@ export default function AnalyticsPage() {
125128 const fetchAnalytics = useCallback ( async ( ) => {
126129 try {
127130 setLoading ( true )
128- const response = await fetch ( `/api/analytics?hours=${ timeRange } ` )
131+ const response = await fetch ( `/api/analytics?hours=${ timeRange } ` , {
132+ credentials : 'include'
133+ } )
129134 if ( ! response . ok ) {
130- throw new Error ( "Failed to fetch analytics" )
135+ const errorData = await response . json ( )
136+ throw new Error ( errorData . error || "Failed to fetch analytics" )
131137 }
132138 const analyticsData = await response . json ( )
133139 setData ( analyticsData )
@@ -237,7 +243,6 @@ export default function AnalyticsPage() {
237243 serverName = { data . enterprise ?. usersByMCPServer ?. [ 0 ] ?. mcpServerName }
238244 serverUrl = { data . enterprise ?. usersByMCPServer ?. [ 0 ] ?. mcpServerIdentifier }
239245 >
240- < StatusBadge status = { healthStatus . status as "healthy" | "warning" | "critical" } />
241246 < label htmlFor = "time-range-select" className = "sr-only" >
242247 Time Range
243248 </ label >
@@ -273,14 +278,15 @@ export default function AnalyticsPage() {
273278 { /* OAuth Overview */ }
274279 { data . oauth && (
275280 < OAuthOverview
281+ totalUsers = { data . oauth . totalUsers }
282+ activeUsers = { data . oauth . activeUsers }
276283 totalClients = { data . oauth . totalClients }
277284 activeTokens = { data . oauth . activeTokens }
285+ recentAuthorizations = { data . oauth . recentAuthorizations }
278286 tokenRefreshRate = { data . oauth . tokenRefreshRate }
279287 pkceAdoption = { data . oauth . pkceAdoption }
280- clientGrowth = { data . oauth . clientGrowth }
281- tokenGrowth = { data . oauth . tokenGrowth }
282- refreshGrowth = { data . oauth . refreshGrowth }
283- pkceGrowth = { data . oauth . pkceGrowth }
288+ userActivity = { data . oauth . userActivity }
289+ clientActivity = { data . oauth . clientActivity }
284290 />
285291 ) }
286292
@@ -292,7 +298,7 @@ export default function AnalyticsPage() {
292298 { data . oauth ?. clients && data . oauth . clients . length > 0 && (
293299 < OAuthClientActivity
294300 clients = { data . oauth . clients }
295- title = "Active OAuth Clients "
301+ title = "Client-User Relationships "
296302 maxItems = { 6 }
297303 />
298304 ) }
@@ -302,9 +308,9 @@ export default function AnalyticsPage() {
302308 < TokenExpiration expiringTokens = { data . oauth . expiringTokens } />
303309 ) }
304310
305- { /* Grant Type Distribution */ }
311+ { /* Grant Type Distribution - Pie Chart */ }
306312 { data . oauth ?. grantTypes && data . oauth . grantTypes . length > 0 && (
307- < GrantTypeDistribution grantTypes = { data . oauth . grantTypes } />
313+ < GrantTypeChart grantTypes = { data . oauth . grantTypes } />
308314 ) }
309315 </ div >
310316
0 commit comments