CINXE.COM

Investor Portal

<!DOCTYPE html> <html lang="en" ng-app="cafeangular-access-investorportal"> <head> <meta charset="utf-8" /> <title>Investor Portal</title> <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1" /> <meta http-equiv="Cache-control" content="no-cache, no-store, must-revalidate"> <meta http-equiv="Pragma" content="no-cache"> <meta http-equiv="Expires" content="-1"> <link rel="icon" type="image/x-icon" href="images/favicon.ico" /> <script> var isIEOrEdge = /msie\s|trident\//i.test(window.navigator.userAgent); if (!isIEOrEdge) { var style = document.createElement('style'); style.type = 'text/css'; style.innerHTML = '.hideIsInterExplorerDiv { visibility: hidden; display: none }'; document.getElementsByTagName('head')[0].appendChild(style); } </script> <!--Force logut when user try to register but already logged in on another tab --> <script src="appAccess/register-portal-user/registeruser-jwtexpiry.js"></script> <script>//parse jwt function parseJwt(token) { if (typeof window.atob == 'undefined') return {}; var base64Url = token.split('.')[1]; var base64 = base64Url.replace('-', '+').replace('_', '/'); return JSON.parse(window.atob(base64)); }; function getRedirectSession() { return JSON.parse(window.sessionStorage.getItem('access-redirect')); } function setRedirectSession(data) { window.sessionStorage.setItem('access-redirect', JSON.stringify(data)); } function increaseRedirectCount() { let redirectObj = getRedirectSession(); let currentTime = new Date().getTime(); if (redirectObj) { if ((currentTime - redirectObj.lastTime) >= 40000) { // 40s redirectObj.lastTime = currentTime; // reset lastTime; redirectObj.count = 1; } else { redirectObj.count++; } } else { redirectObj = { lastTime: currentTime, count: 1 }; } setRedirectSession(redirectObj); // update } function shouldRedirect() { let redirectObj = getRedirectSession(); if (redirectObj) { if ((new Date().getTime() - redirectObj.lastTime) >= 40000 || redirectObj.count < 5) { // 40s return true; } return false; } return true; } //clear browser sessionstorage / localstorage function clearBrowserStorage() { window.localStorage.removeItem('ls.isloggin'); window.localStorage.removeItem("ls.authorizationData"); window.localStorage.removeItem('ls.user-roles'); window.localStorage.removeItem('ls.last-full-url'); window.sessionStorage.removeItem('ls.last-full-url'); window.localStorage.removeItem('ls.role'); window.sessionStorage.removeItem('ls.role'); window.localStorage.removeItem('ls.database'); window.sessionStorage.removeItem('ls.database'); window.localStorage.removeItem('ls.header-menu'); window.sessionStorage.removeItem('ls.header-menu'); window.localStorage.removeItem('ls.userProfile'); window.sessionStorage.removeItem('ls.userProfile'); window.localStorage.removeItem('ls.userProfileCached'); window.sessionStorage.removeItem('ls.userProfileCached'); window.sessionStorage.removeItem('ls.session-started'); console.log('Debug access: clear application storage values.'); } //validate jwt_token var isValid = true; var token = window.localStorage.getItem('ls.authorizationData') ? JSON.parse(window.localStorage.getItem('ls.authorizationData')).token : ''; if (token) { console.log('Debug access: has token-> ', token); var jwt = parseJwt(token); var exp = parseInt(jwt.exp); var nbf = parseInt(jwt.nbf); if (!isNaN(exp) && !isNaN(nbf)) { console.log('Debug access: !isNaN exp and nbf'); var epoch = Math.floor((new Date()).getTime() / 1000); // if (!(nbf <= (epoch + 60) && exp >= (epoch - 60))) { if (!(exp >= (epoch - (60 * 5)))) { console.log('Debug access: invalid epoch'); isValid = false; } } } else { console.log('Debug access: token not exist'); isValid = false; } if (isValid) { console.log('Debug access: token is valid'); // Get last full url var url = window.localStorage.getItem('ls.last-full-url'); if (url) { url = JSON.parse(url); if (shouldRedirect()) { increaseRedirectCount(); window.location = url; } else { clearBrowserStorage(); } } else { // Redirect to content page if (shouldRedirect()) { increaseRedirectCount(); window.location = '/content'; } else { clearBrowserStorage(); } } } else { console.log('Debug access: token is not valid'); clearBrowserStorage(); }</script> <script> if (window.sessionStorage.getItem('ls.redirectUrl')){ let redirectUrl = JSON.parse(window.sessionStorage.getItem('ls.redirectUrl')); let op = getQueryParam('o',redirectUrl); if(op){ window.sessionStorage.removeItem('ls.redirectUrl'); window.location = window.location.pathname + '#/appaccess/login?o=' + op; } } </script> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css"> <link rel="stylesheet" href="build/styles/lib-access-30b4649961.css"> <!-- appAccessCss:less --> <!-- endinject --> <link rel="stylesheet" href="build/styles/app-access-f6c47df9a7.css"> <link rel="stylesheet" href="styles/brandingcss"> </head> <body class="appaccess"> <div class="hideIsInterExplorerDiv"> <div style="padding: 20px 20px 20px 20px;text-align: center; color:#8a6d3b; background-color: #fcf8e3; border-color: #faebcc #faebcc #faebcc #faebcc; margin-top:5%;"> Internet Explorer is not a supported browser. We recommend using Chrome or Safari. </div> </div> <div class="row"> <error-handler></error-handler> </div> <toaster-container toaster-options="{'position-class': 'toast-top-center', 'close-button':true}"></toaster-container> <!-- uiView: --> <div class="vbox text-center" ui-view></div> <script src="build/js/lib-access-65f5cb0839.js"></script> <script src="build/js/app-access-e720514dd0.js"></script> </body> </html>