Files
poshmanager/server/controllers/packagingController.js
2026-08-09 17:33:11 -05:00

52 lines
1.9 KiB
JavaScript

import { analyzeInstaller, listInstallerTechnologies } from '../services/installerIntelService.js';
import { buildDetectionRule } from '../services/detectionRuleService.js';
import { buildRecipeArtifacts, getRecipe, searchRecipes } from '../services/recipeService.js';
import { createPsadtProfile, createIntuneDeployment } from '../models/psadtModel.js';
import { createApplication } from '../models/applicationModel.js';
export function installerTypes(req, res) {
res.json(listInstallerTechnologies());
}
export function analyze(req, res) {
const fileName = String(req.body?.fileName || '').trim();
if (!fileName) return res.status(400).json({ error: 'fileName is required' });
res.json(analyzeInstaller({ fileName, productCode: req.body?.productCode || '' }));
}
export function detection(req, res) {
try {
res.json(buildDetectionRule(req.body || {}));
} catch (error) {
res.status(400).json({ error: error.message });
}
}
export function recipes(req, res) {
res.json(searchRecipes(req.query?.q || ''));
}
export function applyRecipe(req, res) {
const recipe = getRecipe(req.params.id);
if (!recipe) return res.status(404).json({ error: 'Recipe not found' });
try {
const artifacts = buildRecipeArtifacts(recipe, {
visibility: req.body?.visibility || 'personal',
groupId: req.body?.groupId || null
});
const userId = req.user.id;
const profile = createPsadtProfile(artifacts.profile, userId);
const application = artifacts.application ? createApplication(artifacts.application, userId) : null;
const deployment = createIntuneDeployment({
...artifacts.deployment,
profileId: profile.id,
applicationId: application?.id || null
}, userId);
res.status(201).json({ recipeId: recipe.id, profile, deployment, application });
} catch (error) {
res.status(400).json({ error: error.message });
}
}