w
This commit is contained in:
@@ -0,0 +1,59 @@
|
||||
export interface LoginConfig {
|
||||
serverUrl: string;
|
||||
email: string;
|
||||
username: string;
|
||||
domain?: string;
|
||||
}
|
||||
|
||||
import fs from "node:fs";
|
||||
import path from "node:path";
|
||||
|
||||
let dataDir: string = "./data";
|
||||
|
||||
export function initDataDir(dir: string): void {
|
||||
dataDir = path.resolve(dir);
|
||||
fs.mkdirSync(dataDir, { recursive: true });
|
||||
}
|
||||
|
||||
let inMemoryPassword: string | null = null;
|
||||
|
||||
export function setPassword(password: string): void {
|
||||
inMemoryPassword = password;
|
||||
}
|
||||
|
||||
export function getPassword(): string | null {
|
||||
return inMemoryPassword;
|
||||
}
|
||||
|
||||
export function hasPassword(): boolean {
|
||||
return inMemoryPassword !== null;
|
||||
}
|
||||
|
||||
export function clearPassword(): void {
|
||||
inMemoryPassword = null;
|
||||
}
|
||||
|
||||
function configFilePath(): string {
|
||||
return path.join(dataDir, "config.json");
|
||||
}
|
||||
|
||||
export function loadConfig(): LoginConfig {
|
||||
const filePath = configFilePath();
|
||||
if (!fs.existsSync(filePath)) {
|
||||
throw new Error("Not logged in. Use the login tool first.");
|
||||
}
|
||||
return JSON.parse(fs.readFileSync(filePath, "utf-8")) as LoginConfig;
|
||||
}
|
||||
|
||||
export function saveConfig(config: LoginConfig): void {
|
||||
const filePath = configFilePath();
|
||||
fs.writeFileSync(filePath, JSON.stringify(config, null, 2), "utf-8");
|
||||
}
|
||||
|
||||
export function clearConfig(): void {
|
||||
const filePath = configFilePath();
|
||||
if (fs.existsSync(filePath)) {
|
||||
fs.unlinkSync(filePath);
|
||||
}
|
||||
clearPassword();
|
||||
}
|
||||
Reference in New Issue
Block a user