This commit is contained in:
2026-07-10 20:17:43 +03:00
parent 2f0bfba1cf
commit 07db914ca0
15 changed files with 382 additions and 315 deletions
+59
View File
@@ -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();
}