Advertisement
Guest User

Untitled

a guest
Sep 18th, 2019
585
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. Vue.use(VueMaterial);
  2. Vue.material.registerPalette( 'my-palette', {
  3.     50: '#fae4e7',
  4.     100: '#f3bcc2',
  5.     200: '#ec909a',
  6.     300: '#e46371',
  7.     400: '#de4152',
  8.     500: '#d82034',
  9.     600: '#d41c2f',
  10.     700: '#ce1827',
  11.     800: '#c81321',
  12.     900: '#bf0b15',
  13.     A100: '#ffebeb',
  14.     A200: '#ffb8ba',
  15.     A400: '#ff8589',
  16.     A700: '#ff6b70',
  17.     darkText: [50,100,200,300,"A100","A200","A400","A700"]
  18. });
  19.  
  20.  
  21. Vue.material.registerTheme( 'slpp', { primary: 'my-palette',accent: 'my-palette',
  22. warn: 'my-palette'} );
  23. Vue.material.setCurrentTheme('slpp')
  24. var tokenBaseUrl = "http://identity.swisslifecorporateclients.com/identity/token";
  25. var version = Math.floor(Date.now() / 1000);
  26. var supportedLanguages = [
  27.     {
  28.         "name": "English",
  29.         "key": "en-US"
  30.     },
  31.     {
  32.         "name": "German",
  33.         "key": "de-DE"
  34.     },
  35.     {
  36.         "name": "French",
  37.         "key": "fr-FR"
  38.     }
  39. ];
  40. var localizationJson = {
  41.     en:{
  42.         login:"Login"
  43.     },
  44.     fr:{
  45.         login:"Login FR"
  46.     },
  47.     de:{
  48.         login:"Login DE"
  49.     }
  50. }
  51.  
  52. var isDevelopment = window.location.host.indexOf(":") !== -1;
  53.  
  54. var siteUrl = location.protocol + '//' + location.hostname + (location.port ? ':' + location.port :'');
  55. var data = {
  56.     loaded: false,
  57.     userName:'',
  58.     password:'',
  59.     rememberMe:false,
  60.     language:'en-US',
  61.     isProductionBuild:true,
  62.     isEmailEmpty:false,
  63.     isPasswordEmpty:false,
  64.     localizationData:localizationJson.en,
  65.     supportedLanguages:supportedLanguages,
  66.     isProcessingLogin:false,
  67.     saaSiteUrl: isDevelopment? location.protocol + '//' + window.location.hostname + ':8080/src/index.html#/login/forgot-password': location.protocol + '//' + window.location.hostname+'/index.html#/login/forgot-password'
  68. };
  69. var notifySessionStorageUpdate = '__session_storage_notification?';
  70.  
  71. new Vue({
  72.     el: '#login',
  73.     data: data,
  74.     methods: {
  75.         login: function () {
  76.             data.isProcessingLogin = true;
  77.             var tokenStorage = this.tokenStorage();
  78.             var xmlhttp = new XMLHttpRequest();
  79.             xmlhttp.onreadystatechange = function() {
  80.                 data.isProcessingLogin = false;
  81.                 if (xmlhttp.status == 400) {
  82.                     var responseData = JSON.parse(xmlhttp.responseText);
  83.                     switch (responseData && responseData.error) {
  84.  
  85.                         case "term_and_condition_acceptance_require":
  86.                             sessionStorage.removeItem('personaConfig');
  87.                             var contextId = JSON.parse(responseData.error_description)["ContextId"];
  88.                             var requiredTermsAndConditions = JSON.parse(responseData.error_description)["RequiredTermsAndConditions"];
  89.                             location.replace(siteUrl + "/index.html#/gdpr?terms=" + requiredTermsAndConditions + "&contextId=" + contextId + "&userName=" + data.userName + "&redirectUrl=");
  90.                             break;
  91.  
  92.                         case "two_factor_code_require":
  93.                             sessionStorage.removeItem('personaConfig');
  94.                             var errorDiscription = JSON.parse(responseData.error_description);
  95.                             location.replace(siteUrl + "/index.html#/login?twofactorRequired=true&psudoNumber=" + errorDiscription.PsudoNumber + "&twoFactorToken=" + errorDiscription.TwoFactorToken);
  96.                             break;
  97.                         case "persona_require":
  98.                             var config = {
  99.                                 personaInfo: JSON.parse(responseData.error_description),
  100.                                 rememberMe: data.rememberMe
  101.                             }
  102.                             sessionStorage.setItem('personaConfig', JSON.stringify(config));
  103.                             location.replace(siteUrl + "/index.html#/login");
  104.                             break;
  105.                         default:
  106.                             location.replace(siteUrl + "/index.html#/login");
  107.                             break;
  108.                     }
  109.                 }
  110.                 if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
  111.                     try {
  112.                         var response = JSON.parse(xmlhttp.responseText);
  113.                     } catch(err) {
  114.                         return;
  115.                     }
  116.                     //callback(data);
  117.                     if(!data.rememberMe){
  118.                         tokenStorage.setSessionStorage(response);
  119.                     }
  120.                     else {
  121.                         tokenStorage.setLocalStorage(response);
  122.                     }
  123.                     localStorage.setItem(notifySessionStorageUpdate, JSON.stringify(localStorage));
  124.                     localStorage.removeItem(notifySessionStorageUpdate);
  125.                     location.replace(siteUrl+"/index.html");
  126.  
  127.                 }
  128.             };
  129.  
  130.             xmlhttp.open("POST", tokenBaseUrl, true);
  131.             xmlhttp.setRequestHeader( 'Access-Control-Allow-Origin', '*');
  132.             xmlhttp.setRequestHeader("Accept","application/json, text/plain, */*");
  133.             xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
  134.             var tokenPayloaObj = "grant_type=password&next_url=''&password="+data.password+"&remember_me="+data.rememberMe+"&username="+data.userName+"";
  135.             xmlhttp.send(tokenPayloaObj);
  136.         },
  137.         requestAnonymousToken:function (callback) {
  138.             var token_credentials = "grant_type=authenticate_site";
  139.             var xmlhttp = new XMLHttpRequest();
  140.             xmlhttp.onreadystatechange = function() {
  141.                 if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
  142.                     try {
  143.                         var data = JSON.parse(xmlhttp.responseText);
  144.                     } catch(err) {
  145.                         return;
  146.                     }
  147.                     callback(data);
  148.                 }
  149.             };
  150.  
  151.             xmlhttp.open("POST", tokenBaseUrl, true);
  152.             xmlhttp.setRequestHeader( 'Access-Control-Allow-Origin', '*');
  153.             xmlhttp.setRequestHeader("Accept","application/json, text/plain, */*");
  154.             xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
  155.             xmlhttp.send(token_credentials);
  156.         },
  157.         tokenStorage:function(){
  158.             const access_token = "access_token";
  159.             const client_id = "client_id";
  160.             const refresh_token = "refresh_token";
  161.             return{
  162.                 setSessionStorage: function (response){
  163.                     sessionStorage.setItem(access_token, response.access_token);
  164.                     sessionStorage.setItem(client_id, response.client_id);
  165.                     sessionStorage.setItem(refresh_token, response.refresh_token);
  166.                 },
  167.                 setLocalStorage:function (response){
  168.                     localStorage.setItem(access_token, response.access_token);
  169.                     localStorage.setItem(client_id, response.client_id);
  170.                     localStorage.setItem(refresh_token, response.refresh_token);
  171.                 },
  172.                 getToken:function(){
  173.                     var token;
  174.                     if(!localStorage.getItem('access_token')){
  175.                         token = sessionStorage.getItem('access_token');
  176.                     }
  177.                     else{
  178.                         token = localStorage.getItem('access_token');
  179.                     }
  180.                     return token;
  181.                 }
  182.             }
  183.         },
  184.         GetLoggedInUser:function(callback){
  185.             var baseUrl = "http://identity.swisslifecorporateclients.com/identity/Authentication/GetLoggedInUser?cacheBuster=" + new Date().getTime()+"";
  186.             var token = this.tokenStorage().getToken();
  187.             var xmlhttp = new XMLHttpRequest();
  188.             xmlhttp.onreadystatechange = function() {
  189.                 if (xmlhttp.readyState == 4 && (xmlhttp.status == 200 || xmlhttp.status == 401)) {
  190.                     try {
  191.                         var data = JSON.parse(xmlhttp.responseText);
  192.                     } catch(err) {
  193.                         return;
  194.                     }
  195.                     callback(data);
  196.                 }
  197.             };
  198.  
  199.             xmlhttp.open("GET", baseUrl, true);
  200.             xmlhttp.setRequestHeader( 'Access-Control-Allow-Origin', '*');
  201.             xmlhttp.setRequestHeader("Accept","application/json, text/plain, */*");
  202.             xmlhttp.setRequestHeader("Authorization","bearer " + token);
  203.             xmlhttp.send();
  204.         },
  205.         validateRequired:function(type){
  206.             if(type==='email' && data.userName===''){
  207.                 data.isEmailEmpty = true;
  208.             }
  209.             else{
  210.                 data.isEmailEmpty = false;
  211.             }
  212.             if(type==='password' && data.password===''){
  213.                 data.isPasswordEmpty = true;
  214.             }
  215.             else{
  216.                 data.isPasswordEmpty = false;
  217.             }
  218.  
  219.         },
  220.         changeLanguage:function(){
  221.             if(data.language==='fr-FR'){
  222.                 data.localizationData = localizationJson.fr;
  223.             }
  224.             else if(data.language==='de-DE'){
  225.                 data.localizationData = localizationJson.de;
  226.             }
  227.             else{
  228.                 data.localizationData = localizationJson.en;
  229.             }
  230.         },
  231.         addUrlParam:function(){
  232.             if (history.pushState) {
  233.                 //var newurl = window.location.protocol + "//" + window.location.host + window.location.pathname + '?v='+new Date().getTime()+'';
  234.                 var newurl = siteUrl + '/?v='+version+'';
  235.                 window.history.pushState({path:newurl},'',newurl);
  236.             }
  237.         },
  238.         downloadTermsService:function () {
  239.             var link = document.createElement("a");
  240.             document.body.appendChild(link);
  241.             link.setAttribute("type", "hidden");
  242.             link.setAttribute("target", "_blank");
  243.             link.setAttribute("download", "");
  244.             if (isDevelopment) {
  245.                 link.href = window.location.protocol + "//" + window.location.host + '/src/tenant/slpp/app/business/side-navigation/assets/TermsofService_SLPP_v01.pdf';                
  246.             } else {
  247.                 link.href = window.location.protocol + "//" + window.location.host + '/tenant/slpp/app/business/side-navigation/assets/TermsofService_SLPP_v01.pdf';                
  248.             }
  249.             link.click();
  250.             link.parentElement.removeChild(link);
  251.         },
  252.         downloadPrivacyPolicy:function () {
  253.             var link = document.createElement("a");
  254.             document.body.appendChild(link);
  255.             link.setAttribute("type", "hidden");
  256.             link.setAttribute("target", "_blank");
  257.             link.setAttribute("download", "");
  258.             if (isDevelopment) {
  259.                 link.href = window.location.protocol + "//" + window.location.host + '/src/tenant/slpp/app/business/side-navigation/assets/PrivacyPolicy_SLPP_v01.pdf';                
  260.             } else {
  261.                 link.href = window.location.protocol + "//" + window.location.host + '/tenant/slpp/app/business/side-navigation/assets/PrivacyPolicy_SLPP_v01.pdf';                
  262.                 //link.href = 'https://swisslife-saa.staging.biz/tenant/slpp/app/business/side-navigation/assets/PrivacyPolicy_SLPP_v01.pdf';
  263.             }
  264.             link.click();
  265.             link.parentElement.removeChild(link);
  266.         }
  267.     },
  268.     mounted: function () {
  269.         var self = this;
  270.         var token = self.tokenStorage().getToken();
  271.         if(token){
  272.             self.GetLoggedInUser(function(response){
  273.                 if(response && response.IsSuccess){
  274.                     location.replace(siteUrl+"/index.html");
  275.                 }
  276.                 else{
  277.                     data.loaded = true;
  278.                     self.requestAnonymousToken(function(response){
  279.                         var tokenStorage = self.tokenStorage();
  280.                         tokenStorage.setSessionStorage(response);
  281.                     });
  282.                 }
  283.             });
  284.         }
  285.         else{
  286.             data.loaded = true;
  287.             self.requestAnonymousToken(function(response){
  288.                 var tokenStorage = self.tokenStorage();
  289.                 tokenStorage.setSessionStorage(response);
  290.             });
  291.         }
  292.     },
  293.     beforeCreate: function() {
  294.         data.loaded = false;
  295.     },
  296.     beforeCreate: function() {
  297.         data.loaded = false;
  298.     },
  299.     created:function(){
  300.         var self = this;
  301.         self.addUrlParam();
  302.     }
  303. });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement