UNPKG

@universis/common

Version:

Universis - common directives and services

83 lines 11.6 kB
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=