@experteam-mx/ngx-services
Version:
Angular common services for Experteam apps
28 lines • 4.05 kB
JavaScript
import { inject } from '@angular/core';
import { CookieService } from 'ngx-cookie-service';
import { ENVIRONMENT_TOKEN } from '../ngx-services.models';
/**
* An HTTP interceptor to append an Authorization header with a Bearer token
* to outgoing HTTP requests if certain conditions are met.
*
* @param {HttpRequest<unknown>} req - The outgoing HTTP request object which may be modified.
* @param {HttpHandlerFn} next - The next handler in the HTTP request pipeline.
* @return {Observable<HttpEvent<unknown>>} An observable of the HTTP event stream resulting from the request.
*/
export function apiTokenInterceptor(req, next) {
const { authCookie } = inject(ENVIRONMENT_TOKEN);
const cookie = inject(CookieService);
if (req.headers.has('Authorization') || req.headers.has('AppKey')) {
return next(req);
}
const token = cookie.get(authCookie);
if (!token)
return next(req);
req = req.clone({
setHeaders: {
Authorization: `Bearer ${token}`
}
});
return next(req);
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLXRva2VuLmludGVyY2VwdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXhwZXJ0ZWFtLW14L25neC1zZXJ2aWNlcy9zcmMvbGliL2ludGVyY2VwdG9ycy9hcGktdG9rZW4uaW50ZXJjZXB0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUd0QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sb0JBQW9CLENBQUE7QUFDbEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sd0JBQXdCLENBQUE7QUFFMUQ7Ozs7Ozs7R0FPRztBQUNILE1BQU0sVUFBVSxtQkFBbUIsQ0FBRSxHQUF5QixFQUFFLElBQW1CO0lBQ2pGLE1BQU0sRUFBRSxVQUFVLEVBQUUsR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQTtJQUNoRCxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUE7SUFFcEMsSUFBSSxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsSUFBSSxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO1FBQ2xFLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFBO0lBQ2xCLENBQUM7SUFFRCxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFBO0lBRXBDLElBQUksQ0FBQyxLQUFLO1FBQUUsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUE7SUFFNUIsR0FBRyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUM7UUFDZCxVQUFVLEVBQUU7WUFDVixhQUFhLEVBQUUsVUFBVSxLQUFLLEVBQUU7U0FDakM7S0FDRixDQUFDLENBQUE7SUFFRixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQTtBQUNsQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcclxuaW1wb3J0IHsgSHR0cEV2ZW50LCBIdHRwSGFuZGxlckZuLCBIdHRwUmVxdWVzdCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJ1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcydcclxuaW1wb3J0IHsgQ29va2llU2VydmljZSB9IGZyb20gJ25neC1jb29raWUtc2VydmljZSdcclxuaW1wb3J0IHsgRU5WSVJPTk1FTlRfVE9LRU4gfSBmcm9tICcuLi9uZ3gtc2VydmljZXMubW9kZWxzJ1xyXG5cclxuLyoqXHJcbiAqIEFuIEhUVFAgaW50ZXJjZXB0b3IgdG8gYXBwZW5kIGFuIEF1dGhvcml6YXRpb24gaGVhZGVyIHdpdGggYSBCZWFyZXIgdG9rZW5cclxuICogdG8gb3V0Z29pbmcgSFRUUCByZXF1ZXN0cyBpZiBjZXJ0YWluIGNvbmRpdGlvbnMgYXJlIG1ldC5cclxuICpcclxuICogQHBhcmFtIHtIdHRwUmVxdWVzdDx1bmtub3duPn0gcmVxIC0gVGhlIG91dGdvaW5nIEhUVFAgcmVxdWVzdCBvYmplY3Qgd2hpY2ggbWF5IGJlIG1vZGlmaWVkLlxyXG4gKiBAcGFyYW0ge0h0dHBIYW5kbGVyRm59IG5leHQgLSBUaGUgbmV4dCBoYW5kbGVyIGluIHRoZSBIVFRQIHJlcXVlc3QgcGlwZWxpbmUuXHJcbiAqIEByZXR1cm4ge09ic2VydmFibGU8SHR0cEV2ZW50PHVua25vd24+Pn0gQW4gb2JzZXJ2YWJsZSBvZiB0aGUgSFRUUCBldmVudCBzdHJlYW0gcmVzdWx0aW5nIGZyb20gdGhlIHJlcXVlc3QuXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gYXBpVG9rZW5JbnRlcmNlcHRvciAocmVxOiBIdHRwUmVxdWVzdDx1bmtub3duPiwgbmV4dDogSHR0cEhhbmRsZXJGbik6IE9ic2VydmFibGU8SHR0cEV2ZW50PHVua25vd24+PiB7XHJcbiAgY29uc3QgeyBhdXRoQ29va2llIH0gPSBpbmplY3QoRU5WSVJPTk1FTlRfVE9LRU4pXHJcbiAgY29uc3QgY29va2llID0gaW5qZWN0KENvb2tpZVNlcnZpY2UpXHJcblxyXG4gIGlmIChyZXEuaGVhZGVycy5oYXMoJ0F1dGhvcml6YXRpb24nKSB8fCByZXEuaGVhZGVycy5oYXMoJ0FwcEtleScpKSB7XHJcbiAgICByZXR1cm4gbmV4dChyZXEpXHJcbiAgfVxyXG5cclxuICBjb25zdCB0b2tlbiA9IGNvb2tpZS5nZXQoYXV0aENvb2tpZSlcclxuXHJcbiAgaWYgKCF0b2tlbikgcmV0dXJuIG5leHQocmVxKVxyXG5cclxuICByZXEgPSByZXEuY2xvbmUoe1xyXG4gICAgc2V0SGVhZGVyczoge1xyXG4gICAgICBBdXRob3JpemF0aW9uOiBgQmVhcmVyICR7dG9rZW59YFxyXG4gICAgfVxyXG4gIH0pXHJcblxyXG4gIHJldHVybiBuZXh0KHJlcSlcclxufVxyXG4iXX0=