clns-acuity-va-security/security/chrome-extension/popup.js (86 lines of code) (raw):
/*
* Copyright 2021 The University of Manchester
*
* 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
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
'use strict';
var domain = "";
function refresh() {
removeCookies();
changeTabLocation("");
}
function developerUser() {
var developer = document.getElementById('developerUser').value;
if (developer === "") {
developer = "developer";
localStorage["savedDev"] = "";
} else {
localStorage["savedDev"] = developer;
}
removeCookies();
changeTabLocation("?swappedUser=" + developer + "&swappedRoles=TRAINED_USER,ACL_ADMINISTRATOR,DEVELOPMENT_TEAM");
}
function trainedUser() {
var trainedUser = document.getElementById('trainedUser').value;
if (trainedUser === "") {
trainedUser = "trainedUser";
localStorage["savedTrained"] = "";
} else {
localStorage["savedTrained"] = trainedUser;
}
removeCookies();
changeTabLocation("?swappedUser=" + trainedUser + "&swappedRoles=TRAINED_USER,ACL_ADMINISTRATOR");
}
function unknownUser() {
var unknownUser = document.getElementById('unknownUser').value;
if (unknownUser === "") {
unknownUser = "unknownUser";
}
removeCookies();
changeTabLocation("?swappedUser=" + unknownUser + "&swappedRoles=DEFAULT_ROLE");
}
function changeTabLocation(swappedInformation) {
chrome.tabs.getSelected(null, function(tab) {
var url = getLocation(tab.url);
var port = "";
var http_protocol = "https";
// if not port 80 then its local, normally 9090
// so local its http://localhost:8080
if (url.port !== 80) {
port = ":" + url.port;
http_protocol = "http";
}
var newLocation = http_protocol + "://" + url.hostname + port + "/" + swappedInformation;
console.log(newLocation);
chrome.tabs.update(tab.id, {url: newLocation});
});
}
function getLocation(location) {
var l = document.createElement("a");
l.href = location;
return l;
}
function removeCookies() {
if (chrome.cookies !== undefined) {
chrome.cookies.getAll({
'domain': domain
}, function(cookies) {
console.log('Number of cookies at ' + domain + ': ' + cookies.length);
for (var i = 0; i < cookies.length; i++) {
console.log(cookies[i]);
chrome.cookies.remove({'url': "http" + (cookies[i].secure ? "s" : "") + "://" + cookies[i].domain + cookies[i].path, 'name': cookies[i].name});
}
});
}
}
document.addEventListener('DOMContentLoaded', function() {
chrome.tabs.getSelected(null, function(tab) {
var url = getLocation(tab.url);
domain = url.hostname;
});
// load input values from local storage
var savedDev = localStorage["savedDev"];
var savedTrained = localStorage["savedTrained"];
if (savedDev) {
document.getElementById('developerUser').value = savedDev;
}
if (savedTrained) {
document.getElementById('trainedUser').value = savedTrained;
}
document.getElementById('normally').addEventListener('click', refresh);
document.getElementById('developer').addEventListener('click', developerUser);
document.getElementById('trained').addEventListener('click', trainedUser);
document.getElementById('unknown').addEventListener('click', unknownUser);
});