@buildappolis/env-manager
Version:
Enterprise-grade environment variable management system with encryption, snapshots, and validation
49 lines (45 loc) • 1.51 kB
text/typescript
import type { APIRoute } from 'astro';
import { getDatabase } from '../../../lib/session.js';
import path from 'path';
import fs from 'fs';
import os from 'os';
export const GET: APIRoute = async () => {
try {
const database = getDatabase();
const isAuthenticated = database.isAuthenticated();
// Check for secure credentials
const credPath = path.join(os.homedir(), '.env-manager', 'credentials.json');
const hasSecureCredentials = fs.existsSync(credPath);
let credentialsInfo = null;
if (hasSecureCredentials) {
try {
const credentials = JSON.parse(fs.readFileSync(credPath, 'utf-8'));
credentialsInfo = {
exists: true,
createdAt: credentials.createdAt,
lastModified: credentials.lastModified,
hasRecovery: !!credentials.recoveryHash
};
} catch (error) {
console.error('Failed to read credentials info:', error);
}
}
return new Response(JSON.stringify({
authenticated: isAuthenticated,
secureCredentials: hasSecureCredentials,
credentialsInfo,
authMethod: hasSecureCredentials ? 'secure' : 'legacy'
}), {
status: 200,
headers: { 'Content-Type': 'application/json' }
});
} catch (error) {
console.error('Auth status error:', error);
return new Response(JSON.stringify({
error: 'Failed to get auth status'
}), {
status: 500,
headers: { 'Content-Type': 'application/json' }
});
}
};