Add config option for custom auth header

This commit is contained in:
Jonathan Prince 2018-09-05 15:16:46 +02:00 committed by Miroslav Bajtoš
parent 09bf982a21
commit 954399009e
No known key found for this signature in database
GPG Key ID: 6F2304BA9361C7E3
3 changed files with 29 additions and 1 deletions

View File

@ -160,3 +160,26 @@ Options are passed to `explorer(app, options)`.
> Default: Read from package.json
> Sets your API version. If not present, will read from your app's package.json.
`auth`: **Object**
> Optional config for setting api access token, can be used to rename the query parameter or set an auth header.
> The object has 2 keys:
> - `in`: either `header` or `query`
> - `name`: the name of the query parameter or header
>
> The default sets the token as a query parameter with the name `access_token`
> Example for setting the api key in a header named `x-api-key`:
> ```
> {
> "loopback-component-explorer": {
> "mountPath": "/explorer",
> "auth": {
> "in": "header",
> "name": "x-api-key"
> }
> }
> }
> ```

View File

@ -79,6 +79,7 @@ function routes(loopbackApplication, options) {
}
res.send({
url: urlJoin(source, '/' + options.resourcePath),
auth: options.auth,
});
});

View File

@ -27,6 +27,7 @@ $(function() {
validatorUrl: null,
url: config.url || '/swagger/resources',
apiKey: '',
auth: config.auth,
dom_id: 'swagger-ui-container',
supportHeaderParams: true,
onComplete: function(swaggerApi, swaggerUi) {
@ -76,12 +77,15 @@ $(function() {
function setAccessToken(e) {
e.stopPropagation(); // Don't let the default #explore handler fire
e.preventDefault();
var authOptions = window.swaggerUi.options.auth || {};
var keyLocation = authOptions.in || 'query';
var keyName = authOptions.name || 'access_token';
var key = $('#input_accessToken')[0].value;
log('key: ' + key);
if (key && key.trim() !== '') {
log('added accessToken ' + key);
var apiKeyAuth =
new SwaggerClient.ApiKeyAuthorization('access_token', key, 'query');
new SwaggerClient.ApiKeyAuthorization(keyName, key, keyLocation);
window.swaggerUi.api.clientAuthorizations.add('key', apiKeyAuth);
accessToken = key;
$('.accessTokenDisplay').text('Token Set.').addClass('set');