UNPKG

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
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}!`);