11import { joinUrl } from '@solid/community-server' ;
22import { isIri } from '../../util/ConvertUtil' ;
3- import { CLIENTID , WEBID } from '../Claims' ;
3+ import { CLIENTID , ORIGINAL , WEBID } from '../Claims' ;
44import { ClaimSet } from '../ClaimSet' ;
55import { Credential } from '../Credential' ;
66import { Verifier } from './Verifier' ;
@@ -16,17 +16,20 @@ export class IriVerifier implements Verifier {
1616
1717 public async verify ( credential : Credential ) : Promise < ClaimSet > {
1818 const claims = await this . verifier . verify ( credential ) ;
19- return {
20- ...claims ,
21- ...typeof claims [ WEBID ] === 'string' ? { [ WEBID ] : this . toIri ( claims [ WEBID ] ) } : { } ,
22- ...typeof claims [ CLIENTID ] === 'string' ? { [ CLIENTID ] : this . toIri ( claims [ CLIENTID ] ) } : { } ,
23- } ;
24- }
19+ const result = { ...claims } ;
20+
21+ const original : Record < string , string > = { } ;
22+ for ( const claim of [ WEBID , CLIENTID ] ) {
23+ if ( typeof claims [ claim ] === 'string' && ! isIri ( claims [ claim ] ) ) {
24+ result [ claim ] = joinUrl ( this . baseUrl , encodeURIComponent ( claims [ claim ] ) ) ;
25+ original [ claim ] = claims [ claim ] ;
26+ }
27+ }
2528
26- protected toIri ( value : string ) : string {
27- if ( isIri ( value ) ) {
28- return value ;
29+ if ( Object . keys ( original ) . length > 0 ) {
30+ result [ ORIGINAL ] = original ;
2931 }
30- return joinUrl ( this . baseUrl , encodeURIComponent ( value ) ) ;
32+
33+ return result ;
3134 }
3235}
0 commit comments