ngx-adal-angular
Version:
It is a easy way to implement microsoft adal authentication, it was taken of microsoft-adal-angular6 and compiled in Angular 14 to implement with higher versions to 7
109 lines • 12.4 kB
JavaScript
/// <reference path='./../../../../node_modules/@types/adal/index.d.ts'/>
/// <reference path='./../../../../node_modules/@types/adal/index.d.ts'/>
import { Injectable, Inject } from '@angular/core';
import { bindCallback } from 'rxjs';
import * as adalLib from 'adal-angular';
import * as i0 from "@angular/core";
export class NgxAdalAngularService {
constructor(adalConfig) {
this.adalConfig = adalConfig;
if (typeof adalConfig === 'function')
this.adalConfig = adalConfig();
this.context = adalLib.inject(this.adalConfig);
this.handleCallback();
}
get LoggedInUserEmail() {
if (this.isAuthenticated)
return this.context.getCachedUser().userName;
return '';
}
get LoggedInUserName() {
if (this.isAuthenticated)
return this.context.getCachedUser().profile.name;
return '';
}
login() {
this.context.login();
}
logout() {
this.context.logOut();
}
GetResourceForEndpoint(url) {
let resource = null;
if (url) {
resource = this.context.getResourceForEndpoint(url);
if (!resource) {
resource = this.adalConfig.clientId;
}
}
return resource;
}
RenewToken(url) {
let resource = this.GetResourceForEndpoint(url);
return this.context.clearCacheForResource(resource); // Trigger the ADAL token renew
}
acquireToken(url) {
const _this = this; // save outer this for inner function
let errorMessage;
return bindCallback(acquireTokenInternal, (token) => {
if (!token && errorMessage) {
throw (errorMessage);
}
return token;
})();
function acquireTokenInternal(cb) {
let s = '';
let resource;
resource = _this.GetResourceForEndpoint(url);
_this.context.acquireToken(resource, (error, tokenOut) => {
if (error) {
_this.context.error('Error when acquiring token for resource: ' + resource, error);
errorMessage = error;
cb('');
}
else {
cb(tokenOut);
s = tokenOut;
}
});
return s;
}
}
getToken(url) {
const resource = this.context.getResourceForEndpoint(url);
const storage = this.adalConfig.cacheLocation;
let 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) ?? '';
}
handleCallback() {
this.context.handleWindowCallback();
}
get userInfo() {
return this.context.getCachedUser();
}
get accessToken() {
return this.context.getCachedToken(this.adalConfig.clientId);
}
get isAuthenticated() {
return (this.userInfo && this.accessToken) ? true : false;
}
}
NgxAdalAngularService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.9", ngImport: i0, type: NgxAdalAngularService, deps: [{ token: 'adalConfig' }], target: i0.ɵɵFactoryTarget.Injectable });
NgxAdalAngularService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.9", ngImport: i0, type: NgxAdalAngularService, providedIn: 'root' });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.9", ngImport: i0, type: NgxAdalAngularService, decorators: [{
type: Injectable,
args: [{
providedIn: 'root'
}]
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
type: Inject,
args: ['adalConfig']
}] }]; } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWFkYWwtYW5ndWxhci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWFkYWwtYW5ndWxhci9zcmMvbGliL25neC1hZGFsLWFuZ3VsYXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx5RUFBeUU7QUFBekUseUVBQXlFO0FBQ3pFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDcEMsT0FBTyxLQUFLLE9BQU8sTUFBTSxjQUFjLENBQUM7O0FBS3hDLE1BQU0sT0FBTyxxQkFBcUI7SUFHaEMsWUFDZ0MsVUFBZTtRQUFmLGVBQVUsR0FBVixVQUFVLENBQUs7UUFFN0MsSUFBSSxPQUFPLFVBQVUsS0FBSyxVQUFVO1lBQ2xDLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxFQUFFLENBQUM7UUFDakMsSUFBSSxDQUFDLE9BQU8sR0FBK0IsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDM0UsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQ3hCLENBQUM7SUFFRCxJQUFXLGlCQUFpQjtRQUMxQixJQUFJLElBQUksQ0FBQyxlQUFlO1lBQ3RCLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLEVBQUUsQ0FBQyxRQUFRLENBQUM7UUFDL0MsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDO0lBRUQsSUFBVyxnQkFBZ0I7UUFDekIsSUFBSSxJQUFJLENBQUMsZUFBZTtZQUN0QixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQztRQUNuRCxPQUFPLEVBQUUsQ0FBQztJQUNaLENBQUM7SUFFTSxLQUFLO1FBQ1YsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FB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LElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDL0QsQ0FBQztJQUVELElBQVcsZUFBZTtRQUN4QixPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO0lBQzVELENBQUM7O2tIQXpHVSxxQkFBcUIsa0JBSXRCLFlBQVk7c0hBSlgscUJBQXFCLGNBRnBCLE1BQU07MkZBRVAscUJBQXFCO2tCQUhqQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7MEJBS0ksTUFBTTsyQkFBQyxZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiLy8vIDxyZWZlcmVuY2UgcGF0aD0nLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQHR5cGVzL2FkYWwvaW5kZXguZC50cycvPlxuaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBiaW5kQ2FsbGJhY2sgfSBmcm9tICdyeGpzJztcbmltcG9ydCAqIGFzIGFkYWxMaWIgZnJvbSAnYWRhbC1hbmd1bGFyJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgTmd4QWRhbEFuZ3VsYXJTZXJ2aWNlIHtcbiAgcHJpdmF0ZSBjb250ZXh0OiBhZGFsLkF1dGhlbnRpY2F0aW9uQ29udGV4dDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KCdhZGFsQ29uZmlnJykgcHJpdmF0ZSBhZGFsQ29uZmlnOiBhbnlcbiAgKSB7XG4gICAgaWYgKHR5cGVvZiBhZGFsQ29uZmlnID09PSAnZnVuY3Rpb24nKSBcbiAgICAgIHRoaXMuYWRhbENvbmZpZyA9IGFkYWxDb25maWcoKTtcbiAgICB0aGlzLmNvbnRleHQgPSA8YWRhbC5BdXRoZW50aWNhdGlvbkNvbnRleHQ+YWRhbExpYi5pbmplY3QodGhpcy5hZGFsQ29uZmlnKTtcbiAgICB0aGlzLmhhbmRsZUNhbGxiYWNrKCk7ICAgIFxuICB9XG5cbiAgcHVibGljIGdldCBMb2dnZWRJblVzZXJFbWFpbCgpIHtcbiAgICBpZiAodGhpcy5pc0F1dGhlbnRpY2F0ZWQpIFxuICAgICAgcmV0dXJuIHRoaXMuY29udGV4dC5nZXRDYWNoZWRVc2VyKCkudXNlck5hbWU7XG4gICAgcmV0dXJuICcnO1xuICB9XG5cbiAgcHVibGljIGdldCBMb2dnZWRJblVzZXJOYW1lKCkge1xuICAgIGlmICh0aGlzLmlzQXV0aGVudGljYXRlZClcbiAgICAgIHJldHVybiB0aGlzLmNvbnRleHQuZ2V0Q2FjaGVkVXNlcigpLnByb2ZpbGUubmFtZTtcbiAgICByZXR1cm4gJyc7XG4gIH1cblxuICBwdWJsaWMgbG9naW4oKSB7XG4gICAgdGhpcy5jb250ZXh0LmxvZ2luKCk7XG4gIH1cblxuICBwdWJsaWMgbG9nb3V0KCkge1xuICAgIHRoaXMuY29udGV4dC5sb2dPdXQoKTtcbiAgfVxuXG4gIHB1YmxpYyBHZXRSZXNvdXJjZUZvckVuZHBvaW50KHVybDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBsZXQgcmVzb3VyY2UgPSBudWxsO1xuICAgIGlmICh1cmwpIHtcbiAgICAgIHJlc291cmNlID0gdGhpcy5jb250ZXh0LmdldFJlc291cmNlRm9yRW5kcG9pbnQodXJsKTtcbiAgICAgIGlmICghcmVzb3VyY2UpIHtcbiAgICAgICAgcmVzb3VyY2UgPSB0aGlzLmFkYWxDb25maWcuY2xpZW50SWQ7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXNvdXJjZTtcbiAgfVxuXG4gIHB1YmxpYyBSZW5ld1Rva2VuKHVybDogc3RyaW5nKSB7XG4gICAgbGV0IHJlc291cmNlID0gdGhpcy5HZXRSZXNvdXJjZUZvckVuZHBvaW50KHVybCk7XG4gICAgcmV0dXJuIHRoaXMuY29udGV4dC5jbGVhckNhY2hlRm9yUmVzb3VyY2UocmVzb3VyY2UpOyAvLyBUcmlnZ2VyIHRoZSBBREFMIHRva2VuIHJlbmV3IFxuICB9XG5cbiAgcHVibGljIGFjcXVpcmVUb2tlbih1cmw6IHN0cmluZykge1xuICAgIGNvbnN0IF90aGlzID0gdGhpczsgICAvLyBzYXZlIG91dGVyIHRoaXMgZm9yIGlubmVyIGZ1bmN0aW9uXG4gICAgbGV0IGVycm9yTWVzc2FnZTogc3RyaW5nO1xuXG4gICAgcmV0dXJuIGJpbmRDYWxsYmFjayhhY3F1aXJlVG9rZW5JbnRlcm5hbCwgKHRva2VuOiBzdHJpbmcpID0+IHtcbiAgICAgIGlmICghdG9rZW4gJiYgZXJyb3JNZXNzYWdlKSB7XG4gICAgICAgIHRocm93IChlcnJvck1lc3NhZ2UpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRva2VuO1xuICAgIH0pKCk7XG5cbiAgICBmdW5jdGlvbiBhY3F1aXJlVG9rZW5JbnRlcm5hbChjYjogYW55KSB7XG4gICAgICBsZXQgczogc3RyaW5nID0gJyc7XG4gICAgICBsZXQgcmVzb3VyY2U6IHN0cmluZztcbiAgICAgIHJlc291cmNlID0gX3RoaXMuR2V0UmVzb3VyY2VGb3JFbmRwb2ludCh1cmwpO1xuXG4gICAgICBfdGhpcy5jb250ZXh0LmFjcXVpcmVUb2tlbihyZXNvdXJjZSwgKGVycm9yOiBzdHJpbmcsIHRva2VuT3V0OiBzdHJpbmcpID0+IHtcbiAgICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgICAgX3RoaXMuY29udGV4dC5lcnJvcignRXJyb3Igd2hlbiBhY3F1aXJpbmcgdG9rZW4gZm9yIHJlc291cmNlOiAnICsgcmVzb3VyY2UsIGVycm9yKTtcbiAgICAgICAgICBlcnJvck1lc3NhZ2UgPSBlcnJvcjtcbiAgICAgICAgICBjYignJyBhcyBzdHJpbmcpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNiKHRva2VuT3V0KTtcbiAgICAgICAgICBzID0gdG9rZW5PdXQ7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHM7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldFRva2VuKHVybDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCByZXNvdXJjZSA9IHRoaXMuY29udGV4dC5nZXRSZXNvdXJjZUZvckVuZHBvaW50KHVybCk7XG4gICAgY29uc3Qgc3RvcmFnZSA9IHRoaXMuYWRhbENvbmZpZy5jYWNoZUxvY2F0aW9uO1xuICAgIGxldCBrZXk6IHN0cmluZyA9ICcnO1xuICAgIGlmIChyZXNvdXJjZSkga2V5ID0gJ2FkYWwuYWNjZXNzLnRva2VuLmtleScgKyByZXNvdXJjZTtcbiAgICBlbHNlIGtleSA9ICdhZGFsLmlkdG9rZW4nO1xuXG4gICAgaWYgKHN0b3JhZ2UgPT09ICdsb2NhbFN0b3JhZ2UnKVxuICAgICAgcmV0dXJuIGxvY2FsU3RvcmFnZS5nZXRJdGVtKGtleSkgPz8gJyc7XG4gICAgZWxzZSBcbiAgICAgIHJldHVybiBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKGtleSkgPz8gJyc7ICAgICBcbiAgfVxuXG4gIGhhbmRsZUNhbGxiYWNrKCkge1xuICAgIHRoaXMuY29udGV4dC5oYW5kbGVXaW5kb3dDYWxsYmFjaygpO1xuICB9XG5cbiAgcHVibGljIGdldCB1c2VySW5mbygpIHtcbiAgICByZXR1cm4gdGhpcy5jb250ZXh0LmdldENhY2hlZFVzZXIoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgYWNjZXNzVG9rZW4oKSB7XG4gICAgcmV0dXJuIHRoaXMuY29udGV4dC5nZXRDYWNoZWRUb2tlbih0aGlzLmFkYWxDb25maWcuY2xpZW50SWQpO1xuICB9XG5cbiAgcHVibGljIGdldCBpc0F1dGhlbnRpY2F0ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICh0aGlzLnVzZXJJbmZvICYmIHRoaXMuYWNjZXNzVG9rZW4pID8gdHJ1ZSA6IGZhbHNlO1xuICB9XG59Il19