@citrineos/util
Version:
The OCPP util module which supplies helpful utilities like cache and queue connectors, etc.
39 lines • 1.98 kB
JavaScript
// SPDX-FileCopyrightText: 2025 Contributors to the CitrineOS Project
//
// SPDX-License-Identifier: Apache-2.0
import { Logger } from 'tslog';
import { IncomingMessage } from 'http';
import { UnknownStationFilter } from './UnknownStationFilter.js';
import { BasicAuthenticationFilter } from './BasicAuthenticationFilter.js';
import { ConnectedStationFilter } from './ConnectedStationFilter.js';
import { NetworkProfileFilter } from './NetworkProfileFilter.js';
export class Authenticator {
_logger;
_unknownStationFilter;
_connectedStationFilter;
_networkProfileFilter;
_basicAuthenticationFilter;
constructor(unknownStationFilter, connectedStationFilter, networkProfileFilter, basicAuthenticationFilter, logger) {
this._unknownStationFilter = unknownStationFilter;
this._connectedStationFilter = connectedStationFilter;
this._networkProfileFilter = networkProfileFilter;
this._basicAuthenticationFilter = basicAuthenticationFilter;
this._logger = logger
? logger.getSubLogger({ name: this.constructor.name })
: new Logger({ name: this.constructor.name });
}
async authenticate(request, tenantId, options) {
const identifier = this._getClientIdFromUrl(request.url);
this._logger.debug(`Starting authentication for identifier: ${identifier}`);
await this._unknownStationFilter.authenticate(tenantId, identifier, request, options);
await this._connectedStationFilter.authenticate(tenantId, identifier, request, options);
await this._networkProfileFilter.authenticate(tenantId, identifier, request, options);
await this._basicAuthenticationFilter.authenticate(tenantId, identifier, request, options);
this._logger.debug(`Authentication successful for identifier: ${identifier}`);
return { identifier };
}
_getClientIdFromUrl(url) {
return url.split('/').pop();
}
}
//# sourceMappingURL=Authenticator.js.map