/** * @Name: User Utils * @Creation Date: Nov 24, 2018 * @Author: sbaireddy * @Version: 1.0 : */ import { User } from './modal/user'; import * as Constants from '../shared/constants'; import { environment } from '../../environments/environment'; import { HEADER_BACKGROUND_DEFAULT, SIDEBAR_BACKGROUND_DEFAULT, SIDEBAR_ACTIVE_COLOR_DEFAULT, CONTENT_BACKGROUND_DEFAULT } from '../shared/form.constants'; /** Deafult Class representing the user utils for application. */ export default class UserUtils { private COMPONENT_NAME: string = 'UserUtils'; static setOktaSession(authResult): void { // Set the time that the Access Token will expire at const expiresAt = JSON.stringify((authResult.expiresIn * 1000) + new Date().getTime()); // If there is a value on the `scope` param from the authResult, // use it to set scopes in the session for the user. Otherwise // use the scopes as requested. If no scopes were requested, // set it to nothing const scopes = authResult.scope || ''; //const scopes = authResult.scope || this.requestedScopes || ''; localStorage.setItem('access_token', authResult.accessToken); localStorage.setItem('id_token', authResult.idToken); localStorage.setItem('expires_at', expiresAt); localStorage.setItem('scopes', JSON.stringify(scopes)); } static removeOktaSession(): void { // Remove tokens and expiry time from localStorage localStorage.removeItem('access_token'); localStorage.removeItem('id_token'); localStorage.removeItem('expires_at'); localStorage.removeItem('scopes'); // Go back to the home route //this.router.navigate(['/']); } static isAuthenticated(): boolean { // Check whether the current time is past the // Access Token's expiry time const expiresAt = JSON.parse(localStorage.getItem('expires_at')); return new Date().getTime() < expiresAt; } static userHasScopes(scopes: Array): boolean { const grantedScopes = JSON.parse(localStorage.getItem('scopes')).split(' '); return scopes.every(scope => grantedScopes.includes(scope)); } /** Checks the either bypass authenication or not */ static canBypassAuthentication(pathname: string): boolean { return (pathname && (pathname.indexOf('quote') != -1 || pathname.indexOf('static') != -1) ); } /** Checks the access for given store# */ static canSuportStore(storeId: string|number): boolean{ return (storeId === Constants.STORE_ID_CD || storeId === Constants.STORE_ID_CD_STR || storeId === Constants.STORE_ID_BD || storeId === Constants.STORE_ID_BD_STR || storeId === Constants.STORE_ID_CS || storeId === Constants.STORE_ID_CS_STR || storeId === Constants.STORE_ID_RT || storeId === Constants.STORE_ID_RT_STR ); } /** Checks the access for given store# */ static hasAccessStore(storeId: number, user: User): boolean{ if (user.channels && user.channels.length > 0) { for (const channel of user.channels) { if (channel.storeId === storeId) { return true; } } } return false; } /** Gets the applicable access store */ static getAccessStore(user: User): number { let storeId: number; if (user.channels && user.channels.length > 0) { for (const channel of user.channels) { if (this.canSuportStore(channel.storeId)) { storeId = channel.storeId; break; } } } return storeId; } /** Active selected store */ static activeSelectedStore(storeId: number, user: User): void{ if (user.channels && user.channels.length > 0) { for (const channel of user.channels) { channel.active = channel.storeId === storeId ? true : false; } } } /** updates the user favorites */ static updateFavorites(user: User): void { if (!user.favorites) { user.favorites = { cardsPerRow: Constants.CARDS_PER_ROW, cardsPerPage: Constants.CARDS_PER_PAGE, ordersPerPage: Constants.ORDERS_PER_PAGE, headerBackground: HEADER_BACKGROUND_DEFAULT, contentBackground: CONTENT_BACKGROUND_DEFAULT, sidebarBackground: SIDEBAR_BACKGROUND_DEFAULT, sidebarActiveColor: SIDEBAR_ACTIVE_COLOR_DEFAULT, favoriteDevicesGsm: null, favoriteDevicesData: null, favoriteAccessories: null } } else { user.favorites.cardsPerRow = user.favorites.cardsPerRow ? user.favorites.cardsPerRow : Constants.CARDS_PER_ROW; user.favorites.cardsPerPage = user.favorites.cardsPerPage ? user.favorites.cardsPerPage : Constants.CARDS_PER_PAGE; user.favorites.ordersPerPage = user.favorites.ordersPerPage ? user.favorites.ordersPerPage : Constants.ORDERS_PER_PAGE; user.favorites.headerBackground = user.favorites.headerBackground ? user.favorites.headerBackground : HEADER_BACKGROUND_DEFAULT; user.favorites.contentBackground = user.favorites.contentBackground ? user.favorites.contentBackground : CONTENT_BACKGROUND_DEFAULT; user.favorites.sidebarBackground = user.favorites.sidebarBackground ? user.favorites.sidebarBackground : SIDEBAR_BACKGROUND_DEFAULT; user.favorites.sidebarActiveColor = user.favorites.sidebarActiveColor ? user.favorites.sidebarActiveColor : SIDEBAR_ACTIVE_COLOR_DEFAULT; } } /** Sets the user permissions */ static setPermissionsForAgent(user: User): void { // check for only returns if (user && user.permissions) { const isNextGen = user.permissions.canSubmitWebOrder; // let isTForceAgent = (user.permissions.canAccessTIC && user.permissions.isTICUserEligibleForNewActivation); user.permissions.canBypassValidation = (user.permissions.isWTS || user.permissions.isManager || user.permissions.isSupervisor || user.permissions.isFraudAgent) ? true : false; user.permissions.showCustomerWebOrderId = (user.permissions.isWTS || user.permissions.isManager || user.permissions.isSupervisor || isNextGen) ? true : false; user.permissions.showCustomerDealerCode = (user.permissions.isWTS || user.permissions.isManager || user.permissions.isSupervisor || user.permissions.canAccessBD) ? true : false; user.permissions.showCustomerCorporateFields = ((user.permissions.isWTS || user.permissions.isManager || user.permissions.isSupervisor) && user.permissions.canAccessBD) ? true : false; user.permissions.canDoCreditCheckNoCreditCheck = (user.permissions.isWTS || user.permissions.isManager || user.permissions.isSupervisor || isNextGen || user.permissions.canAccessBD || user.permissions.canAccessCD) ? true : false; user.permissions.canAdjustPricing = (user.permissions.isWTS || user.permissions.isManager || user.permissions.isSupervisor) ? true : false; user.permissions.showCheckoutDealercode = (user.permissions.isWTS || user.permissions.isManager || user.permissions.isSupervisor || user.permissions.canAccessBD) ? true : false; user.permissions.ShowCheckoutRetailStore = (user.permissions.isWTS || user.permissions.isManager || user.permissions.isSupervisor) ? true : false; user.permissions.showCheckoutWebOrderId = (user.permissions.isWTS || user.permissions.isManager || user.permissions.isSupervisor || isNextGen) ? true : false; user.permissions.canSubmitWebOrder = (isNextGen) ? true : false; user.permissions.canIssueCredit = (user.permissions.isWTS || user.permissions.isManager || user.permissions.isSupervisor) ? true : false; user.permissions.canPerformReturnExchange = (user.permissions.isWTS || user.permissions.isManager || user.permissions.isSupervisor) ? true : false; user.permissions.canPerformExchange = (user.permissions.isWTS || user.permissions.isManager || user.permissions.isSupervisor) ? true : false; user.permissions.showAdvanceSection = (user.permissions.isWTS || user.permissions.isManager || user.permissions.isSupervisor || user.permissions.isFraudAgent) ? true : false; user.permissions.isCDChannel = (user.permissions.canAccessBD || user.permissions.canAccessCD || user.permissions.isWTS || user.permissions.isManager || user.permissions.isSupervisor || user.permissions.isFraudAgent || isNextGen) ? true : false; user.permissions.isBDChannel = (user.permissions.canAccessBD || user.permissions.isWTS || user.permissions.isManager || user.permissions.isSupervisor || user.permissions.isFraudAgent) ? true : false; user.permissions.isCSChannel = (user.permissions.canAccessTIC || user.permissions.isTICUserEligibleForNewActivation || user.permissions.isManager || user.permissions.isSupervisor || user.permissions.isFraudAgent) ? true : false; user.permissions.isHRT = (user.permissions.canIssueAccessoryCredit && user.permissions.canIssueSSKCredit && user.permissions.canIssueDeviceCredit && user.permissions.canIssueShippingCredit) ? true : false; } } }