Skip to content

Commit

Permalink
Log using JWT tokens
Browse files Browse the repository at this point in the history
  • Loading branch information
fmartingr committed Jul 20, 2023
1 parent 07d1c5f commit b6ee53b
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 24 deletions.
20 changes: 10 additions & 10 deletions js/background-script.js
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ async function getShioriBookmarkFolder() {
// In Firefox, its id is `unfiled_____` while in Chrome the id is `2`.
var parentId = "",
runtimeUrl = await browser.runtime.getURL("/");

if (runtimeUrl.startsWith("moz")) {
parentId = "unfiled_____";
} else if (runtimeUrl.startsWith("chrome")) {
Expand Down Expand Up @@ -117,19 +117,19 @@ async function removeLocalBookmark(url) {

async function getExtensionConfig() {
var items = await browser.storage.local.get(),
session = items.session || "",
token = items.token || "",
server = items.server || "";
if (session === "") {

if (token === "") {
throw new Error("no active session, please login first");
}

if (server === "") {
throw new Error("server url is not specified");
}

return {
session: session,
token: token,
server: server
};
}
Expand Down Expand Up @@ -166,7 +166,7 @@ async function removeBookmark() {
body: JSON.stringify({url: tab.url}),
headers: {
"Content-Type": "application/json",
"X-Session-Id": config.session,
"Authorization": `Bearer ${config.token}`,
}
});

Expand Down Expand Up @@ -213,7 +213,7 @@ async function saveBookmark(tags) {
body: JSON.stringify(data),
headers: {
"Content-Type": "application/json",
"X-Session-Id": config.session,
"Authorization": `Bearer ${config.token}`,
}
});

Expand All @@ -237,7 +237,7 @@ async function updateIcon() {
32: "icons/action-default-32.png",
64: "icons/action-default-64.png"
}};

// Firefox allows using empty object as default icon.
// This way, Firefox will use default_icon that defined in manifest.json
if (runtimeUrl.startsWith("moz")) {
Expand All @@ -248,7 +248,7 @@ async function updateIcon() {
try {
var tab = await getCurrentTab(),
local = await findLocalBookmark(tab.url);

if (local) icon.path = {
16: "icons/action-bookmarked-16.png",
32: "icons/action-bookmarked-32.png",
Expand Down
28 changes: 14 additions & 14 deletions js/options.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ async function getExtensionConfig() {

return {
server: items.server || "",
session: items.session || "",
token: items.token || "",
username: items.username || "",
password: items.password || "",
remember: items.remember || false,
Expand All @@ -15,9 +15,9 @@ async function saveExtensionConfig(cfg) {
return browser.storage.local.set(cfg);
}

async function logout(server, session) {
// Make sure session is exists
if (session === "") return Promise.resolve();
async function logout(server, token) {
// Make sure token is exists
if (token === "") return Promise.resolve();

// Validate input
if (server === "") {
Expand All @@ -41,7 +41,7 @@ async function logout(server, session) {
var response = await fetch(logoutURL, {
method: "post",
headers: {
"X-Session-Id": session,
"Authorization": `Bearer ${token}`,
}
});

Expand Down Expand Up @@ -104,9 +104,9 @@ async function login(server, username, password, remember) {
}

var jsonResp = await response.json(),
session = jsonResp.message.session;
token = jsonResp.message.token;

return session;
return token;
}

// Define function for UI handler
Expand Down Expand Up @@ -143,8 +143,8 @@ getExtensionConfig()
.then(cfg => {
config = cfg;

if (cfg.session === "") txtSession.textContent = "No active session";
else txtSession.textContent = `Active session: ${cfg.session}`;
if (cfg.token === "") txtSession.textContent = "No active session";
else txtSession.textContent = `Logged in.`;

inputServer.value = cfg.server;
inputUsername.value = cfg.username;
Expand All @@ -162,19 +162,19 @@ async function btnLoginClick() {
remember = inputRemember.checked;

// Make sure to log out first
await logout(server, config.session);
await logout(server, config.token);

// Login using input value
var newSession = await login(server, username, password, remember);
var token = await login(server, username, password, remember);

// Save input value and session to config
// Save input value and token to config
config.server = server;
config.session = newSession;
config.token = token;
config.username = username;
config.password = password;
config.remember = remember;
await saveExtensionConfig(config);
txtSession.textContent = `Active session: ${newSession}`;
txtSession.textContent = `Logged in.`;

return Promise.resolve();
}
Expand Down

0 comments on commit b6ee53b

Please sign in to comment.