[
  {
    "id": "class:1hxasb:prouserhandler",
    "kind": "class",
    "fileId": "file:1hyu1ez:prouserhandler-cs",
    "path": "NexusReader.Application/Security/Authorization/ProUserHandler.cs",
    "canonicalName": "ProUserHandler",
    "shortLabel": "ProUserHandler",
    "longLabel": "ProUserHandler",
    "purpose": "Authorization handler that enforces 'Pro' user access by checking the current user's subscription and AI token usage against limits in the application's database."
  },
  {
    "id": "method:1va0nah:prouserhandler",
    "kind": "method",
    "fileId": "file:1hyu1ez:prouserhandler-cs",
    "path": "NexusReader.Application/Security/Authorization/ProUserHandler.cs",
    "line": 15,
    "canonicalName": "ProUserHandler",
    "shortLabel": "ProUserHandler()",
    "longLabel": "ProUserHandler(dbContextFactory: IDbContextFactory<AppDbContext>) -> void",
    "signature": "(dbContextFactory: IDbContextFactory<AppDbContext>) -> void",
    "purpose": "Constructor: receives and stores a DbContext factory for use by the handler."
  },
  {
    "id": "method:14jdxkg:handlerequirementasync",
    "kind": "method",
    "fileId": "file:1hyu1ez:prouserhandler-cs",
    "path": "NexusReader.Application/Security/Authorization/ProUserHandler.cs",
    "line": 20,
    "canonicalName": "HandleRequirementAsync",
    "shortLabel": "HandleRequirementAsync()",
    "longLabel": "HandleRequirementAsync(context: AuthorizationHandlerContext, requirement: ProUserRequirement) -> Task",
    "signature": "(context: AuthorizationHandlerContext, requirement: ProUserRequirement) -> Task",
    "purpose": "Core authorization logic: loads the current user from the DB and grants the requirement when the user has unlimited tokens or remaining AI token quota."
  }
]