UNPKG

@backstage-community/plugin-rbac-backend

Version:
53 lines (49 loc) 1.69 kB
'use strict'; var casbin = require('casbin'); class LowercaseFileAdapter extends casbin.FileAdapter { constructor(filePath, logger) { super(filePath); this.logger = logger; } async loadPolicy(model) { if (!this.filePath) { return; } await this.loadLowercasePolicyFile(model, casbin.Helper.loadPolicyLine); } transformLineToLowercaseGroupsUsers(line) { if (line.trim().startsWith("g")) { const policyArray = line.split(","); if (policyArray.length >= 1 && policyArray[0].trim().startsWith("g")) { policyArray[1] = policyArray[1].toLocaleLowerCase("en-US"); } return policyArray.join(","); } return line; } async loadLowercasePolicyFile(model, handler) { const bodyBuf = await (this.fs ? this.fs : casbin.mustGetDefaultFileSystem()).readFileSync(this.filePath); const lines = bodyBuf.toString().split("\n"); lines.forEach((line, index) => { const trimmed = line.replace(/\r$/, "").trim(); if (!trimmed || trimmed.startsWith("#")) { return; } const lineNumber = index + 1; try { const lowercasedLine = this.transformLineToLowercaseGroupsUsers(trimmed); handler(lowercasedLine, model); } catch (error) { const message = error instanceof Error ? error.message : String(error); this.logger?.debug( `Skipping invalid policy line ${lineNumber} in ${this.filePath} while loading Casbin model: ${message}; line=${trimmed.slice( 0, 120 )}` ); } }); } } exports.LowercaseFileAdapter = LowercaseFileAdapter; //# sourceMappingURL=lowercase-file-adapter.cjs.js.map