ngx-adal-8
Version:
Angular 2+ ADAL Wrapper library
393 lines (387 loc) • 12 kB
JavaScript
import { Injectable, Inject, ɵɵdefineInjectable, ɵɵinject, NgModule, Optional, SkipSelf } from '@angular/core';
import { map, mergeMap } from 'rxjs/operators';
import { bindCallback } from 'rxjs';
import { HTTP_INTERCEPTORS } from '@angular/common/http';
import { CommonModule } from '@angular/common';
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
var NgxAdalService = /** @class */ (function () {
function NgxAdalService(adalConfig) {
this.adalConfig = adalConfig;
adalConfig.redirectUri = window.location.origin + "/" + adalConfig.redirectUri,
adalConfig.postLogoutRedirectUri = window.location.origin + "/" + adalConfig.postLogoutRedirectUri,
this.context = new AuthenticationContext(adalConfig);
this.handleCallback();
}
Object.defineProperty(NgxAdalService.prototype, "LoggedInUserEmail", {
// constructor(
// @Inject(ADAL_CONFIG) private adalConfig: any, @Inject(AUTHENTICATION_CONTEXT) private context: typeof AuthenticationContext) {
// this.handleCallback();
// }
get:
// constructor(
// @Inject(ADAL_CONFIG) private adalConfig: any, @Inject(AUTHENTICATION_CONTEXT) private context: typeof AuthenticationContext) {
// this.handleCallback();
// }
/**
* @return {?}
*/
function () {
if (this.isAuthenticated) {
return this.context.getCachedUser().userName;
}
return '';
},
enumerable: true,
configurable: true
});
Object.defineProperty(NgxAdalService.prototype, "LoggedInUserName", {
get: /**
* @return {?}
*/
function () {
if (this.isAuthenticated) {
return this.context.getCachedUser().profile.name;
}
return '';
},
enumerable: true,
configurable: true
});
/**
* @return {?}
*/
NgxAdalService.prototype.login = /**
* @return {?}
*/
function () {
this.context.login();
};
/**
* @return {?}
*/
NgxAdalService.prototype.logout = /**
* @return {?}
*/
function () {
this.context.logOut();
};
/**
* @param {?} url
* @return {?}
*/
NgxAdalService.prototype.GetResourceForEndpoint = /**
* @param {?} url
* @return {?}
*/
function (url) {
return this.context.getResourceForEndpoint(url);
// let resource = null;
// if (url) {
// resource = this.context.getResourceForEndpoint(url);
// if (!resource) {
// resource = this.adalConfig.clientId;
// }
// }
// return resource;
};
/**
* @param {?} url
* @return {?}
*/
NgxAdalService.prototype.RenewToken = /**
* @param {?} url
* @return {?}
*/
function (url) {
/** @type {?} */
var resource = this.GetResourceForEndpoint(url);
return this.context.clearCacheForResource(resource); // Trigger the ADAL token renew
};
/**
* @param {?} url
* @return {?}
*/
NgxAdalService.prototype.acquireToken = /**
* @param {?} url
* @return {?}
*/
function (url) {
/** @type {?} */
var _this = this;
// save outer this for inner function
/** @type {?} */
var errorMessage;
return bindCallback(acquireTokenInternal)().pipe(map((/**
* @param {?} token
* @return {?}
*/
function (token) {
if (!token && errorMessage) {
throw errorMessage;
}
return token;
})));
/**
* @param {?} cb
* @return {?}
*/
function acquireTokenInternal(cb) {
/** @type {?} */
var s = null;
/** @type {?} */
var resource;
resource = _this.GetResourceForEndpoint(url);
_this.context.acquireToken(resource, (/**
* @param {?} error
* @param {?} tokenOut
* @return {?}
*/
function (error, tokenOut) {
if (error) {
_this.context.error('Error when acquiring token for resource: ' + resource, error);
errorMessage = error;
cb((/** @type {?} */ (null)));
}
else {
cb(tokenOut);
s = tokenOut;
}
}));
return s;
}
};
/**
* @param {?} url
* @return {?}
*/
NgxAdalService.prototype.getToken = /**
* @param {?} url
* @return {?}
*/
function (url) {
/** @type {?} */
var resource = this.context.getResourceForEndpoint(url);
/** @type {?} */
var storage = this.adalConfig.cacheLocation;
// ?
/** @type {?} */
var key;
if (resource) {
key = 'adal.access.token.key' + resource;
}
else {
key = 'adal.idtoken';
}
if (storage === 'localStorage') {
return localStorage.getItem(key);
}
else {
return sessionStorage.getItem(key);
}
};
/**
* @return {?}
*/
NgxAdalService.prototype.handleCallback = /**
* @return {?}
*/
function () {
this.context.handleWindowCallback();
};
Object.defineProperty(NgxAdalService.prototype, "userInfo", {
get: /**
* @return {?}
*/
function () {
return this.context.getCachedUser();
},
enumerable: true,
configurable: true
});
Object.defineProperty(NgxAdalService.prototype, "accessToken", {
get: /**
* @return {?}
*/
function () {
return this.context.getCachedToken(this.adalConfig.clientId);
},
enumerable: true,
configurable: true
});
Object.defineProperty(NgxAdalService.prototype, "isAuthenticated", {
get: /**
* @return {?}
*/
function () {
return this.userInfo && this.accessToken ? true : false;
},
enumerable: true,
configurable: true
});
NgxAdalService.decorators = [
{ type: Injectable, args: [{
providedIn: 'root'
},] }
];
/** @nocollapse */
NgxAdalService.ctorParameters = function () { return [
{ type: undefined, decorators: [{ type: Inject, args: ['adalConfig',] }] }
]; };
/** @nocollapse */ NgxAdalService.ngInjectableDef = ɵɵdefineInjectable({ factory: function NgxAdalService_Factory() { return new NgxAdalService(ɵɵinject("adalConfig")); }, token: NgxAdalService, providedIn: "root" });
return NgxAdalService;
}());
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
var NgxAdalInterceptor = /** @class */ (function () {
function NgxAdalInterceptor(adal) {
this.adal = adal;
}
/**
* @param {?} request
* @param {?} next
* @return {?}
*/
NgxAdalInterceptor.prototype.intercept = /**
* @param {?} request
* @param {?} next
* @return {?}
*/
function (request, next) {
// retrieve resource from endpoints configuration
/** @type {?} */
var resource = this.adal.GetResourceForEndpoint(request.url);
if (!resource) {
return next.handle(request);
}
if (!this.adal.isAuthenticated) {
this.adal.RenewToken(request.url);
}
return this.adal.acquireToken(request.url).pipe(mergeMap((/**
* @param {?} token
* @return {?}
*/
function (token) {
/** @type {?} */
var authorizedRequest = request.clone({
setHeaders: {
Authorization: 'Bearer ' + token,
'content-Type': 'application/json; charset=utf-8',
Accept: 'application/json'
}
});
return next.handle(authorizedRequest);
})));
};
NgxAdalInterceptor.decorators = [
{ type: Injectable }
];
/** @nocollapse */
NgxAdalInterceptor.ctorParameters = function () { return [
{ type: NgxAdalService }
]; };
return NgxAdalInterceptor;
}());
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
var NgxAdalGuard = /** @class */ (function () {
function NgxAdalGuard(adalSvc) {
this.adalSvc = adalSvc;
}
/**
* @param {?} route
* @param {?} state
* @return {?}
*/
NgxAdalGuard.prototype.canActivate = /**
* @param {?} route
* @param {?} state
* @return {?}
*/
function (route, state) {
if (this.adalSvc.isAuthenticated) {
return true;
}
else {
this.adalSvc.login();
return false;
}
};
/**
* @param {?} childRoute
* @param {?} state
* @return {?}
*/
NgxAdalGuard.prototype.canActivateChild = /**
* @param {?} childRoute
* @param {?} state
* @return {?}
*/
function (childRoute, state) {
return this.canActivate(childRoute, state);
};
NgxAdalGuard.decorators = [
{ type: Injectable }
];
/** @nocollapse */
NgxAdalGuard.ctorParameters = function () { return [
{ type: NgxAdalService }
]; };
return NgxAdalGuard;
}());
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
// import { ADAL_CONFIG, authContextFactory, AUTHENTICATION_CONTEXT } from './di_tokens';
var NgxAdalModule = /** @class */ (function () {
function NgxAdalModule(parentModule) {
// https://angular.io/styleguide#!#04-12
if (parentModule) {
throw new Error('NgxAdalModule is already loaded. Import it in the AppModule only');
}
}
/**
* @param {?} adalConfig
* @return {?}
*/
NgxAdalModule.forRoot = /**
* @param {?} adalConfig
* @return {?}
*/
function (adalConfig) {
return {
ngModule: NgxAdalModule,
providers: [
[NgxAdalService, { provide: 'adalConfig', useValue: adalConfig }]
]
};
};
NgxAdalModule.decorators = [
{ type: NgModule, args: [{
imports: [CommonModule],
providers: [
NgxAdalGuard,
NgxAdalService,
{
provide: HTTP_INTERCEPTORS,
useClass: NgxAdalInterceptor,
multi: true
}
]
},] }
];
/** @nocollapse */
NgxAdalModule.ctorParameters = function () { return [
{ type: NgxAdalModule, decorators: [{ type: Optional }, { type: SkipSelf }] }
]; };
return NgxAdalModule;
}());
export { NgxAdalGuard, NgxAdalInterceptor, NgxAdalModule, NgxAdalService };
//# sourceMappingURL=ngx-adal-8.js.map