|
1 | 1 | import { BadRequestHttpError, ForbiddenHttpError, HttpErrorClass, KeyValueStorage } from '@solid/community-server'; |
2 | 2 | import { getLoggerFor } from 'global-logger-factory'; |
3 | 3 | import { randomUUID } from 'node:crypto'; |
4 | | -import { ClaimSet } from '../credentials/ClaimSet'; |
5 | 4 | import { Verifier } from '../credentials/verify/Verifier'; |
6 | | -import { NeedInfoError } from '../errors/NeedInfoError'; |
| 5 | +import { NeedInfoError, RequiredClaim } from '../errors/NeedInfoError'; |
7 | 6 | import { getOperationLogger } from '../logging/OperationLogger'; |
8 | 7 | import { serializePolicyInstantiation } from '../logging/OperationSerializer'; |
9 | 8 | import { TicketingStrategy } from '../ticketing/strategy/TicketingStrategy'; |
@@ -73,21 +72,18 @@ export class BaseNegotiator implements Negotiator { |
73 | 72 | } |
74 | 73 |
|
75 | 74 | // ... on failure, deny if no solvable requirements |
76 | | - this.denyRequest(ticket); |
| 75 | + this.denyRequest(ticket, resolved.value); |
77 | 76 | } |
78 | 77 |
|
79 | 78 | // TODO: |
80 | | - protected denyRequest(ticket: Ticket): never { |
81 | | - const requiredClaims = ticket.required.map(req => Object.keys(req)); |
82 | | - if (requiredClaims.length === 0) throw new ForbiddenHttpError(); |
| 79 | + protected denyRequest(ticket: Ticket, requirements: RequiredClaim[]): never { |
| 80 | + if (requirements.length === 0) throw new ForbiddenHttpError('Request denied'); |
83 | 81 |
|
84 | 82 | // ... require more info otherwise |
85 | 83 | const id = randomUUID(); |
86 | 84 | this.ticketStore.set(id, ticket); |
87 | 85 | throw new NeedInfoError('Need more info to authorize request ...', id, { |
88 | | - required_claims: { |
89 | | - claim_token_format: requiredClaims, |
90 | | - }, |
| 86 | + required_claims: requirements, |
91 | 87 | }); |
92 | 88 | } |
93 | 89 |
|
|
0 commit comments