@izara_project/izara-core-generate-service-code 1.0.85 → 1.0.87

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/package.json +1 -1
  2. package/src/compile/compileProject.js +1 -2
  3. package/src/compile/loadSchemas.js +29 -17
  4. package/src/emit/coreFunction/emitCoreFunctionArtifacts.js +2 -1
  5. package/src/emit/coreFunction/templates/InitialSetupConfig.ejs +32 -14
  6. package/src/emit/crud/crudActionPlan.js +1 -1
  7. package/src/emit/crud/emitCrudApplicationArtifacts.js +10 -4
  8. package/src/emit/crud/emitDynamicCrudFlowSchemas.js +16 -8
  9. package/src/emit/crud/templates/CreateEndpoint_Main.ejs +12 -3
  10. package/src/emit/crud/templates/CreateLogicalLib.ejs +85 -20
  11. package/src/emit/crud/templates/DeleteEndpoint_Main.ejs +48 -7
  12. package/src/emit/crud/templates/UpdateEndpoint_Main.ejs +47 -6
  13. package/src/emit/crud/templates/UpdateLogicalLib.ejs +754 -353
  14. package/src/emit/function/functionYamlArtifact.js +4 -2
  15. package/src/emit/rbac/emitDynamicRbacFlowSchemas.js +5 -5
  16. package/src/emit/rbac/emitRbacApplicationArtifacts.js +70 -89
  17. package/src/emit/rbac/templates/CancelUsage_Main.ejs +14 -10
  18. package/src/emit/rbac/templates/ConfirmUsage_Main.ejs +14 -10
  19. package/src/emit/rbac/templates/CreateTargetRole_Main.ejs +56 -16
  20. package/src/emit/rbac/templates/DeleteTargetRole_Main.ejs +96 -0
  21. package/src/emit/rbac/templates/GetMyPermissions_Main.ejs +110 -0
  22. package/src/emit/rbac/templates/GetTargetRole_Main.ejs +62 -0
  23. package/src/emit/rbac/templates/ReservedDynamicUsage_Main.ejs +76 -34
  24. package/src/emit/rbac/templates/UpdateTargetRole_Main.ejs +107 -0
  25. package/src/emit/rbac/templates/UserRbacFlow_Main.ejs +24 -21
  26. package/src/emit/rbac/templates/UserRoleMutation_Main.ejs +12 -0
  27. package/src/emit/resource/emitResourceArtifacts.js +75 -8
  28. package/src/emit/resource/templates/GeneratedLambdaRoleServiceConfig.ejs +4 -2
  29. package/src/emit/resource/templates/SystemDynamoDB_Yaml.ejs +14 -18
  30. package/src/emit/system/templates/WebSocketComplete_Yaml.ejs +4 -2
  31. package/src/emit/systemText/emitSystemTextSchemas.js +5 -2
  32. package/src/generate.js +18 -12
  33. package/src/generateResources/IntTest/generateResources/generateResources.js +1 -1
  34. package/src/generateResources/IntTest/generateTests/generateTemplate.js +1 -1
  35. package/src/generateResources/IntTest/upload/uploadIntTest.js +8 -2
  36. package/test/createTargetRoleHandler.test.js +42 -15
  37. package/test/crudApplicationArtifacts.test.js +62 -3
  38. package/test/customFlowApplicationArtifacts.test.js +3 -5
  39. package/test/dynamicCrudFlowSchemas.test.js +5 -17
  40. package/test/dynamicRbacFlowSchemas.test.js +5 -5
  41. package/test/functionYamlArtifact.test.js +4 -2
  42. package/test/publicApi.test.js +18 -14
  43. package/test/resourceArtifacts.test.js +7 -3
@@ -99,6 +99,7 @@ export default async function <%- flowTag %>(
99
99
  _izContext.correlationIds?.get(coreConsts.SUBMITTED_BY_USER_ID);
100
100
 
101
101
  targetIdentifiers = requestParams.targetIdentifiers;
102
+ delete requestParams.targetIdentifiers;
102
103
 
103
104
  if (!targetIdentifiers && objectSchema.belongTo?.objectType === 'user' && submittedByUserId) {
104
105
  targetIdentifiers = { submittedByUserId };
@@ -113,12 +114,11 @@ export default async function <%- flowTag %>(
113
114
  if (!targetIdentifiers.submittedByUserId && submittedByUserId) {
114
115
  targetIdentifiers.submittedByUserId = submittedByUserId;
115
116
  }
116
- requestParams.targetIdentifiers = targetIdentifiers;
117
117
  }
118
118
 
119
119
  _izContext.logger.debug(`[${process.env.iz_serviceTag}:<%- flowTag %>] Identity & Target Context Resolved:`, {
120
120
  submittedByUserId: requestParams.submittedByUserId,
121
- targetIdentifiers: requestParams.targetIdentifiers,
121
+ targetIdentifiers,
122
122
  belongTo: objectSchema.belongTo,
123
123
  generatedBy: objectSchema.generatedBy
124
124
  });
@@ -129,7 +129,38 @@ export default async function <%- flowTag %>(
129
129
  }
130
130
 
131
131
  // ── Build identifiers used by asynchronous processing ────────────────────
132
- const identifiers = requestParams.objInstanceFull.identifiers;
132
+ const identifiers = requestParams.objInstanceFull?.identifiers;
133
+
134
+ if (!objectSchema.hasOwnProperty('belongTo')) {
135
+ if (!targetIdentifiers && identifiers) {
136
+ targetIdentifiers = { ...identifiers };
137
+ } else if (targetIdentifiers && identifiers) {
138
+ for (const [key, value] of Object.entries(identifiers)) {
139
+ if (targetIdentifiers[key] === undefined && value !== undefined) {
140
+ targetIdentifiers[key] = value;
141
+ }
142
+ }
143
+ }
144
+ if (targetIdentifiers) {
145
+ if (!targetIdentifiers.submittedByUserId && submittedByUserId) {
146
+ targetIdentifiers.submittedByUserId = submittedByUserId;
147
+ }
148
+ }
149
+ }
150
+
151
+ if (targetIdentifiers && identifiers) {
152
+ for (const [key, value] of Object.entries(identifiers)) {
153
+ if (
154
+ targetIdentifiers[key] !== undefined &&
155
+ value !== undefined &&
156
+ targetIdentifiers[key] !== value
157
+ ) {
158
+ errorsFound.push(
159
+ `targetIdentifiers.${key} must match objInstanceFull.identifiers.${key}`
160
+ );
161
+ }
162
+ }
163
+ }
133
164
 
134
165
  //(<validateBeforeUpdate>)
135
166
  //(</validateBeforeUpdate>)
@@ -182,11 +213,13 @@ export default async function <%- flowTag %>(
182
213
  },
183
214
  parameterGroups,
184
215
  {
216
+ targetIdentifiers,
185
217
  rbacObjType: {
186
218
  serviceTag: <%- rbacServiceTags.length === 1 ? rbacServiceTags[0] : `{ ${Object.entries(rbacServiceTagMap).map(([k, v]) => `'${k}': ${v}`).join(', ')} }[requestParams.objectType] || process.env.iz_serviceTag` %>
187
219
  },
188
220
  requestParams: requestParams,
189
- nextFlowStepName: '<%- plan?.hasRbacCallback ? `${flowTag}RbacCallback` : `${flowTag}Complete` %>'
221
+ nextFlowStepName: '<%- plan?.hasRbacCallback ? `${flowTag}RbacCallback` : `${flowTag}Complete` %>',
222
+ sync: true
190
223
  }
191
224
  );
192
225
 
@@ -195,10 +228,18 @@ export default async function <%- flowTag %>(
195
228
  resultPermissionCheck
196
229
  );
197
230
 
231
+ if (resultPermissionCheck && resultPermissionCheck.permission !== true) {
232
+ errorsFound.push('Permission denied');
233
+ return await <%- flowTag %>LogicalLib(
234
+ _izContext,
235
+ requestParams,
236
+ callingFlowConfig,
237
+ errorsFound
238
+ );
239
+ }
240
+
198
241
  //(<rbacPublish_<%- flowTag %>)
199
242
  //(</rbacPublish_<%- flowTag %>)
200
-
201
- return resultPermissionCheck;
202
243
  }
203
244
  <%_ } _%>
204
245