finnow/finnow-api/bruno-api/Finnow/collection.bru

60 lines
1.4 KiB
Plaintext
Raw Permalink Normal View History

auth {
mode: bearer
}
auth:bearer {
token: {{access_token}}
}
script:pre-request {
const axios = require("axios");
const baseUrl = bru.getEnvVar("base_url");
// Before each request, check and refresh access_token if needed.
if (req.getAuthMode() === "bearer") {
await checkAuth();
}
async function checkAuth() {
const access_token = bru.getEnvVar("access_token");
if (!access_token || access_token === "null") {
console.info("No access token is present, refreshing...");
await refreshAuth();
return;
}
// Access token exists, check that it's still valid.
try {
const resp = await axios.get(baseUrl + "/me", {
headers: {"Authorization": "Bearer " + access_token}
});
if (resp.status === 200) {
return;
} else if (resp.status === 401) {
await refreshAuth();
} else {
throw resp;
}
} catch (error) {
console.error(error);
}
}
async function refreshAuth() {
const payload = {
username: bru.getEnvVar("username"),
password: bru.getEnvVar("password")
};
const resp = await axios.post(baseUrl + "/login", payload, {
headers: {"Content-Type": "application/json"}
});
if (resp.status === 200) {
bru.setEnvVar("access_token", resp.data.token);
console.info("Refreshed access token.");
} else {
throw resp;
}
}
}