@@ -29,6 +29,7 @@ import {
29
29
ReadRequest ,
30
30
type ResourceList ,
31
31
type ResourceListResponse ,
32
+ ResourceResponse ,
32
33
ServiceImplementation ,
33
34
} from '@restorecommerce/rc-grpc-clients/dist/generated-server/io/restorecommerce/resource_base.js' ;
34
35
import {
@@ -141,22 +142,35 @@ export class AccessControlledServiceBase<O extends ResourceListResponse, I exten
141
142
} ;
142
143
}
143
144
144
- /**
145
- * Insecure read, bypassing ACS.
146
- * Override this function to alter read behaviour.
147
- *
148
- * @param request
149
- * @param context
150
- * @returns
151
- */
152
- protected async insecRead (
145
+ protected catchStatusError < T extends ResourceResponse > ( e ?: any , item ?: T ) : T {
146
+ item ??= { } as T ;
147
+ item . status = {
148
+ id : item ?. payload ?. id ,
149
+ code : Number . isInteger ( e ?. code ) ? e . code : 500 ,
150
+ message : e ?. message ?? e ?. details ?? ( e ? JSON . stringify ( e ) : 'Unknown Error!' )
151
+ } ;
152
+ this . logger ?. warn ( e ?. stack , item ) ;
153
+ return item ;
154
+ }
155
+
156
+ protected catchOperationError < T extends ResourceListResponse > ( e ?: any , response ?: T ) : T {
157
+ response ??= { } as T ;
158
+ response . operation_status = {
159
+ code : Number . isInteger ( e ?. code ) ? e . code : 500 ,
160
+ message : e ?. message ?? e ?. details ?? ( e ? JSON . stringify ( e ) : 'Unknown Error!' ) ,
161
+ } ;
162
+ this . logger ?. error ( e ?. stack , response ) ;
163
+ return response ;
164
+ }
165
+
166
+ protected async superRead (
153
167
request : ReadRequest ,
154
168
context ?: CallContext ,
155
169
) : Promise < DeepPartial < O > > {
156
170
return await super . read ( request , context ) ;
157
171
}
158
172
159
- protected async insecCreate (
173
+ protected async superCreate (
160
174
request : I ,
161
175
context ?: CallContext ,
162
176
) : Promise < DeepPartial < O > > {
@@ -166,7 +180,7 @@ export class AccessControlledServiceBase<O extends ResourceListResponse, I exten
166
180
) ;
167
181
}
168
182
169
- protected async insecUpdate (
183
+ protected async superUpdate (
170
184
request : I ,
171
185
context ?: CallContext ,
172
186
) : Promise < DeepPartial < O > > {
@@ -176,7 +190,7 @@ export class AccessControlledServiceBase<O extends ResourceListResponse, I exten
176
190
) ;
177
191
}
178
192
179
- protected async insecUpsert (
193
+ protected async superUpsert (
180
194
request : I ,
181
195
context ?: CallContext ,
182
196
) : Promise < DeepPartial < O > > {
@@ -186,7 +200,7 @@ export class AccessControlledServiceBase<O extends ResourceListResponse, I exten
186
200
) ;
187
201
}
188
202
189
- protected async insecDelete (
203
+ protected async superDelete (
190
204
request : DeleteRequest ,
191
205
context ?: CallContext ,
192
206
) : Promise < DeleteResponse > {
@@ -200,6 +214,7 @@ export class AccessControlledServiceBase<O extends ResourceListResponse, I exten
200
214
ids : string [ ] ,
201
215
subject ?: Subject ,
202
216
context ?: CallContext ,
217
+ bypassACS = false ,
203
218
) : Promise < DeepPartial < O > > {
204
219
ids = [ ...new Set ( ids ) ] . filter ( id => id ) ;
205
220
if ( ids . length > 1000 ) {
@@ -225,7 +240,12 @@ export class AccessControlledServiceBase<O extends ResourceListResponse, I exten
225
240
} ] ,
226
241
subject
227
242
} ) ;
228
- return await this . insecRead ( request , context ) ;
243
+ if ( bypassACS ) {
244
+ return await this . superRead ( request , context ) ;
245
+ }
246
+ else {
247
+ return await this . read ( request , context ) ;
248
+ }
229
249
}
230
250
231
251
@resolves_subject ( )
@@ -242,7 +262,7 @@ export class AccessControlledServiceBase<O extends ResourceListResponse, I exten
242
262
request : I ,
243
263
context ?: CallContext
244
264
) : Promise < DeepPartial < O > > {
245
- return await this . insecCreate ( request , context ) ;
265
+ return await this . superCreate ( request , context ) ;
246
266
}
247
267
248
268
@access_controlled_function ( {
@@ -257,7 +277,7 @@ export class AccessControlledServiceBase<O extends ResourceListResponse, I exten
257
277
request : ReadRequest ,
258
278
context ?: CallContext ,
259
279
) : Promise < DeepPartial < O > > {
260
- return await this . insecRead ( request , context ) ;
280
+ return await this . superRead ( request , context ) ;
261
281
}
262
282
263
283
@resolves_subject ( )
@@ -274,7 +294,7 @@ export class AccessControlledServiceBase<O extends ResourceListResponse, I exten
274
294
request : I ,
275
295
context ?: CallContext ,
276
296
) : Promise < DeepPartial < O > > {
277
- return await this . insecUpdate ( request , context ) ;
297
+ return await this . superUpdate ( request , context ) ;
278
298
}
279
299
280
300
@resolves_subject ( )
@@ -291,7 +311,7 @@ export class AccessControlledServiceBase<O extends ResourceListResponse, I exten
291
311
request : I ,
292
312
context ?: CallContext ,
293
313
) : Promise < DeepPartial < O > > {
294
- return await this . insecUpsert ( request , context ) ;
314
+ return await this . superUpsert ( request , context ) ;
295
315
}
296
316
297
317
@resolves_subject ( )
@@ -307,6 +327,6 @@ export class AccessControlledServiceBase<O extends ResourceListResponse, I exten
307
327
request : DeleteRequest ,
308
328
context ?: CallContext ,
309
329
) : Promise < DeleteResponse > {
310
- return this . insecDelete ( request , context ) ;
330
+ return this . superDelete ( request , context ) ;
311
331
}
312
332
}
0 commit comments