Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | 1x 1x 1x 1x 1x | import { bind } from '@loopback/core';
import {
asSpecEnhancer,
mergeOpenAPISpec,
OASEnhancer,
OpenApiSpec,
ReferenceObject,
SecuritySchemeObject,
} from '@loopback/rest';
export const OPERATION_SECURITY_SPEC = [{ jwt: [], hmac: [] }];
export type SecuritySchemeObjects = {
[securityScheme: string]: SecuritySchemeObject | ReferenceObject;
};
export const SECURITY_SCHEME_SPEC: SecuritySchemeObjects = {
jwt: {
type: 'http',
scheme: 'bearer',
bearerFormat: 'JWT',
},
hmac: {
type: 'apiKey',
in: 'header',
name: 'Authorization',
},
};
@bind(asSpecEnhancer)
export class SecuritySpecEnhancer implements OASEnhancer {
// give your enhancer a proper name
name = 'security';
// takes in the current spec, modifies it, and returns a new one
modifySpec(spec: OpenApiSpec): OpenApiSpec {
const SecurityPatchSpec = {
components: { securitySchemes: SECURITY_SCHEME_SPEC },
security: OPERATION_SECURITY_SPEC,
};
// calls a default helper function to merge the fragment spec.
const mergedSpec = mergeOpenAPISpec(spec, SecurityPatchSpec);
return mergedSpec;
}
}
|