- 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
32 lines
1.2 KiB
JavaScript
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;
|
|
};
|