GSI - Employe Self Service Mobile
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

80 lines
2.4 KiB

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.clearCredentials = exports.getCredentialPathAsync = void 0;
const fs = require("fs");
const path = require("path");
const api_1 = require("./api");
const logger_1 = require("./logger");
async function getCredentialPathAsync(account) {
const filePath = credFilePath(account.user);
if (!filePath) {
logger_1.logger.debug("defaultcredentials: could not create path to default credentials file.");
return undefined;
}
const cred = getCredential(account.tokens);
if (!cred) {
logger_1.logger.debug("defaultcredentials: no credential available.");
return undefined;
}
logger_1.logger.debug(`defaultcredentials: writing to file ${filePath}`);
return new Promise((res, rej) => {
fs.writeFile(filePath, JSON.stringify(cred, undefined, 2), "utf8", (err) => {
if (err) {
rej(err);
}
else {
res(filePath);
}
});
});
}
exports.getCredentialPathAsync = getCredentialPathAsync;
function clearCredentials(account) {
const filePath = credFilePath(account.user);
if (!filePath) {
return;
}
if (!fs.existsSync(filePath)) {
return;
}
fs.unlinkSync(filePath);
}
exports.clearCredentials = clearCredentials;
function getCredential(tokens) {
if (tokens.refresh_token) {
return {
client_id: api_1.clientId,
client_secret: api_1.clientSecret,
refresh_token: tokens.refresh_token,
type: "authorized_user",
};
}
}
function credFilePath(user) {
let configDir = undefined;
if (process.platform.startsWith("win")) {
configDir = process.env["APPDATA"];
}
else {
const home = process.env["HOME"];
if (home) {
configDir = path.join(home, ".config");
}
}
if (!configDir) {
return undefined;
}
if (!fs.existsSync(configDir)) {
fs.mkdirSync(configDir);
}
const fbtConfigDir = path.join(configDir, "firebase");
if (!fs.existsSync(fbtConfigDir)) {
fs.mkdirSync(fbtConfigDir);
}
return path.join(fbtConfigDir, `${userEmailSlug(user)}_application_default_credentials.json`);
}
function userEmailSlug(user) {
const email = user.email || "unknown_user";
const slug = email.replace("@", "_").replace(".", "_");
return slug;
}