{"version":3,"file":"validate-permissions.mjs","names":[],"sources":["../../../src/services/roles/validate-permissions.ts"],"sourcesContent":["import { copy } from \"../../libs/i18n/index.js\";\nimport { getValidPermissions } from \"../../libs/permission/registry.js\";\nimport type { ErrorResult } from \"../../types/errors.js\";\nimport type { Permission } from \"../../types.js\";\nimport type { ServiceFn } from \"../../utils/services/types.js\";\n\nconst validatePermissions: ServiceFn<\n\t[\n\t\t{\n\t\t\tpermissions: string[];\n\t\t},\n\t],\n\t{\n\t\tpermission: Permission;\n\t}[]\n> = async (context, data) => {\n\tif (data.permissions.length === 0) {\n\t\treturn {\n\t\t\terror: undefined,\n\t\t\tdata: [],\n\t\t};\n\t}\n\n\tconst validPermissions = getValidPermissions(context.config);\n\n\tconst permErrors: Array<{\n\t\tkey: string;\n\t\terror: ErrorResult;\n\t}> = [];\n\tconst validPerms: Array<{\n\t\tpermission: Permission;\n\t}> = [];\n\n\tfor (let i = 0; i < data.permissions.length; i++) {\n\t\tconst permission = data.permissions[i] as Permission;\n\n\t\tif (!validPermissions.includes(permission)) {\n\t\t\tconst findError = permErrors.find((e) => e.key === permission);\n\t\t\tif (!findError) {\n\t\t\t\tpermErrors.push({\n\t\t\t\t\tkey: permission,\n\t\t\t\t\terror: {\n\t\t\t\t\t\tkey: permission,\n\t\t\t\t\t\tcode: \"invalid\",\n\t\t\t\t\t\tmessage: copy(\"server:core.permissions.invalid\", {\n\t\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\t\tpermission: permission,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t}),\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\n\t\tvalidPerms.push({\n\t\t\tpermission,\n\t\t});\n\t}\n\n\tif (permErrors.length > 0) {\n\t\treturn {\n\t\t\terror: {\n\t\t\t\ttype: \"basic\",\n\t\t\t\tstatus: 500,\n\t\t\t\terrors: {\n\t\t\t\t\tpermissions: permErrors.reduce<ErrorResult>((acc, e) => {\n\t\t\t\t\t\tacc[e.key] = e.error;\n\t\t\t\t\t\treturn acc;\n\t\t\t\t\t}, {}),\n\t\t\t\t},\n\t\t\t},\n\t\t\tdata: undefined,\n\t\t};\n\t}\n\n\treturn {\n\t\terror: undefined,\n\t\tdata: validPerms,\n\t};\n};\n\nexport default validatePermissions;\n"],"mappings":"yHAMA,MAAM,EASF,MAAO,EAAS,IAAS,CAC5B,GAAI,EAAK,YAAY,SAAW,EAC/B,MAAO,CACN,MAAO,IAAA,GACP,KAAM,CAAC,CACR,EAGD,IAAM,EAAmB,EAAoB,EAAQ,MAAM,EAErD,EAGD,CAAC,EACA,EAED,CAAC,EAEN,IAAK,IAAI,EAAI,EAAG,EAAI,EAAK,YAAY,OAAQ,IAAK,CACjD,IAAM,EAAa,EAAK,YAAY,GAEpC,GAAI,CAAC,EAAiB,SAAS,CAAU,EAAG,CACzB,EAAW,KAAM,GAAM,EAAE,MAAQ,CACtC,GACZ,EAAW,KAAK,CACf,IAAK,EACL,MAAO,CACN,IAAK,EACL,KAAM,UACN,QAAS,EAAK,kCAAmC,CAChD,KAAM,CACO,YACb,CACD,CAAC,CACF,CACD,CAAC,EAEF,QACD,CAEA,EAAW,KAAK,CACf,YACD,CAAC,CACF,CAkBA,OAhBI,EAAW,OAAS,EAChB,CACN,MAAO,CACN,KAAM,QACN,OAAQ,IACR,OAAQ,CACP,YAAa,EAAW,QAAqB,EAAK,KACjD,EAAI,EAAE,KAAO,EAAE,MACR,GACL,CAAC,CAAC,CACN,CACD,EACA,KAAM,IAAA,EACP,EAGM,CACN,MAAO,IAAA,GACP,KAAM,CACP,CACD"}