UNPKG

streamby-core

Version:

StreamBy middleware framework for media storage management

80 lines (79 loc) 3.97 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.credentialRouter = credentialRouter; const express_1 = require("express"); const manager_1 = require("../../models/manager"); const auth_1 = require("../../utils/auth"); const credential_1 = require("../../services/credential"); function credentialRouter(config) { const router = (0, express_1.Router)(); const Project = (0, manager_1.getModel)('projects'); // Add a new credential to a project router.post('/projects/:id/credentials', async (req, res) => { try { const auth = req.auth; if (auth.role !== 'admin' && auth.role !== 'editor') { return res.status(403).json({ message: 'Permission denied' }); } const projectId = req.params.id; const { id, key, value } = req.body; if (!key || !value) { return res.status(400).json({ message: 'Missing credential key or value' }); } const project = await Project.findOne({ _id: projectId }); if (!project || !(0, auth_1.isProjectMember)(project, auth.userId)) { return res.status(403).json({ message: 'Unauthorized project access' }); } const updatedProject = await (0, credential_1.addCredential)(config, projectId, { id, key, value }); res.status(201).json({ message: 'Credential added successfully', project: updatedProject }); } catch (err) { res.status(500).json({ message: 'Failed to add credential', details: err.message }); } }); // Update an existing credential in a project router.patch('/projects/:id/credentials/:credentialId', async (req, res) => { try { const auth = req.auth; if (auth.role !== 'admin' && auth.role !== 'editor') { return res.status(403).json({ message: 'Permission denied' }); } const projectId = req.params.id; const credentialId = req.params.credentialId; const { key, value } = req.body; if (!key && !value) { return res.status(400).json({ message: 'No update fields provided' }); } const project = await Project.findOne({ _id: projectId }); if (!project || !(0, auth_1.isProjectMember)(project, auth.userId)) { return res.status(403).json({ message: 'Unauthorized project access' }); } const updatedProject = await (0, credential_1.updateCredential)(config, projectId, credentialId, { key, value }); res.status(200).json({ message: 'Credential updated successfully', project: updatedProject }); } catch (err) { res.status(500).json({ message: 'Failed to update credential', details: err.message }); } }); // Delete a credential from a project router.delete('/projects/:id/credentials/:credentialId', async (req, res) => { try { const auth = req.auth; if (auth.role !== 'admin' && auth.role !== 'editor') { return res.status(403).json({ message: 'Permission denied' }); } const projectId = req.params.id; const credentialId = req.params.credentialId; const project = await Project.findOne({ _id: projectId }); if (!project || !(0, auth_1.isProjectMember)(project, auth.userId)) { return res.status(403).json({ message: 'Unauthorized project access' }); } const updatedProject = await (0, credential_1.deleteCredential)(config, projectId, credentialId); res.status(200).json({ message: 'Credential deleted successfully', project: updatedProject }); } catch (err) { res.status(500).json({ message: 'Failed to delete credential', details: err.message }); } }); return router; }