2026-06-24 11:36:25 -06:00
|
|
|
// Shared BU team constants, validation, and name mapping.
|
2026-05-05 11:04:53 -06:00
|
|
|
// Used by user management routes, auth middleware, and frontend-facing endpoints.
|
|
|
|
|
|
|
|
|
|
const KNOWN_TEAMS = ['STEAM', 'ACCESS-ENG', 'ACCESS-OPS', 'INTELDEV'];
|
|
|
|
|
|
2026-06-24 11:36:25 -06:00
|
|
|
// Mapping between short team names (stored on users) and full Ivanti BU identifiers
|
|
|
|
|
// (used in ivanti_findings.bu_ownership column).
|
|
|
|
|
const TEAM_TO_IVANTI = {
|
|
|
|
|
'STEAM': 'NTS-AEO-STEAM',
|
|
|
|
|
'ACCESS-ENG': 'NTS-AEO-ACCESS-ENG',
|
|
|
|
|
'ACCESS-OPS': 'NTS-AEO-ACCESS-OPS',
|
|
|
|
|
'INTELDEV': 'NTS-AEO-INTELDEV'
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
const IVANTI_TO_TEAM = Object.fromEntries(
|
|
|
|
|
Object.entries(TEAM_TO_IVANTI).map(([k, v]) => [v, k])
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Convert a short team name to the full Ivanti BU identifier.
|
|
|
|
|
* Returns the input unchanged if no mapping exists.
|
|
|
|
|
* @param {string} shortName - e.g. 'STEAM'
|
|
|
|
|
* @returns {string} e.g. 'NTS-AEO-STEAM'
|
|
|
|
|
*/
|
|
|
|
|
function teamToIvanti(shortName) {
|
|
|
|
|
return TEAM_TO_IVANTI[shortName] || shortName;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Convert a full Ivanti BU identifier to the short team name.
|
|
|
|
|
* Returns the input unchanged if no mapping exists.
|
|
|
|
|
* @param {string} ivantiName - e.g. 'NTS-AEO-STEAM'
|
|
|
|
|
* @returns {string} e.g. 'STEAM'
|
|
|
|
|
*/
|
|
|
|
|
function ivantiToTeam(ivantiName) {
|
|
|
|
|
return IVANTI_TO_TEAM[ivantiName] || ivantiName;
|
|
|
|
|
}
|
|
|
|
|
|
2026-05-05 11:04:53 -06:00
|
|
|
/**
|
|
|
|
|
* Parse and validate a comma-separated teams string.
|
|
|
|
|
* @param {string} teamsString - Comma-separated team identifiers (e.g. 'STEAM,ACCESS-ENG')
|
|
|
|
|
* @returns {{ valid: boolean, teams: string[], invalid: string[] }}
|
|
|
|
|
*/
|
|
|
|
|
function validateTeams(teamsString) {
|
|
|
|
|
if (!teamsString || typeof teamsString !== 'string' || teamsString.trim() === '') {
|
|
|
|
|
return { valid: true, teams: [], invalid: [] };
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const teams = teamsString.split(',').map(t => t.trim()).filter(Boolean);
|
|
|
|
|
const invalid = teams.filter(t => !KNOWN_TEAMS.includes(t));
|
|
|
|
|
|
|
|
|
|
return {
|
|
|
|
|
valid: invalid.length === 0,
|
|
|
|
|
teams,
|
|
|
|
|
invalid
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
|
2026-06-24 11:36:25 -06:00
|
|
|
module.exports = { KNOWN_TEAMS, TEAM_TO_IVANTI, IVANTI_TO_TEAM, teamToIvanti, ivantiToTeam, validateTeams };
|