@universis/common
Version:
Universis - common directives and services
83 lines • 11.6 kB
JavaScript
import { Component, ViewEncapsulation, } from '@angular/core';
import { ActivatedRoute, Router } from '@angular/router';
import { AuthenticationService } from './services/authentication.service';
import { UserService } from './services/user.service';
import { ErrorService } from '../error/error.service';
import { AES, enc } from 'crypto-js';
import * as i0 from "@angular/core";
import * as i1 from "@angular/router";
import * as i2 from "./services/user.service";
import * as i3 from "../error/error.service";
import * as i4 from "./services/authentication.service";
export class AuthCallbackComponent {
constructor(_router, _userService, _route, _errorService, _authService) {
this._router = _router;
this._userService = _userService;
this._route = _route;
this._errorService = _errorService;
this._authService = _authService;
}
ngOnDestroy() {
if (this.queryMapSubscription) {
this.queryMapSubscription.unsubscribe();
}
}
ngOnInit() {
// validate code
this.queryMapSubscription = this._route.queryParamMap.subscribe((paramMap) => {
const params = paramMap.keys.reduce((obj, currentValue) => {
const values = paramMap.getAll(currentValue);
Object.defineProperty(obj, currentValue, {
enumerable: true,
configurable: true,
writable: true,
value: values.length > 1 ? values : values[0]
});
return obj;
}, {});
this._authService.callback(params).then((res) => {
if (typeof res === 'object') {
// try to get state parameter
let navigateURL = '/';
const state = paramMap.get('state');
// get code verifier
if (state && res.token && res.token.code_verifier) {
// try to decrypt state parameter
try {
// get hex bytes
const hex = enc.Hex.parse(state);
// convert hex to base64
const b64 = hex.toString(enc.Base64);
// decrypt state parameter
const stateURL = AES.decrypt(b64, res.token.code_verifier).toString(enc.Utf8);
// if stateURL is a relative URL
if (stateURL && /^\//.test(stateURL)) {
// set navigate to state URL
navigateURL = stateURL;
}
}
catch (err) {
console.error('AUTH', 'STATE', err);
}
}
// and finally navigate client
return this._router.navigate([navigateURL]);
}
return;
}).catch(err => {
return this._errorService.navigateToError(err);
});
});
}
}
AuthCallbackComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: AuthCallbackComponent, deps: [{ token: i1.Router }, { token: i2.UserService }, { token: i1.ActivatedRoute }, { token: i3.ErrorService }, { token: i4.AuthenticationService }], target: i0.ɵɵFactoryTarget.Component });
AuthCallbackComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: AuthCallbackComponent, selector: "universis-auth-callback", ngImport: i0, template: '<div></div>', isInline: true, encapsulation: i0.ViewEncapsulation.None });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: AuthCallbackComponent, decorators: [{
type: Component,
args: [{
selector: 'universis-auth-callback',
template: '<div></div>',
encapsulation: ViewEncapsulation.None,
}]
}], ctorParameters: function () { return [{ type: i1.Router }, { type: i2.UserService }, { type: i1.ActivatedRoute }, { type: i3.ErrorService }, { type: i4.AuthenticationService }]; } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC1jYWxsYmFjay5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXV0aC9hdXRoLWNhbGxiYWNrLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUdULGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBWSxNQUFNLGlCQUFpQixDQUFDO0FBQ25FLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN0RCxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFDcEQsT0FBTyxFQUFDLEdBQUcsRUFBRSxHQUFHLEVBQVUsTUFBTSxXQUFXLENBQUM7Ozs7OztBQVM1QyxNQUFNLE9BQU8scUJBQXFCO0lBR2hDLFlBQ1UsT0FBZSxFQUNmLFlBQXlCLEVBQ3pCLE1BQXNCLEVBQ3RCLGFBQTJCLEVBQzNCLFlBQW1DO1FBSm5DLFlBQU8sR0FBUCxPQUFPLENBQVE7UUFDZixpQkFBWSxHQUFaLFlBQVksQ0FBYTtRQUN6QixXQUFNLEdBQU4sTUFBTSxDQUFnQjtRQUN0QixrQkFBYSxHQUFiLGFBQWEsQ0FBYztRQUMzQixpQkFBWSxHQUFaLFlBQVksQ0FBdUI7SUFDN0MsQ0FBQztJQUNELFdBQVc7UUFDVCxJQUFJLElBQUksQ0FBQyxvQkFBb0IsRUFBRTtZQUM3QixJQUFJLENBQUMsb0JBQW9CLENBQUMsV0FBVyxFQUFFLENBQUM7U0FDekM7SUFDSCxDQUFDO0lBRUQsUUFBUTtRQUNOLGdCQUFnQjtRQUVoQixJQUFJLENBQUMsb0JBQW9CLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLENBQUMsUUFBa0IsRUFBRSxFQUFFO1lBQ3JGLE1BQU0sTUFBTSxHQUFRLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLFlBQVksRUFBRSxFQUFFO2dCQUM3RCxNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO2dCQUM3QyxNQUFNLENBQUMsY0FBYyxDQUFDLEdBQUcsRUFBRSxZQUFZLEVBQUU7b0JBQ3ZDLFVBQVUsRUFBRSxJQUFJO29CQUNoQixZQUFZLEVBQUUsSUFBSTtvQkFDbEIsUUFBUSxFQUFFLElBQUk7b0JBQ2QsS0FBSyxFQUFFLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7aUJBQzlDLENBQUMsQ0FBQztnQkFDSCxPQUFPLEdBQUcsQ0FBQztZQUNiLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUNQLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFO2dCQUNuRCxJQUFJLE9BQU8sR0FBRyxLQUFLLFFBQVEsRUFBRTtvQkFDM0IsNkJBQTZCO29CQUM3QixJQUFJLFdBQVcsR0FBRyxHQUFHLENBQUM7b0JBRXRCLE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7b0JBQ3BDLG9CQUFvQjtvQkFDcEIsSUFBSSxLQUFLLElBQUksR0FBRyxDQUFDLEtBQUssSUFBSSxHQUFHLENBQUMsS0FBSyxDQUFDLGFBQWEsRUFBRTt3QkFDakQsaUNBQWlDO3dCQUNqQyxJQUFJOzRCQUNGLGdCQUFnQjs0QkFDaEIsTUFBTSxHQUFHLEdBQW1DLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDOzRCQUNqRSx3QkFBd0I7NEJBQ3hCLE1BQU0sR0FBRyxHQUFHLEdBQUcsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDOzRCQUNyQywwQkFBMEI7NEJBQzFCLE1BQU0sUUFBUSxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQzs0QkFDOUUsZ0NBQWdDOzRCQUNoQyxJQUFJLFFBQVEsSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFO2dDQUNwQyw0QkFBNEI7Z0NBQzVCLFdBQVcsR0FBRyxRQUFRLENBQUM7NkJBQ3hCO3lCQUNGO3dCQUFDLE9BQU8sR0FBRyxFQUFFOzRCQUNaLE9BQU8sQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLENBQUMsQ0FBQzt5QkFDckM7cUJBQ0Y7b0JBQ0QsOEJBQThCO29CQUM5QixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztpQkFDN0M7Z0JBQ0QsT0FBTztZQUNULENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBRSxHQUFHLENBQUMsRUFBRTtnQkFDZCxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2pELENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOzttSEEvRFUscUJBQXFCO3VHQUFyQixxQkFBcUIsK0RBSnRCLGFBQWE7NEZBSVoscUJBQXFCO2tCQU5qQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSx5QkFBeUI7b0JBQ25DLFFBQVEsRUFBRSxhQUFhO29CQUN2QixhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTtpQkFDdEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyLCBQYXJhbU1hcCB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBBdXRoZW50aWNhdGlvblNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL2F1dGhlbnRpY2F0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgVXNlclNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL3VzZXIuc2VydmljZSc7XG5pbXBvcnQge0Vycm9yU2VydmljZX0gZnJvbSAnLi4vZXJyb3IvZXJyb3Iuc2VydmljZSc7XG5pbXBvcnQge0FFUywgZW5jLCBFbmNvZGVyfSBmcm9tICdjcnlwdG8tanMnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3VuaXZlcnNpcy1hdXRoLWNhbGxiYWNrJyxcbiAgdGVtcGxhdGU6ICc8ZGl2PjwvZGl2PicsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG59KVxuXG5leHBvcnQgY2xhc3MgQXV0aENhbGxiYWNrQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBwcml2YXRlIHF1ZXJ5TWFwU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gfCB1bmRlZmluZWQ7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBfcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSBfdXNlclNlcnZpY2U6IFVzZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgX3JvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICBwcml2YXRlIF9lcnJvclNlcnZpY2U6IEVycm9yU2VydmljZSxcbiAgICBwcml2YXRlIF9hdXRoU2VydmljZTogQXV0aGVudGljYXRpb25TZXJ2aWNlKSB7XG4gIH1cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucXVlcnlNYXBTdWJzY3JpcHRpb24pIHtcbiAgICAgIHRoaXMucXVlcnlNYXBTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICAvLyB2YWxpZGF0ZSBjb2RlXG5cbiAgICB0aGlzLnF1ZXJ5TWFwU3Vic2NyaXB0aW9uID0gdGhpcy5fcm91dGUucXVlcnlQYXJhbU1hcC5zdWJzY3JpYmUoKHBhcmFtTWFwOiBQYXJhbU1hcCkgPT4ge1xuICAgICAgY29uc3QgcGFyYW1zOiBhbnkgPSBwYXJhbU1hcC5rZXlzLnJlZHVjZSgob2JqLCBjdXJyZW50VmFsdWUpID0+IHtcbiAgICAgICAgY29uc3QgdmFsdWVzID0gcGFyYW1NYXAuZ2V0QWxsKGN1cnJlbnRWYWx1ZSk7XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGN1cnJlbnRWYWx1ZSwge1xuICAgICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgICAgICAgIHZhbHVlOiB2YWx1ZXMubGVuZ3RoID4gMSA/IHZhbHVlcyA6IHZhbHVlc1swXVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIG9iajtcbiAgICAgIH0sIHt9KTtcbiAgICAgIHRoaXMuX2F1dGhTZXJ2aWNlLmNhbGxiYWNrKHBhcmFtcykudGhlbigocmVzOiBhbnkpID0+IHtcbiAgICAgICAgaWYgKHR5cGVvZiByZXMgPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgLy8gdHJ5IHRvIGdldCBzdGF0ZSBwYXJhbWV0ZXJcbiAgICAgICAgICBsZXQgbmF2aWdhdGVVUkwgPSAnLyc7XG5cbiAgICAgICAgICBjb25zdCBzdGF0ZSA9IHBhcmFtTWFwLmdldCgnc3RhdGUnKTtcbiAgICAgICAgICAvLyBnZXQgY29kZSB2ZXJpZmllclxuICAgICAgICAgIGlmIChzdGF0ZSAmJiByZXMudG9rZW4gJiYgcmVzLnRva2VuLmNvZGVfdmVyaWZpZXIpIHtcbiAgICAgICAgICAgIC8vIHRyeSB0byBkZWNyeXB0IHN0YXRlIHBhcmFtZXRlclxuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgLy8gZ2V0IGhleCBieXRlc1xuICAgICAgICAgICAgICBjb25zdCBoZXg6IHsgdG9TdHJpbmcoZW5jb2RlcjogRW5jb2RlcikgfSA9IGVuYy5IZXgucGFyc2Uoc3RhdGUpO1xuICAgICAgICAgICAgICAvLyBjb252ZXJ0IGhleCB0byBiYXNlNjRcbiAgICAgICAgICAgICAgY29uc3QgYjY0ID0gaGV4LnRvU3RyaW5nKGVuYy5CYXNlNjQpO1xuICAgICAgICAgICAgICAvLyBkZWNyeXB0IHN0YXRlIHBhcmFtZXRlclxuICAgICAgICAgICAgICBjb25zdCBzdGF0ZVVSTCA9IEFFUy5kZWNyeXB0KGI2NCwgcmVzLnRva2VuLmNvZGVfdmVyaWZpZXIpLnRvU3RyaW5nKGVuYy5VdGY4KTtcbiAgICAgICAgICAgICAgLy8gaWYgc3RhdGVVUkwgaXMgYSByZWxhdGl2ZSBVUkxcbiAgICAgICAgICAgICAgaWYgKHN0YXRlVVJMICYmIC9eXFwvLy50ZXN0KHN0YXRlVVJMKSkge1xuICAgICAgICAgICAgICAgIC8vIHNldCBuYXZpZ2F0ZSB0byBzdGF0ZSBVUkxcbiAgICAgICAgICAgICAgICBuYXZpZ2F0ZVVSTCA9IHN0YXRlVVJMO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignQVVUSCcsICdTVEFURScsIGVycik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIC8vIGFuZCBmaW5hbGx5IG5hdmlnYXRlIGNsaWVudFxuICAgICAgICAgIHJldHVybiB0aGlzLl9yb3V0ZXIubmF2aWdhdGUoW25hdmlnYXRlVVJMXSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfSkuY2F0Y2goIGVyciA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9lcnJvclNlcnZpY2UubmF2aWdhdGVUb0Vycm9yKGVycik7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG59XG4iXX0=