adal-angular4
Version:
Angular 4+ ADAL Wrapper
42 lines • 5.63 kB
JavaScript
import { __decorate } from "tslib";
import { Injectable } from '@angular/core';
import { AdalService } from './adal.service';
import { mergeMap } from 'rxjs/operators';
var AdalInterceptor = /** @class */ (function () {
function AdalInterceptor(service) {
this.service = service;
}
AdalInterceptor.prototype.intercept = function (request, next) {
// if the endpoint is not registered
// or if the header 'skip-adal' is set
// then pass the request as it is to the next handler
var resource = this.service.getResourceForEndpoint(request.url);
var skipAdal = request.headers.get('skip-adal');
if (!resource || skipAdal) {
return next.handle(request);
}
// if the user is not authenticated then drop the request
if (!this.service.userInfo.authenticated) {
throw new Error('Cannot send request to registered endpoint if the user is not authenticated.');
}
// if the endpoint is registered then acquire and inject token
return this.service.acquireToken(resource)
.pipe(mergeMap(function (token) {
// clone the request and replace the original headers with
// cloned headers, updated with the authorization
var authorizedRequest = request.clone({
headers: request.headers.set('Authorization', 'Bearer ' + token),
});
return next.handle(authorizedRequest);
}));
};
AdalInterceptor.ctorParameters = function () { return [
{ type: AdalService }
]; };
AdalInterceptor = __decorate([
Injectable()
], AdalInterceptor);
return AdalInterceptor;
}());
export { AdalInterceptor };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRhbC5pbnRlcmNlcHRvci5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2FkYWwtYW5ndWxhcjQvIiwic291cmNlcyI6WyJsaWIvYWRhbC5pbnRlcmNlcHRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQVEzQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRzFDO0lBRUUseUJBQW9CLE9BQW9CO1FBQXBCLFlBQU8sR0FBUCxPQUFPLENBQWE7SUFBSSxDQUFDO0lBRTdDLG1DQUFTLEdBQVQsVUFBVSxPQUE2QixFQUFFLElBQWlCO1FBRXhELG9DQUFvQztRQUNwQyxzQ0FBc0M7UUFDdEMscURBQXFEO1FBQ3JELElBQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsc0JBQXNCLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRWxFLElBQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBRWxELElBQUksQ0FBQyxRQUFRLElBQUksUUFBUSxFQUFFO1lBRXpCLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUM3QjtRQUVELHlEQUF5RDtRQUN6RCxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsYUFBYSxFQUFFO1lBRXhDLE1BQU0sSUFBSSxLQUFLLENBQUMsOEVBQThFLENBQUMsQ0FBQztTQUNqRztRQUVELDhEQUE4RDtRQUM5RCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQzthQUN2QyxJQUFJLENBQ0gsUUFBUSxDQUFDLFVBQUMsS0FBYTtZQUNyQiwwREFBMEQ7WUFDMUQsaURBQWlEO1lBQ2pELElBQU0saUJBQWlCLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQztnQkFDdEMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLGVBQWUsRUFBRSxTQUFTLEdBQUcsS0FBSyxDQUFDO2FBQ2pFLENBQUMsQ0FBQztZQUVILE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQ3hDLENBQUMsQ0FDQSxDQUNGLENBQUM7SUFDTixDQUFDOztnQkFwQzRCLFdBQVc7O0lBRjdCLGVBQWU7UUFEM0IsVUFBVSxFQUFFO09BQ0EsZUFBZSxDQXVDM0I7SUFBRCxzQkFBQztDQUFBLEFBdkNELElBdUNDO1NBdkNZLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBIdHRwUmVxdWVzdCxcbiAgSHR0cEhhbmRsZXIsXG4gIEh0dHBFdmVudCxcbiAgSHR0cEludGVyY2VwdG9yXG59IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEFkYWxTZXJ2aWNlIH0gZnJvbSAnLi9hZGFsLnNlcnZpY2UnO1xuaW1wb3J0IHsgbWVyZ2VNYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBBZGFsSW50ZXJjZXB0b3IgaW1wbGVtZW50cyBIdHRwSW50ZXJjZXB0b3Ige1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgc2VydmljZTogQWRhbFNlcnZpY2UpIHsgfVxuXG4gIGludGVyY2VwdChyZXF1ZXN0OiBIdHRwUmVxdWVzdDx1bmtub3duPiwgbmV4dDogSHR0cEhhbmRsZXIpOiBPYnNlcnZhYmxlPEh0dHBFdmVudDx1bmtub3duPj4ge1xuXG4gICAgLy8gaWYgdGhlIGVuZHBvaW50IGlzIG5vdCByZWdpc3RlcmVkXG4gICAgLy8gb3IgaWYgdGhlIGhlYWRlciAnc2tpcC1hZGFsJyBpcyBzZXRcbiAgICAvLyB0aGVuIHBhc3MgdGhlIHJlcXVlc3QgYXMgaXQgaXMgdG8gdGhlIG5leHQgaGFuZGxlclxuICAgIGNvbnN0IHJlc291cmNlID0gdGhpcy5zZXJ2aWNlLmdldFJlc291cmNlRm9yRW5kcG9pbnQocmVxdWVzdC51cmwpO1xuXG4gICAgY29uc3Qgc2tpcEFkYWwgPSByZXF1ZXN0LmhlYWRlcnMuZ2V0KCdza2lwLWFkYWwnKTtcblxuICAgIGlmICghcmVzb3VyY2UgfHwgc2tpcEFkYWwpIHtcblxuICAgICAgcmV0dXJuIG5leHQuaGFuZGxlKHJlcXVlc3QpO1xuICAgIH1cblxuICAgIC8vIGlmIHRoZSB1c2VyIGlzIG5vdCBhdXRoZW50aWNhdGVkIHRoZW4gZHJvcCB0aGUgcmVxdWVzdFxuICAgIGlmICghdGhpcy5zZXJ2aWNlLnVzZXJJbmZvLmF1dGhlbnRpY2F0ZWQpIHtcblxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3Qgc2VuZCByZXF1ZXN0IHRvIHJlZ2lzdGVyZWQgZW5kcG9pbnQgaWYgdGhlIHVzZXIgaXMgbm90IGF1dGhlbnRpY2F0ZWQuJyk7XG4gICAgfVxuXG4gICAgLy8gaWYgdGhlIGVuZHBvaW50IGlzIHJlZ2lzdGVyZWQgdGhlbiBhY3F1aXJlIGFuZCBpbmplY3QgdG9rZW5cbiAgICByZXR1cm4gdGhpcy5zZXJ2aWNlLmFjcXVpcmVUb2tlbihyZXNvdXJjZSlcbiAgICAgIC5waXBlKFxuICAgICAgICBtZXJnZU1hcCgodG9rZW46IHN0cmluZykgPT4ge1xuICAgICAgICAgIC8vIGNsb25lIHRoZSByZXF1ZXN0IGFuZCByZXBsYWNlIHRoZSBvcmlnaW5hbCBoZWFkZXJzIHdpdGhcbiAgICAgICAgICAvLyBjbG9uZWQgaGVhZGVycywgdXBkYXRlZCB3aXRoIHRoZSBhdXRob3JpemF0aW9uXG4gICAgICAgICAgY29uc3QgYXV0aG9yaXplZFJlcXVlc3QgPSByZXF1ZXN0LmNsb25lKHtcbiAgICAgICAgICAgIGhlYWRlcnM6IHJlcXVlc3QuaGVhZGVycy5zZXQoJ0F1dGhvcml6YXRpb24nLCAnQmVhcmVyICcgKyB0b2tlbiksXG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICByZXR1cm4gbmV4dC5oYW5kbGUoYXV0aG9yaXplZFJlcXVlc3QpO1xuICAgICAgICB9XG4gICAgICAgIClcbiAgICAgICk7XG4gIH1cbn1cbiJdfQ==