xs-security-generator
Version:
A package to automate generation of xsapp.json and xs-security.json for SAP BTP applications
62 lines (56 loc) • 1.84 kB
JavaScript
const fs = require('fs');
const path = require('path');
const ejs = require('ejs');
// Get xsappname from command-line argument or default
const xsappname = process.argv[2] || 'trial1.fleetmanagement';
// Define templates
const xsappTemplate = `{
"welcomeFile": "index.html",
"authenticationMethod": "route",
"routes": [
{
"source": "^/sap/opu/odata/sap/<%= xsappname %>/(.*)$",
"destination": "<%= xsappname %>-destination",
"authenticationType": "xsuaa"
},
{
"source": "^/(.*)$",
"localDir": "webapp",
"authenticationType": "xsuaa"
}
]
}`;
const xssecurityTemplate = `{
"xsappname": "<%= xsappname %>",
"tenant-mode": "dedicated",
"scopes": [
{
"name": "$XSAPPNAME.user",
"description": "User scope for <%= xsappname %> application"
},
{
"name": "$XSAPPNAME.admin",
"description": "Admin scope for <%= xsappname %> application"
}
],
"role-templates": [
{
"name": "User",
"description": "Role for standard users",
"scope-references": ["$XSAPPNAME.user"]
},
{
"name": "Admin",
"description": "Role for administrators",
"scope-references": ["$XSAPPNAME.user", "$XSAPPNAME.admin"]
}
]
}`;
// Generate files in current working directory (project root)
const outputDir = process.cwd(); // Use current working directory instead of parent
console.log(`Generating files in: ${outputDir}`);
const xsappContent = ejs.render(xsappTemplate, { xsappname });
const xssecurityContent = ejs.render(xssecurityTemplate, { xsappname });
fs.writeFileSync(path.join(outputDir, 'xsapp.json'), xsappContent);
fs.writeFileSync(path.join(outputDir, 'xs-security.json'), xssecurityContent);
console.log(`xsapp.json and xs-security.json generated successfully with xsappname: ${xsappname}!`);