UNPKG

ngx-adal-8

Version:
393 lines (387 loc) 12 kB
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