Files
dashcaddy/dashcaddy-api/routes/credentials.js
Krystie 51d6c37e4a refactor(routes): Phase 3.6-10 - standardize 5 utility routes
- credentials.js (2 deps: credentialManager, asyncHandler)
- backups.js (2 deps: backupManager, asyncHandler)
- license.js (2 deps: licenseManager, asyncHandler)
- errorlogs.js (3 deps: ERROR_LOG_FILE, auditLogger, asyncHandler)
- themes.js (0 deps! Standalone route)

Total: 9 routes refactored so far
2026-03-28 19:32:01 -07:00

32 lines
1.2 KiB
JavaScript

const express = require('express');
const { success, error: errorResponse } = require('../response-helpers');
/**
* Credentials routes factory
* @param {Object} deps - Explicit dependencies
* @param {Object} deps.credentialManager - Credential storage manager
* @param {Function} deps.asyncHandler - Async route handler wrapper
* @returns {express.Router}
*/
module.exports = function({ credentialManager, asyncHandler }) {
const router = express.Router();
// List all stored credentials (keys only, no values)
router.get('/credentials/list', asyncHandler(async (req, res) => {
const keys = await credentialManager.list();
success(res, { credentials: keys, count: keys.length });
}, 'credentials-list'));
// Rotate encryption key — re-encrypts all stored credentials
router.post('/credentials/rotate-key', asyncHandler(async (req, res) => {
const rotateSuccess = await credentialManager.rotateEncryptionKey();
if (rotateSuccess) {
success(res, { message: 'Encryption key rotated, all credentials re-encrypted' });
} else {
errorResponse(res, 'Key rotation failed', 500);
}
}, 'credentials-rotate'));
return router;
};