d1548572d4
This change improves privacy/security by ensuring all local storage (which includes settings, etc.) is destroyed on sign out or when revoking a remote session. Because signing out is now more "risky", the button has been moved to the settings along with other existing sessions. This commit: - Removes the power/sign-out icon from the sidebar footer (gives additional room for when the admin panel gets added) - Adds a "Sign out" button next to the current session info in the settings session list - Renames "Disconnect" buttons into "Revoke" to better clarify the intent (I will admit that I borrowed the wording from Telegram) - Fixes incorrect `localStorage.remove` method - Uses Sinon.js to mock wrappers for `window.localStorage` and `window.location` (does not mock those themselves, in the "Do not mock what you do not own" fashion, mock our layer instead). I expect we will be able to test a bit more from the UI with this. A good next candidate will be the `mockLogger` things.
38 lines
804 B
JavaScript
38 lines
804 B
JavaScript
"use strict";
|
|
|
|
const $ = require("jquery");
|
|
const Auth = require("../auth");
|
|
const socket = require("../socket");
|
|
const templates = require("../../views");
|
|
|
|
socket.on("sessions:list", function(data) {
|
|
data.sort((a, b) => b.lastUse - a.lastUse);
|
|
|
|
let html = "";
|
|
data.forEach((connection) => {
|
|
if (connection.current) {
|
|
$("#session-current").html(templates.session(connection));
|
|
return;
|
|
}
|
|
|
|
html += templates.session(connection);
|
|
});
|
|
|
|
if (html.length === 0) {
|
|
html = "<p><em>You are not currently logged in to any other device.</em></p>";
|
|
}
|
|
|
|
$("#session-list").html(html);
|
|
});
|
|
|
|
$("#settings").on("click", ".remove-session", function() {
|
|
const token = $(this).data("token");
|
|
|
|
if (token) {
|
|
socket.emit("sign-out", token);
|
|
} else {
|
|
socket.emit("sign-out");
|
|
Auth.signout();
|
|
}
|
|
});
|