Files
opportunities-extension/src/services/spa/current-user.js

28 lines
1.3 KiB
JavaScript

function createSpaCurrentUser({ fetchJson }) {
async function requestCurrentUser() {
const debugRequests = [];
let user = null;
try {
const result = await fetchJson("https://spa.oracle.com/oalcrm/web/api/identity-management/users/current", {
method: "GET", credentials: "include", cache: "no-store", headers: { Accept: "application/json" }
}, "requestCurrentUser", debugRequests);
if (!result?.user || !Array.isArray(result.user.roles) || result.user.roles.some(role => typeof role !== "string")) {
throw new Error("requestCurrentUser returned invalid user roles.");
}
user = { id: result.user.id, name: result.user.name, roles: result.user.roles };
return { ok: true, user, debugRequests };
} catch (error) {
for (const entry of debugRequests) { entry.status = "failed"; entry.error = error.message; }
error.debugRequests = debugRequests;
throw error;
} finally {
// The identity token is not needed by content scripts or debug, including on failures.
for (const entry of debugRequests) {
entry.responseBody = JSON.stringify(user ? { user, token: "(redacted)" } : { error: "Identity response omitted." }, null, 2);
entry.responseBodyTruncated = false;
}
}
}
return { requestCurrentUser };
}