UNPKG

@citrineos/util

Version:

The OCPP util module which supplies helpful utilities like cache and queue connectors, etc.

39 lines 1.98 kB
// 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