UNPKG

vix-ui

Version:

1,057 lines (1,048 loc) 293 kB
(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/core'), require('@angular/common/http'), require('angular-oauth2-oidc'), require('@okta/okta-auth-js'), require('@angular/forms'), require('@angular/router'), require('@angular/common'), require('@angular/material'), require('@angular/platform-browser/animations'), require('ngx-echarts'), require('lodash'), require('@ng-bootstrap/ng-bootstrap'), require('@ng-select/ng-select')) : typeof define === 'function' && define.amd ? define('vix-ui', ['exports', '@angular/core', '@angular/common/http', 'angular-oauth2-oidc', '@okta/okta-auth-js', '@angular/forms', '@angular/router', '@angular/common', '@angular/material', '@angular/platform-browser/animations', 'ngx-echarts', 'lodash', '@ng-bootstrap/ng-bootstrap', '@ng-select/ng-select'], factory) : (factory((global['vix-ui'] = {}),global.ng.core,global.ng.common.http,global.angularOauth2Oidc,global.OktaAuth,global.ng.forms,global.ng.router,global.ng.common,global.ng.material,global.ng.platformBrowser.animations,global.ngxEcharts,global._,global.ngBootstrap,global.ngSelect)); }(this, (function (exports,core,http,angularOauth2Oidc,OktaAuth,forms,router,common,material,animations,ngxEcharts,_,ngBootstrap,ngSelect) { 'use strict'; /*! ***************************************************************************** Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, MERCHANTABLITY OR NON-INFRINGEMENT. See the Apache Version 2.0 License for specific language governing permissions and limitations under the License. ***************************************************************************** */ function __awaiter(thisArg, _arguments, P, generator) { return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); } function __generator(thisArg, body) { var _$$1 = { label: 0, sent: function () { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function () { return this; }), g; function verb(n) { return function (v) { return step([n, v]); }; } function step(op) { if (f) throw new TypeError("Generator is already executing."); while (_$$1) try { if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; if (y = 0, t) op = [op[0] & 2, t.value]; switch (op[0]) { case 0: case 1: t = op; break; case 4: _$$1.label++; return { value: op[1], done: false }; case 5: _$$1.label++; y = op[1]; op = [0]; continue; case 7: op = _$$1.ops.pop(); _$$1.trys.pop(); continue; default: if (!(t = _$$1.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _$$1 = 0; continue; } if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _$$1.label = op[1]; break; } if (op[0] === 6 && _$$1.label < t[1]) { _$$1.label = t[1]; t = op; break; } if (t && _$$1.label < t[2]) { _$$1.label = t[2]; _$$1.ops.push(op); break; } if (t[2]) _$$1.ops.pop(); _$$1.trys.pop(); continue; } op = body.call(thisArg, _$$1); } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; } } function __values(o) { var m = typeof Symbol === "function" && o[Symbol.iterator], i = 0; if (m) return m.call(o); return { next: function () { if (o && i >= o.length) o = void 0; return { value: o && o[i++], done: !o }; } }; } /** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc */ /** * VixAuthConfig holds the necessary config required by other services */ var /** * VixAuthConfig holds the necessary config required by other services */ VixAuthConfig = /** @class */ (function () { /** * VixAuthConfig holds the necessary config required by other services */ function VixAuthConfig() { } return VixAuthConfig; }()); /** * AuthConfigService provides get method for all parameters * * \@var {string} _url: url for okta account like: 'https://dev-913444.oktapreview.com' * \@ */ var AuthConfigService = /** @class */ (function () { function AuthConfigService(authConfig) { this.authConfig = authConfig; this._url = authConfig.url; this._issuer = authConfig.issuer; this._clientId = authConfig.clientId; this._redirectUrl = authConfig.redirectUrl; this._apiKey = authConfig.apiKey; this._loginUrl = authConfig.loginUrl; } /** * @return {?} */ AuthConfigService.prototype.getLoginUrl = /** * @return {?} */ function () { return this._loginUrl; }; /** * @returns url */ /** * @return {?} url */ AuthConfigService.prototype.getUrl = /** * @return {?} url */ function () { return this._url; }; /** * @returns issuer */ /** * @return {?} issuer */ AuthConfigService.prototype.getIssuer = /** * @return {?} issuer */ function () { return this._issuer; }; /** * @returns clientId */ /** * @return {?} clientId */ AuthConfigService.prototype.getClientId = /** * @return {?} clientId */ function () { return this._clientId; }; /** * * @returns redirectUrl */ /** * * @return {?} redirectUrl */ AuthConfigService.prototype.getRedirectUrl = /** * * @return {?} redirectUrl */ function () { return this._redirectUrl; }; /** * * @returns remove the domain from url. * example: return '/foo/bar' if redirectUrl is 'http://foobar.com/foo/bar' */ /** * * @return {?} remove the domain from url. * example: return '/foo/bar' if redirectUrl is 'http://foobar.com/foo/bar' */ AuthConfigService.prototype.getRoute = /** * * @return {?} remove the domain from url. * example: return '/foo/bar' if redirectUrl is 'http://foobar.com/foo/bar' */ function () { /** @type {?} */ var s = this._redirectUrl.split('/'); return '/' + s.slice(3, s.length).join('/'); }; /** * @returns okta API key */ /** * @return {?} okta API key */ AuthConfigService.prototype.getApiKey = /** * @return {?} okta API key */ function () { return this._apiKey; }; AuthConfigService.decorators = [ { type: core.Injectable } ]; AuthConfigService.ctorParameters = function () { return [ { type: VixAuthConfig } ]; }; return AuthConfigService; }()); /** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc */ /** * Wrapper for Okta API */ var OktaService = /** @class */ (function () { function OktaService(httpClient, authConfig) { this.httpClient = httpClient; this.authConfig = authConfig; this.httpOptions = { headers: new http.HttpHeaders({ 'Content-Type': 'application/json', 'Accept': 'application/json', 'Authorization': 'SSWS ' + this.authConfig.getApiKey() }) }; } /** * Build Full API URl by given endpoint */ /** * Build Full API URl by given endpoint * @param {?} endpoint * @return {?} */ OktaService.prototype.getFullUrl = /** * Build Full API URl by given endpoint * @param {?} endpoint * @return {?} */ function (endpoint) { return this.authConfig.getUrl() + "/api/v1" + endpoint; }; /** * Get user info by email. * doc: https://developer.okta.com/docs/api/resources/users#get-current-user */ /** * Get user info by email. * doc: https://developer.okta.com/docs/api/resources/users#get-current-user * @param {?} userId * @return {?} */ OktaService.prototype.getUserInfo = /** * Get user info by email. * doc: https://developer.okta.com/docs/api/resources/users#get-current-user * @param {?} userId * @return {?} */ function (userId) { return this.httpClient.get(this.getFullUrl("/users/" + userId), this.httpOptions).toPromise(); }; /** * Get user groups information by given userId * doc: https://developer.okta.com/docs/api/resources/users#get-member-groups */ /** * Get user groups information by given userId * doc: https://developer.okta.com/docs/api/resources/users#get-member-groups * @param {?} userId * @return {?} */ OktaService.prototype.getUserGroups = /** * Get user groups information by given userId * doc: https://developer.okta.com/docs/api/resources/users#get-member-groups * @param {?} userId * @return {?} */ function (userId) { return this.httpClient.get(this.getFullUrl("/users/" + userId + "/groups"), this.httpOptions).toPromise(); }; /** * List all groups */ /** * List all groups * @return {?} */ OktaService.prototype.listGroups = /** * List all groups * @return {?} */ function () { return this.httpClient.get(this.getFullUrl('/groups'), this.httpOptions).toPromise(); }; OktaService.decorators = [ { type: core.Injectable } ]; OktaService.ctorParameters = function () { return [ { type: http.HttpClient }, { type: AuthConfigService } ]; }; return OktaService; }()); /** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc */ /** * UserInfo holds the user information */ var /** * UserInfo holds the user information */ UserInfo = /** @class */ (function () { /** * Extract necessary information oktaUserInfo * @param oktaUserInfo, example: * { * "id": "foobar", * ... * "profile": { * "firstName": "foobar", * "lastName": "foobar", * "mobilePhone": null, * "secondEmail": null, * "login": "foo@bar.com", * "email": "foo@bar.com" * }, * ... * } */ function UserInfo(oktaUserInfo) { this.userId = oktaUserInfo.id; this.email = oktaUserInfo.profile.email; this.firstName = oktaUserInfo.profile.firstName; this.lastName = oktaUserInfo.profile.lastName; } return UserInfo; }()); /** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc */ /** * UserGroups holds the groups information of a user. It is mainly used to check permissions. */ var /** * UserGroups holds the groups information of a user. It is mainly used to check permissions. */ UserGroups = /** @class */ (function () { /** * construct UserGroups from OktaUserGroups * * @param oktaUserGroups Array of oktaGroups * oktaGroup example: * { ... * "profile": { * "name": "Everyone", * "description": "All users in your organization" * }, * ... * } */ function UserGroups(oktaUserGroups) { var _this = this; this.groups = []; if (oktaUserGroups) { oktaUserGroups.forEach(function (oktaGroup) { _this.groups.push(oktaGroup.profile.name); }); } } /** * Check if instance has enough permission for requireGroups. * * @returns true if this.groups contains all group of requireGroups, else then false */ /** * Check if instance has enough permission for requireGroups. * * @param {?} requireGroups * @return {?} true if this.groups contains all group of requireGroups, else then false */ UserGroups.prototype.hasPermission = /** * Check if instance has enough permission for requireGroups. * * @param {?} requireGroups * @return {?} true if this.groups contains all group of requireGroups, else then false */ function (requireGroups) { for (var i = 0; i < requireGroups.length; i++) { if (this.groups.indexOf(requireGroups[i]) > 0) { return true; } } return false; }; return UserGroups; }()); /** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc */ /** * VixAuthService is the interface exported to users. It wraps all API and methods. */ var VixAuthService = /** @class */ (function () { function VixAuthService(oauth, authConfig, okta) { this.oauth = oauth; this.authConfig = authConfig; this.okta = okta; this.oktaAuth = new OktaAuth({ url: this.authConfig.getUrl(), issuer: this.authConfig.getIssuer() }); } /** * Check permissions by userGroups and requireGroups * * @param userGroups groups users are in * @param requireGroups groups application requires user to have * @returns true/false */ /** * Check permissions by userGroups and requireGroups * * @param {?} userGroups groups users are in * @param {?} requireGroups groups application requires user to have * @return {?} true/false */ VixAuthService.hasPermission = /** * Check permissions by userGroups and requireGroups * * @param {?} userGroups groups users are in * @param {?} requireGroups groups application requires user to have * @return {?} true/false */ function (userGroups, requireGroups) { return userGroups.hasPermission(requireGroups); }; /** * Use tokenManager to store userId * TODO: actually I have problems in create a cache object to hold all these cache variables, so I use tokenManager to do these works. * TODO: need to create a share service to provide cache service */ /** * Use tokenManager to store userId * TODO: actually I have problems in create a cache object to hold all these cache variables, so I use tokenManager to do these works. * TODO: need to create a share service to provide cache service * @param {?} userId * @return {?} */ VixAuthService.prototype.setUserId = /** * Use tokenManager to store userId * TODO: actually I have problems in create a cache object to hold all these cache variables, so I use tokenManager to do these works. * TODO: need to create a share service to provide cache service * @param {?} userId * @return {?} */ function (userId) { /** @type {?} */ var obj = { accessToken: 'userId', expiresAt: Math.round((new Date()).getTime() / 1000 + 3600), scopes: [userId] }; this.oktaAuth.tokenManager.add('userId', obj); }; /** * Use tokenManager to store userId * TODO: actually I have problems in create a cache object to hold all these cache variables, so I use tokenManager to do these works. * TODO: need to create a share service to provide cache service */ /** * Use tokenManager to store userId * TODO: actually I have problems in create a cache object to hold all these cache variables, so I use tokenManager to do these works. * TODO: need to create a share service to provide cache service * @param {?} sessionToken * @return {?} */ VixAuthService.prototype.setSessionToken = /** * Use tokenManager to store userId * TODO: actually I have problems in create a cache object to hold all these cache variables, so I use tokenManager to do these works. * TODO: need to create a share service to provide cache service * @param {?} sessionToken * @return {?} */ function (sessionToken) { /** @type {?} */ var obj = { accessToken: 'sessionToken', expiresAt: Math.round((new Date()).getTime() / 1000 + 3600), scopes: [sessionToken] }; this.oktaAuth.tokenManager.add('sessionToken', obj); }; /** * Get userId from tokenManager */ /** * Get userId from tokenManager * @return {?} */ VixAuthService.prototype.getUserId = /** * Get userId from tokenManager * @return {?} */ function () { /** @type {?} */ var userIdObj = this.oktaAuth.tokenManager.get('userId'); if (userIdObj) { return this.oktaAuth.tokenManager.get('userId').scopes[0]; } else { return null; } }; /** * Get acess token */ /** * Get acess token * @return {?} */ VixAuthService.prototype.getSessionToken = /** * Get acess token * @return {?} */ function () { /** @type {?} */ var sessionTokenObj = this.oktaAuth.tokenManager.get('sessionToken'); if (sessionTokenObj) { return this.oktaAuth.tokenManager.get('sessionToken').scopes[0]; } else { return null; } }; /** * Store userGroup and shared among browsers by TokenManager with key 'userGroup' */ /** * Store userGroup and shared among browsers by TokenManager with key 'userGroup' * @param {?} userGroups * @return {?} */ VixAuthService.prototype.setCurrentUserGroups = /** * Store userGroup and shared among browsers by TokenManager with key 'userGroup' * @param {?} userGroups * @return {?} */ function (userGroups) { /** @type {?} */ var obj = { accessToken: 'userGroups', expiresAt: Math.round((new Date()).getTime() / 1000 + 3600), scopes: userGroups.groups }; this.oktaAuth.tokenManager.add('userGroups', obj); }; /** * Get stored userGroups and refresh if expires */ /** * Get stored userGroups and refresh if expires * @return {?} */ VixAuthService.prototype.getLoginUserGroups = /** * Get stored userGroups and refresh if expires * @return {?} */ function () { return __awaiter(this, void 0, void 0, function () { var userGroupsTokenObj, nowSecond, tmpUserGroups, userGroups; return __generator(this, function (_a) { switch (_a.label) { case 0: userGroupsTokenObj = this.oktaAuth.tokenManager.get('userGroups'); nowSecond = (new Date()).getTime() / 1000; if (!(!userGroupsTokenObj || nowSecond > userGroupsTokenObj.expireAt)) return [3 /*break*/, 2]; return [4 /*yield*/, this.getUserGroups(this.getUserId())]; case 1: tmpUserGroups = _a.sent(); this.setCurrentUserGroups(tmpUserGroups); _a.label = 2; case 2: userGroups = new UserGroups(null); userGroups.groups = this.oktaAuth.tokenManager.get('userGroups').scopes; return [2 /*return*/, userGroups]; } }); }); }; /** * Get current login userInfo * TODO: we can cache user info includes groups information when finished login */ /** * Get current login userInfo * TODO: we can cache user info includes groups information when finished login * @return {?} */ VixAuthService.prototype.getUserInfo = /** * Get current login userInfo * TODO: we can cache user info includes groups information when finished login * @return {?} */ function () { return __awaiter(this, void 0, void 0, function () { var oktaUserInfo; return __generator(this, function (_a) { switch (_a.label) { case 0: if (!this.isLogin()) return [3 /*break*/, 3]; return [4 /*yield*/, this.okta.getUserInfo(this.getUserId())]; case 1: oktaUserInfo = _a.sent(); return [4 /*yield*/, new UserInfo(oktaUserInfo)]; case 2: return [2 /*return*/, _a.sent()]; case 3: return [2 /*return*/, Promise.reject('not login')]; } }); }); }; /** * get userGroup by given userId */ /** * get userGroup by given userId * @param {?} userId * @return {?} */ VixAuthService.prototype.getUserGroups = /** * get userGroup by given userId * @param {?} userId * @return {?} */ function (userId) { return __awaiter(this, void 0, void 0, function () { var oktaUserGroups, err_1; return __generator(this, function (_a) { switch (_a.label) { case 0: if (!this.isLogin()) return [3 /*break*/, 6]; _a.label = 1; case 1: _a.trys.push([1, 4, , 5]); return [4 /*yield*/, this.okta.getUserGroups(userId)]; case 2: oktaUserGroups = _a.sent(); return [4 /*yield*/, new UserGroups(oktaUserGroups)]; case 3: return [2 /*return*/, _a.sent()]; case 4: err_1 = _a.sent(); console.log('getUserGroups err', err_1); return [3 /*break*/, 5]; case 5: return [3 /*break*/, 7]; case 6: return [2 /*return*/, null]; case 7: return [2 /*return*/]; } }); }); }; /** * Return if already login by check the existence of accessToken */ /** * Return if already login by check the existence of accessToken * @return {?} */ VixAuthService.prototype.isLogin = /** * Return if already login by check the existence of accessToken * @return {?} */ function () { return !!this.getUserId(); }; /** * Redirect to url for Google login */ /** * Redirect to url for Google login * @param {?} redirectUrl * @return {?} */ VixAuthService.prototype.loginWithGoogle = /** * Redirect to url for Google login * @param {?} redirectUrl * @return {?} */ function (redirectUrl) { window.location.href = this.authConfig.getUrl() + "/oauth2/v1/authorize?" + ("idp=0oadulhuz78SMW8cD0h7&client_id=" + this.authConfig.getClientId() + "&response_type=id_token&") + "response_mode=fragment&scope=openid&scope=email&scope=picture&scope=name&" + ("state=WM6D&nonce=YsG76jo&redirect_uri=" + redirectUrl); }; /** * Login by username and password */ /** * Login by username and password * @param {?} username * @param {?} password * @return {?} */ VixAuthService.prototype.loginWithPassword = /** * Login by username and password * @param {?} username * @param {?} password * @return {?} */ function (username, password) { return __awaiter(this, void 0, void 0, function () { var nonce, signInResponse, session; return __generator(this, function (_a) { switch (_a.label) { case 0: return [4 /*yield*/, this.oauth.createAndSaveNonce()]; case 1: nonce = _a.sent(); return [4 /*yield*/, this.oktaAuth.signIn({ username: username, password: password })]; case 2: signInResponse = _a.sent(); if (!(signInResponse.status === 'SUCCESS')) return [3 /*break*/, 5]; return [4 /*yield*/, this.oktaAuth.token.getWithoutPrompt({ clientId: this.authConfig.getClientId(), responseType: ['id_token', 'token'], scopes: ['openid', 'profile', 'email'], sessionToken: signInResponse.sessionToken, nonce: nonce, redirectUri: window.location.origin })]; case 3: _a.sent(); return [4 /*yield*/, this.getSession()]; case 4: session = _a.sent(); if (session.status === 'ACTIVE') { console.log('session ACTIVE'); this.setUserId(session.userId); this.setSessionToken(session.id); } return [2 /*return*/, Promise.resolve('login successfully')]; case 5: return [2 /*return*/, Promise.reject('username or password error')]; } }); }); }; /** * List all groups */ /** * List all groups * @return {?} */ VixAuthService.prototype.listGroups = /** * List all groups * @return {?} */ function () { return __awaiter(this, void 0, void 0, function () { return __generator(this, function (_a) { switch (_a.label) { case 0: return [4 /*yield*/, this.okta.listGroups()]; case 1: return [2 /*return*/, _a.sent()]; } }); }); }; /** * Get session */ /** * Get session * @return {?} */ VixAuthService.prototype.getSession = /** * Get session * @return {?} */ function () { return __awaiter(this, void 0, void 0, function () { return __generator(this, function (_a) { switch (_a.label) { case 0: return [4 /*yield*/, this.oktaAuth.session.get()]; case 1: return [2 /*return*/, _a.sent()]; } }); }); }; /** * Navigate browser to login page */ /** * Navigate browser to login page * @return {?} */ VixAuthService.prototype.navigateToLoginPage = /** * Navigate browser to login page * @return {?} */ function () { console.log('navigateToLoginPage:', this.authConfig.getLoginUrl()); document.location.href = this.authConfig.getLoginUrl(); }; /** * Navigate browser to redirect page */ /** * Navigate browser to redirect page * @return {?} */ VixAuthService.prototype.navigateToRedirectPage = /** * Navigate browser to redirect page * @return {?} */ function () { console.log('navigateToRedirectPage:', this.authConfig.getRedirectUrl()); document.location.href = this.authConfig.getRedirectUrl(); }; /** * Logout current user and clear token */ /** * Logout current user and clear token * @return {?} */ VixAuthService.prototype.logout = /** * Logout current user and clear token * @return {?} */ function () { var _this = this; if (this.isLogin()) { this.oktaAuth.tokenManager.clear(); console.log('start to logout'); this.oktaAuth.signOut().then(function () { console.log('logout done, to navigate', _this.authConfig.getLoginUrl()); _this.navigateToLoginPage(); }); } }; VixAuthService.decorators = [ { type: core.Injectable } ]; VixAuthService.ctorParameters = function () { return [ { type: angularOauth2Oidc.OAuthService }, { type: AuthConfigService }, { type: OktaService } ]; }; return VixAuthService; }()); /** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc */ var VixLoginComponent = /** @class */ (function () { function VixLoginComponent(oauth, auth, router$$1, authConfig, cdRef, ngZone) { var _this = this; this.oauth = oauth; this.auth = auth; this.router = router$$1; this.authConfig = authConfig; this.cdRef = cdRef; this.ngZone = ngZone; this.loginFormControl = new forms.FormControl('', [forms.Validators.required, forms.Validators.email]); this.isShowProgressBar = false; this.isShowProgressBar = false; if (this.auth.isLogin()) { console.log('already login in login page'); this.ngZone.run(function () { _this.auth.navigateToRedirectPage(); }); } } /** * @param {?} status * @return {?} */ VixLoginComponent.prototype.toggleProgressBar = /** * @param {?} status * @return {?} */ function (status) { this.isShowProgressBar = status; }; /** * Form control to validate email */ /** * Form control to validate email * @return {?} */ VixLoginComponent.prototype.getErrorMessage = /** * Form control to validate email * @return {?} */ function () { return this.loginFormControl.hasError('required') ? 'You must enter a value' : this.loginFormControl.hasError('email') ? 'Not a valid email' : ''; }; /** * Login with Google */ /** * Login with Google * @return {?} */ VixLoginComponent.prototype.loginWithGoogle = /** * Login with Google * @return {?} */ function () { this.auth.loginWithGoogle(this.authConfig.getLoginUrl()); }; /** * Login with username and password. Redirect to url after login successfully */ /** * Login with username and password. Redirect to url after login successfully * @return {?} */ VixLoginComponent.prototype.loginWithPassword = /** * Login with username and password. Redirect to url after login successfully * @return {?} */ function () { var _this = this; if (this.loginFormControl.invalid) { alert('Email is not valid!'); return; } this.toggleProgressBar(true); this.auth.loginWithPassword(this.email, this.password) .then(function () { // this.router.navigate([this.authConfig.getRoute()]); _this.auth.navigateToRedirectPage(); }) .catch(function (err) { _this.toggleProgressBar(false); console.log('login with username and password failed', err); alert('Username or Password error, cannot login'); }); }; /** * @return {?} */ VixLoginComponent.prototype.ngAfterViewChecked = /** * @return {?} */ function () { this.cdRef.detectChanges(); }; /** * This is used for Google Login. Browser will redirect to the login url after login successfully. * ngAfterViewInit will get the access_token from url and redirect to the url set as redirect url. */ /** * This is used for Google Login. Browser will redirect to the login url after login successfully. * ngAfterViewInit will get the access_token from url and redirect to the url set as redirect url. * @return {?} */ VixLoginComponent.prototype.ngAfterViewInit = /** * This is used for Google Login. Browser will redirect to the login url after login successfully. * ngAfterViewInit will get the access_token from url and redirect to the url set as redirect url. * @return {?} */ function () { var _this = this; /** @type {?} */ var regexp = new RegExp('[#|\?]id_token=([^&]*)[&]{0,1}'); /** @type {?} */ var idTokenRegex = regexp.exec(this.router.url); if (idTokenRegex) { console.log('has idToken', idTokenRegex); this.toggleProgressBar(true); // has idToken in url this.auth.getSession().then(function (session) { if (session.status === 'ACTIVE') { console.log('session ACTIVE'); _this.auth.setUserId(session.userId); _this.ngZone.run(function () { _this.auth.navigateToRedirectPage(); }); } else { console.log('session INACTIVE'); _this.ngZone.run(function () { _this.auth.navigateToLoginPage(); }); } }); } }; VixLoginComponent.decorators = [ { type: core.Component, args: [{ selector: 'vix-log-in', template: "<title>ViSenze Sign In</title>\n<div class=\"background\">\n <img class=\"logo\" src=\"data:image/jpeg;base64,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