1 var REST = library.REST.REST(); 2 var kValidUrls = [ 3 "http://mediabeacon.angular.prod.s3-website.us-east-2.amazonaws.com/index.html", 4 "https://s3.us-east-2.amazonaws.com/mediabeacon.angular.prod/index.html", 5 "http://mediabeacon.angular.dev.s3-website.us-east-2.amazonaws.com/index.html", 6 "https://s3.us-east-2.amazonaws.com/mediabeacon.angular.dev/index.html", 7 "http://localhost:4200/", 8 "https://localhost:4200/", 9 ]; 10 11 var kDestRegex = /invalidateSession\?dest=(.*)$/gm; 12 (function main(theRedirectUrl, theMbUrl, theKeyName) { 13 var aPostInvalidateSessionRedirect = kDestRegex.exec(theRedirectUrl); 14 if ( 15 !aPostInvalidateSessionRedirect || 16 kValidUrls.indexOf(aPostInvalidateSessionRedirect[1]) < 0 17 ) { 18 REST.pushError( 19 REST.errors.e400, 20 "Invalid 'dest' parameter: " + theRedirectUrl 21 ); 22 return REST.execute(); 23 } 24 if (!theRedirectUrl) { 25 REST.pushError( 26 REST.errors.e400, 27 "Include the 'dest' parameter to redirect to" 28 ); 29 return REST.execute(); 30 } 31 theRedirectUrl = decodeURI(theRedirectUrl); 32 var aKey = REST.callRESTWorkflow("getApiKey", { 33 name: theKeyName, 34 }); 35 36 var aRedirect = encodeURI( 37 theRedirectUrl + 38 "?credentials=" + 39 JSON.stringify({ 40 apiKey: aKey, 41 url: theMbUrl, 42 }) 43 ); 44 45 //This doesn't work on 2018.1 :( 46 //context.setResponseHeader("Status", "302"); 47 //context.setResponseHeader("Location", aRedirect); 48 49 // Fallback to old way of setting response headers 50 return "<header>Status:302\nLocation:" + aRedirect + "\n</header>\n"; 51 })( 52 context.getParameter("dest"), 53 context.getParameter("mb_url"), 54 context.getParameter("key_name") 55 ); 56