diff --git a/static/js/admin.js b/static/js/admin.js
index 4eda105..ee2ca88 100644
--- a/static/js/admin.js
+++ b/static/js/admin.js
@@ -185,12 +185,13 @@ function becomeButton (user) {
function () {
SnapCloud.login(
user.username,
- 0, // password is irrelevant
+ '', // password is irrelevant, but can't be null
false, // persist
- function (username, role, response) {
+ function (username, role, previous_username_admin, response) {
alert(
response.message,
function () {
+ sessionStorage.previous_username_admin = previous_username_admin;
sessionStorage.username = username;
sessionStorage.role = role;
location.href = 'profile';
diff --git a/static/js/base.js b/static/js/base.js
index ce86c33..299d638 100644
--- a/static/js/base.js
+++ b/static/js/base.js
@@ -39,6 +39,16 @@ function fillVisitorFields () {
}
};
+function fillAliasAlert () {
+ if (sessionStorage.username && sessionStorage.previous_username_admin) {
+ document.querySelectorAll('.aliasAlert.warning.message').forEach(function (each) {
+ each.innerHTML = escapeHtml(
+ 'Admin account ' + sessionStorage.previous_username_admin + ' is logged in as ' + sessionStorage.username
+ );
+ });
+ }
+};
+
function fillUsernameFields () {
var username = pageUser();
if (username) {
diff --git a/templates/alias_alert_banner.tmp b/templates/alias_alert_banner.tmp
new file mode 100644
index 0000000..2272310
--- /dev/null
+++ b/templates/alias_alert_banner.tmp
@@ -0,0 +1,42 @@
+
+
+
+
+ Log Out of Alias
+
+ Logged in as Alias
+
+
+
+
diff --git a/templates/base.tmp b/templates/base.tmp
index 227a880..3c393f3 100644
--- a/templates/base.tmp
+++ b/templates/base.tmp
@@ -34,6 +34,7 @@
@include=navigation_bar
+ @include=alias_alert_banner
@content
@@ -48,16 +49,17 @@
if (!sessionStorage.username) {
SnapCloud.initSession(
function (username, role) {
+ sessionStorage.previous_username_admin = null;
sessionStorage.username = username;
sessionStorage.role = role;
- initForUsername(username);
+ initForUsername(username, sessionStorage.previous_username_admin);
}
);
} else {
- initForUsername(sessionStorage.username);
+ initForUsername(sessionStorage.username, sessionStorage.previous_username_admin);
}
- function initForUsername (username) {
+ function initForUsername (username, previous_username_admin) {
if (username) {
SnapCloud.username = username;
document.querySelector('li.join').hidden = true;
@@ -69,9 +71,12 @@
document.querySelector('.admin').hidden = false;
}
fillVisitorFields();
- if (typeof Sentry !== 'undefined') {
- Sentry.setUser({ username: sessionStorage.username });
+
+ if (previous_username_admin) {
+ document.querySelector('div.aliasAlert.warning').hidden = false;
+ fillAliasAlert();
}
+
} else {
document.querySelector('li.join').hidden = false;
document.querySelector('li.sign-in').hidden = false;
diff --git a/templates/login.tmp b/templates/login.tmp
index b891009..93066bc 100644
--- a/templates/login.tmp
+++ b/templates/login.tmp
@@ -53,8 +53,9 @@
username,
password,
persist,
- function (username, role) {
+ function (username, role, previous_username_admin, response) {
// TODO: this should handle verification.
+ sessionStorage.previous_username_admin = previous_username_admin;
sessionStorage.username = username;
sessionStorage.role = role;
window.location.href = redirectPath();