@heavybit/pendoadmin-shared-lib 1.3.0 → 1.3.1

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.
@@ -13,7 +13,7 @@ export const baseEnvSchema = z.object({
13
13
  DB_PASSWORD: z.string().default(''),
14
14
  DB_NAME: z.string(),
15
15
  JWT_SECRET: z.string().min(16),
16
- JWT_ACCESS_EXPIRY: z.string().default('24h'),
16
+ JWT_ACCESS_EXPIRY: z.string().default('2h'),
17
17
  JWT_REFRESH_EXPIRY: z.string().default('7d'),
18
18
  RABBITMQ_URL: z.string().url().default('amqp://localhost:5672'),
19
19
  REDIS_URL: z.string().default('redis://localhost:6379'),
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"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"}
@@ -12,9 +12,14 @@ export declare const companies: import("drizzle-orm/mysql-core").MySqlTableWithC
12
12
  driverParam: string | number;
13
13
  notNull: true;
14
14
  hasDefault: false;
15
+ isPrimaryKey: true;
16
+ isAutoincrement: false;
17
+ hasRuntimeDefault: false;
15
18
  enumValues: [string, ...string[]];
16
19
  baseColumn: never;
17
- }, object>;
20
+ identity: undefined;
21
+ generated: undefined;
22
+ }, {}, {}>;
18
23
  name: import("drizzle-orm/mysql-core").MySqlColumn<{
19
24
  name: "name";
20
25
  tableName: "companies";
@@ -24,9 +29,14 @@ export declare const companies: import("drizzle-orm/mysql-core").MySqlTableWithC
24
29
  driverParam: string | number;
25
30
  notNull: true;
26
31
  hasDefault: false;
32
+ isPrimaryKey: false;
33
+ isAutoincrement: false;
34
+ hasRuntimeDefault: false;
27
35
  enumValues: [string, ...string[]];
28
36
  baseColumn: never;
29
- }, object>;
37
+ identity: undefined;
38
+ generated: undefined;
39
+ }, {}, {}>;
30
40
  companySlug: import("drizzle-orm/mysql-core").MySqlColumn<{
31
41
  name: "company_slug";
32
42
  tableName: "companies";
@@ -36,9 +46,14 @@ export declare const companies: import("drizzle-orm/mysql-core").MySqlTableWithC
36
46
  driverParam: string | number;
37
47
  notNull: true;
38
48
  hasDefault: false;
49
+ isPrimaryKey: false;
50
+ isAutoincrement: false;
51
+ hasRuntimeDefault: false;
39
52
  enumValues: [string, ...string[]];
40
53
  baseColumn: never;
41
- }, object>;
54
+ identity: undefined;
55
+ generated: undefined;
56
+ }, {}, {}>;
42
57
  ussdCode: import("drizzle-orm/mysql-core").MySqlColumn<{
43
58
  name: "ussd_code";
44
59
  tableName: "companies";
@@ -48,9 +63,14 @@ export declare const companies: import("drizzle-orm/mysql-core").MySqlTableWithC
48
63
  driverParam: string | number;
49
64
  notNull: false;
50
65
  hasDefault: false;
66
+ isPrimaryKey: false;
67
+ isAutoincrement: false;
68
+ hasRuntimeDefault: false;
51
69
  enumValues: [string, ...string[]];
52
70
  baseColumn: never;
53
- }, object>;
71
+ identity: undefined;
72
+ generated: undefined;
73
+ }, {}, {}>;
54
74
  email: import("drizzle-orm/mysql-core").MySqlColumn<{
55
75
  name: "email";
56
76
  tableName: "companies";
@@ -60,9 +80,14 @@ export declare const companies: import("drizzle-orm/mysql-core").MySqlTableWithC
60
80
  driverParam: string | number;
61
81
  notNull: false;
62
82
  hasDefault: false;
83
+ isPrimaryKey: false;
84
+ isAutoincrement: false;
85
+ hasRuntimeDefault: false;
63
86
  enumValues: [string, ...string[]];
64
87
  baseColumn: never;
65
- }, object>;
88
+ identity: undefined;
89
+ generated: undefined;
90
+ }, {}, {}>;
66
91
  phone: import("drizzle-orm/mysql-core").MySqlColumn<{
67
92
  name: "phone";
68
93
  tableName: "companies";
@@ -72,9 +97,14 @@ export declare const companies: import("drizzle-orm/mysql-core").MySqlTableWithC
72
97
  driverParam: string | number;
73
98
  notNull: false;
74
99
  hasDefault: false;
100
+ isPrimaryKey: false;
101
+ isAutoincrement: false;
102
+ hasRuntimeDefault: false;
75
103
  enumValues: [string, ...string[]];
76
104
  baseColumn: never;
77
- }, object>;
105
+ identity: undefined;
106
+ generated: undefined;
107
+ }, {}, {}>;
78
108
  address: import("drizzle-orm/mysql-core").MySqlColumn<{
79
109
  name: "address";
80
110
  tableName: "companies";
@@ -84,9 +114,14 @@ export declare const companies: import("drizzle-orm/mysql-core").MySqlTableWithC
84
114
  driverParam: string;
85
115
  notNull: false;
86
116
  hasDefault: false;
117
+ isPrimaryKey: false;
118
+ isAutoincrement: false;
119
+ hasRuntimeDefault: false;
87
120
  enumValues: [string, ...string[]];
88
121
  baseColumn: never;
89
- }, object>;
122
+ identity: undefined;
123
+ generated: undefined;
124
+ }, {}, {}>;
90
125
  city: import("drizzle-orm/mysql-core").MySqlColumn<{
91
126
  name: "city";
92
127
  tableName: "companies";
@@ -96,9 +131,14 @@ export declare const companies: import("drizzle-orm/mysql-core").MySqlTableWithC
96
131
  driverParam: string | number;
97
132
  notNull: false;
98
133
  hasDefault: false;
134
+ isPrimaryKey: false;
135
+ isAutoincrement: false;
136
+ hasRuntimeDefault: false;
99
137
  enumValues: [string, ...string[]];
100
138
  baseColumn: never;
101
- }, object>;
139
+ identity: undefined;
140
+ generated: undefined;
141
+ }, {}, {}>;
102
142
  country: import("drizzle-orm/mysql-core").MySqlColumn<{
103
143
  name: "country";
104
144
  tableName: "companies";
@@ -108,9 +148,14 @@ export declare const companies: import("drizzle-orm/mysql-core").MySqlTableWithC
108
148
  driverParam: string | number;
109
149
  notNull: false;
110
150
  hasDefault: false;
151
+ isPrimaryKey: false;
152
+ isAutoincrement: false;
153
+ hasRuntimeDefault: false;
111
154
  enumValues: [string, ...string[]];
112
155
  baseColumn: never;
113
- }, object>;
156
+ identity: undefined;
157
+ generated: undefined;
158
+ }, {}, {}>;
114
159
  logo: import("drizzle-orm/mysql-core").MySqlColumn<{
115
160
  name: "logo";
116
161
  tableName: "companies";
@@ -120,9 +165,14 @@ export declare const companies: import("drizzle-orm/mysql-core").MySqlTableWithC
120
165
  driverParam: string | number;
121
166
  notNull: false;
122
167
  hasDefault: false;
168
+ isPrimaryKey: false;
169
+ isAutoincrement: false;
170
+ hasRuntimeDefault: false;
123
171
  enumValues: [string, ...string[]];
124
172
  baseColumn: never;
125
- }, object>;
173
+ identity: undefined;
174
+ generated: undefined;
175
+ }, {}, {}>;
126
176
  isActive: import("drizzle-orm/mysql-core").MySqlColumn<{
127
177
  name: "is_active";
128
178
  tableName: "companies";
@@ -132,9 +182,14 @@ export declare const companies: import("drizzle-orm/mysql-core").MySqlTableWithC
132
182
  driverParam: number | boolean;
133
183
  notNull: true;
134
184
  hasDefault: true;
185
+ isPrimaryKey: false;
186
+ isAutoincrement: false;
187
+ hasRuntimeDefault: false;
135
188
  enumValues: undefined;
136
189
  baseColumn: never;
137
- }, object>;
190
+ identity: undefined;
191
+ generated: undefined;
192
+ }, {}, {}>;
138
193
  isSystem: import("drizzle-orm/mysql-core").MySqlColumn<{
139
194
  name: "is_system";
140
195
  tableName: "companies";
@@ -144,9 +199,14 @@ export declare const companies: import("drizzle-orm/mysql-core").MySqlTableWithC
144
199
  driverParam: number | boolean;
145
200
  notNull: true;
146
201
  hasDefault: true;
202
+ isPrimaryKey: false;
203
+ isAutoincrement: false;
204
+ hasRuntimeDefault: false;
147
205
  enumValues: undefined;
148
206
  baseColumn: never;
149
- }, object>;
207
+ identity: undefined;
208
+ generated: undefined;
209
+ }, {}, {}>;
150
210
  createdAt: import("drizzle-orm/mysql-core").MySqlColumn<{
151
211
  name: "created_at";
152
212
  tableName: "companies";
@@ -156,9 +216,14 @@ export declare const companies: import("drizzle-orm/mysql-core").MySqlTableWithC
156
216
  driverParam: string | number;
157
217
  notNull: false;
158
218
  hasDefault: true;
219
+ isPrimaryKey: false;
220
+ isAutoincrement: false;
221
+ hasRuntimeDefault: false;
159
222
  enumValues: undefined;
160
223
  baseColumn: never;
161
- }, object>;
224
+ identity: undefined;
225
+ generated: undefined;
226
+ }, {}, {}>;
162
227
  updatedAt: import("drizzle-orm/mysql-core").MySqlColumn<{
163
228
  name: "updated_at";
164
229
  tableName: "companies";
@@ -168,9 +233,14 @@ export declare const companies: import("drizzle-orm/mysql-core").MySqlTableWithC
168
233
  driverParam: string | number;
169
234
  notNull: false;
170
235
  hasDefault: true;
236
+ isPrimaryKey: false;
237
+ isAutoincrement: false;
238
+ hasRuntimeDefault: false;
171
239
  enumValues: undefined;
172
240
  baseColumn: never;
173
- }, object>;
241
+ identity: undefined;
242
+ generated: undefined;
243
+ }, {}, {}>;
174
244
  };
175
245
  dialect: "mysql";
176
246
  }>;
@@ -189,9 +259,14 @@ export declare const users: import("drizzle-orm/mysql-core").MySqlTableWithColum
189
259
  driverParam: string | number;
190
260
  notNull: true;
191
261
  hasDefault: false;
262
+ isPrimaryKey: true;
263
+ isAutoincrement: false;
264
+ hasRuntimeDefault: false;
192
265
  enumValues: [string, ...string[]];
193
266
  baseColumn: never;
194
- }, object>;
267
+ identity: undefined;
268
+ generated: undefined;
269
+ }, {}, {}>;
195
270
  email: import("drizzle-orm/mysql-core").MySqlColumn<{
196
271
  name: "email";
197
272
  tableName: "users";
@@ -201,9 +276,14 @@ export declare const users: import("drizzle-orm/mysql-core").MySqlTableWithColum
201
276
  driverParam: string | number;
202
277
  notNull: true;
203
278
  hasDefault: false;
279
+ isPrimaryKey: false;
280
+ isAutoincrement: false;
281
+ hasRuntimeDefault: false;
204
282
  enumValues: [string, ...string[]];
205
283
  baseColumn: never;
206
- }, object>;
284
+ identity: undefined;
285
+ generated: undefined;
286
+ }, {}, {}>;
207
287
  fullName: import("drizzle-orm/mysql-core").MySqlColumn<{
208
288
  name: "full_name";
209
289
  tableName: "users";
@@ -213,9 +293,14 @@ export declare const users: import("drizzle-orm/mysql-core").MySqlTableWithColum
213
293
  driverParam: string | number;
214
294
  notNull: false;
215
295
  hasDefault: false;
296
+ isPrimaryKey: false;
297
+ isAutoincrement: false;
298
+ hasRuntimeDefault: false;
216
299
  enumValues: [string, ...string[]];
217
300
  baseColumn: never;
218
- }, object>;
301
+ identity: undefined;
302
+ generated: undefined;
303
+ }, {}, {}>;
219
304
  firstName: import("drizzle-orm/mysql-core").MySqlColumn<{
220
305
  name: "first_name";
221
306
  tableName: "users";
@@ -225,9 +310,14 @@ export declare const users: import("drizzle-orm/mysql-core").MySqlTableWithColum
225
310
  driverParam: string | number;
226
311
  notNull: false;
227
312
  hasDefault: false;
313
+ isPrimaryKey: false;
314
+ isAutoincrement: false;
315
+ hasRuntimeDefault: false;
228
316
  enumValues: [string, ...string[]];
229
317
  baseColumn: never;
230
- }, object>;
318
+ identity: undefined;
319
+ generated: undefined;
320
+ }, {}, {}>;
231
321
  lastName: import("drizzle-orm/mysql-core").MySqlColumn<{
232
322
  name: "last_name";
233
323
  tableName: "users";
@@ -237,9 +327,14 @@ export declare const users: import("drizzle-orm/mysql-core").MySqlTableWithColum
237
327
  driverParam: string | number;
238
328
  notNull: false;
239
329
  hasDefault: false;
330
+ isPrimaryKey: false;
331
+ isAutoincrement: false;
332
+ hasRuntimeDefault: false;
240
333
  enumValues: [string, ...string[]];
241
334
  baseColumn: never;
242
- }, object>;
335
+ identity: undefined;
336
+ generated: undefined;
337
+ }, {}, {}>;
243
338
  companyId: import("drizzle-orm/mysql-core").MySqlColumn<{
244
339
  name: "company_id";
245
340
  tableName: "users";
@@ -249,9 +344,14 @@ export declare const users: import("drizzle-orm/mysql-core").MySqlTableWithColum
249
344
  driverParam: string | number;
250
345
  notNull: false;
251
346
  hasDefault: false;
347
+ isPrimaryKey: false;
348
+ isAutoincrement: false;
349
+ hasRuntimeDefault: false;
252
350
  enumValues: [string, ...string[]];
253
351
  baseColumn: never;
254
- }, object>;
352
+ identity: undefined;
353
+ generated: undefined;
354
+ }, {}, {}>;
255
355
  isActive: import("drizzle-orm/mysql-core").MySqlColumn<{
256
356
  name: "is_active";
257
357
  tableName: "users";
@@ -261,9 +361,14 @@ export declare const users: import("drizzle-orm/mysql-core").MySqlTableWithColum
261
361
  driverParam: number | boolean;
262
362
  notNull: true;
263
363
  hasDefault: true;
364
+ isPrimaryKey: false;
365
+ isAutoincrement: false;
366
+ hasRuntimeDefault: false;
264
367
  enumValues: undefined;
265
368
  baseColumn: never;
266
- }, object>;
369
+ identity: undefined;
370
+ generated: undefined;
371
+ }, {}, {}>;
267
372
  isSuperAdmin: import("drizzle-orm/mysql-core").MySqlColumn<{
268
373
  name: "is_super_admin";
269
374
  tableName: "users";
@@ -273,9 +378,14 @@ export declare const users: import("drizzle-orm/mysql-core").MySqlTableWithColum
273
378
  driverParam: number | boolean;
274
379
  notNull: true;
275
380
  hasDefault: true;
381
+ isPrimaryKey: false;
382
+ isAutoincrement: false;
383
+ hasRuntimeDefault: false;
276
384
  enumValues: undefined;
277
385
  baseColumn: never;
278
- }, object>;
386
+ identity: undefined;
387
+ generated: undefined;
388
+ }, {}, {}>;
279
389
  suspendedAt: import("drizzle-orm/mysql-core").MySqlColumn<{
280
390
  name: "suspended_at";
281
391
  tableName: "users";
@@ -285,9 +395,14 @@ export declare const users: import("drizzle-orm/mysql-core").MySqlTableWithColum
285
395
  driverParam: string | number;
286
396
  notNull: false;
287
397
  hasDefault: false;
398
+ isPrimaryKey: false;
399
+ isAutoincrement: false;
400
+ hasRuntimeDefault: false;
288
401
  enumValues: undefined;
289
402
  baseColumn: never;
290
- }, object>;
403
+ identity: undefined;
404
+ generated: undefined;
405
+ }, {}, {}>;
291
406
  suspendedReason: import("drizzle-orm/mysql-core").MySqlColumn<{
292
407
  name: "suspended_reason";
293
408
  tableName: "users";
@@ -297,9 +412,14 @@ export declare const users: import("drizzle-orm/mysql-core").MySqlTableWithColum
297
412
  driverParam: string | number;
298
413
  notNull: false;
299
414
  hasDefault: false;
415
+ isPrimaryKey: false;
416
+ isAutoincrement: false;
417
+ hasRuntimeDefault: false;
300
418
  enumValues: [string, ...string[]];
301
419
  baseColumn: never;
302
- }, object>;
420
+ identity: undefined;
421
+ generated: undefined;
422
+ }, {}, {}>;
303
423
  lastLoginAt: import("drizzle-orm/mysql-core").MySqlColumn<{
304
424
  name: "last_login_at";
305
425
  tableName: "users";
@@ -309,9 +429,14 @@ export declare const users: import("drizzle-orm/mysql-core").MySqlTableWithColum
309
429
  driverParam: string | number;
310
430
  notNull: false;
311
431
  hasDefault: false;
432
+ isPrimaryKey: false;
433
+ isAutoincrement: false;
434
+ hasRuntimeDefault: false;
312
435
  enumValues: undefined;
313
436
  baseColumn: never;
314
- }, object>;
437
+ identity: undefined;
438
+ generated: undefined;
439
+ }, {}, {}>;
315
440
  createdAt: import("drizzle-orm/mysql-core").MySqlColumn<{
316
441
  name: "created_at";
317
442
  tableName: "users";
@@ -321,9 +446,14 @@ export declare const users: import("drizzle-orm/mysql-core").MySqlTableWithColum
321
446
  driverParam: string | number;
322
447
  notNull: false;
323
448
  hasDefault: true;
449
+ isPrimaryKey: false;
450
+ isAutoincrement: false;
451
+ hasRuntimeDefault: false;
324
452
  enumValues: undefined;
325
453
  baseColumn: never;
326
- }, object>;
454
+ identity: undefined;
455
+ generated: undefined;
456
+ }, {}, {}>;
327
457
  updatedAt: import("drizzle-orm/mysql-core").MySqlColumn<{
328
458
  name: "updated_at";
329
459
  tableName: "users";
@@ -333,9 +463,14 @@ export declare const users: import("drizzle-orm/mysql-core").MySqlTableWithColum
333
463
  driverParam: string | number;
334
464
  notNull: false;
335
465
  hasDefault: true;
466
+ isPrimaryKey: false;
467
+ isAutoincrement: false;
468
+ hasRuntimeDefault: false;
336
469
  enumValues: undefined;
337
470
  baseColumn: never;
338
- }, object>;
471
+ identity: undefined;
472
+ generated: undefined;
473
+ }, {}, {}>;
339
474
  };
340
475
  dialect: "mysql";
341
476
  }>;
@@ -354,9 +489,14 @@ export declare const permissions: import("drizzle-orm/mysql-core").MySqlTableWit
354
489
  driverParam: string | number;
355
490
  notNull: true;
356
491
  hasDefault: false;
492
+ isPrimaryKey: true;
493
+ isAutoincrement: false;
494
+ hasRuntimeDefault: false;
357
495
  enumValues: [string, ...string[]];
358
496
  baseColumn: never;
359
- }, object>;
497
+ identity: undefined;
498
+ generated: undefined;
499
+ }, {}, {}>;
360
500
  name: import("drizzle-orm/mysql-core").MySqlColumn<{
361
501
  name: "name";
362
502
  tableName: "permissions";
@@ -366,9 +506,14 @@ export declare const permissions: import("drizzle-orm/mysql-core").MySqlTableWit
366
506
  driverParam: string | number;
367
507
  notNull: true;
368
508
  hasDefault: false;
509
+ isPrimaryKey: false;
510
+ isAutoincrement: false;
511
+ hasRuntimeDefault: false;
369
512
  enumValues: [string, ...string[]];
370
513
  baseColumn: never;
371
- }, object>;
514
+ identity: undefined;
515
+ generated: undefined;
516
+ }, {}, {}>;
372
517
  resource: import("drizzle-orm/mysql-core").MySqlColumn<{
373
518
  name: "resource";
374
519
  tableName: "permissions";
@@ -378,9 +523,14 @@ export declare const permissions: import("drizzle-orm/mysql-core").MySqlTableWit
378
523
  driverParam: string | number;
379
524
  notNull: true;
380
525
  hasDefault: false;
526
+ isPrimaryKey: false;
527
+ isAutoincrement: false;
528
+ hasRuntimeDefault: false;
381
529
  enumValues: [string, ...string[]];
382
530
  baseColumn: never;
383
- }, object>;
531
+ identity: undefined;
532
+ generated: undefined;
533
+ }, {}, {}>;
384
534
  action: import("drizzle-orm/mysql-core").MySqlColumn<{
385
535
  name: "action";
386
536
  tableName: "permissions";
@@ -390,9 +540,14 @@ export declare const permissions: import("drizzle-orm/mysql-core").MySqlTableWit
390
540
  driverParam: string | number;
391
541
  notNull: true;
392
542
  hasDefault: false;
543
+ isPrimaryKey: false;
544
+ isAutoincrement: false;
545
+ hasRuntimeDefault: false;
393
546
  enumValues: [string, ...string[]];
394
547
  baseColumn: never;
395
- }, object>;
548
+ identity: undefined;
549
+ generated: undefined;
550
+ }, {}, {}>;
396
551
  description: import("drizzle-orm/mysql-core").MySqlColumn<{
397
552
  name: "description";
398
553
  tableName: "permissions";
@@ -402,9 +557,14 @@ export declare const permissions: import("drizzle-orm/mysql-core").MySqlTableWit
402
557
  driverParam: string | number;
403
558
  notNull: false;
404
559
  hasDefault: false;
560
+ isPrimaryKey: false;
561
+ isAutoincrement: false;
562
+ hasRuntimeDefault: false;
405
563
  enumValues: [string, ...string[]];
406
564
  baseColumn: never;
407
- }, object>;
565
+ identity: undefined;
566
+ generated: undefined;
567
+ }, {}, {}>;
408
568
  isRestricted: import("drizzle-orm/mysql-core").MySqlColumn<{
409
569
  name: "is_restricted";
410
570
  tableName: "permissions";
@@ -414,9 +574,14 @@ export declare const permissions: import("drizzle-orm/mysql-core").MySqlTableWit
414
574
  driverParam: number | boolean;
415
575
  notNull: true;
416
576
  hasDefault: true;
577
+ isPrimaryKey: false;
578
+ isAutoincrement: false;
579
+ hasRuntimeDefault: false;
417
580
  enumValues: undefined;
418
581
  baseColumn: never;
419
- }, object>;
582
+ identity: undefined;
583
+ generated: undefined;
584
+ }, {}, {}>;
420
585
  isSystem: import("drizzle-orm/mysql-core").MySqlColumn<{
421
586
  name: "is_system";
422
587
  tableName: "permissions";
@@ -426,9 +591,14 @@ export declare const permissions: import("drizzle-orm/mysql-core").MySqlTableWit
426
591
  driverParam: number | boolean;
427
592
  notNull: true;
428
593
  hasDefault: true;
594
+ isPrimaryKey: false;
595
+ isAutoincrement: false;
596
+ hasRuntimeDefault: false;
429
597
  enumValues: undefined;
430
598
  baseColumn: never;
431
- }, object>;
599
+ identity: undefined;
600
+ generated: undefined;
601
+ }, {}, {}>;
432
602
  createdAt: import("drizzle-orm/mysql-core").MySqlColumn<{
433
603
  name: "created_at";
434
604
  tableName: "permissions";
@@ -438,9 +608,14 @@ export declare const permissions: import("drizzle-orm/mysql-core").MySqlTableWit
438
608
  driverParam: string | number;
439
609
  notNull: false;
440
610
  hasDefault: true;
611
+ isPrimaryKey: false;
612
+ isAutoincrement: false;
613
+ hasRuntimeDefault: false;
441
614
  enumValues: undefined;
442
615
  baseColumn: never;
443
- }, object>;
616
+ identity: undefined;
617
+ generated: undefined;
618
+ }, {}, {}>;
444
619
  updatedAt: import("drizzle-orm/mysql-core").MySqlColumn<{
445
620
  name: "updated_at";
446
621
  tableName: "permissions";
@@ -450,9 +625,14 @@ export declare const permissions: import("drizzle-orm/mysql-core").MySqlTableWit
450
625
  driverParam: string | number;
451
626
  notNull: false;
452
627
  hasDefault: true;
628
+ isPrimaryKey: false;
629
+ isAutoincrement: false;
630
+ hasRuntimeDefault: false;
453
631
  enumValues: undefined;
454
632
  baseColumn: never;
455
- }, object>;
633
+ identity: undefined;
634
+ generated: undefined;
635
+ }, {}, {}>;
456
636
  };
457
637
  dialect: "mysql";
458
638
  }>;
@@ -471,9 +651,14 @@ export declare const roles: import("drizzle-orm/mysql-core").MySqlTableWithColum
471
651
  driverParam: string | number;
472
652
  notNull: true;
473
653
  hasDefault: false;
654
+ isPrimaryKey: true;
655
+ isAutoincrement: false;
656
+ hasRuntimeDefault: false;
474
657
  enumValues: [string, ...string[]];
475
658
  baseColumn: never;
476
- }, object>;
659
+ identity: undefined;
660
+ generated: undefined;
661
+ }, {}, {}>;
477
662
  name: import("drizzle-orm/mysql-core").MySqlColumn<{
478
663
  name: "name";
479
664
  tableName: "roles";
@@ -483,9 +668,14 @@ export declare const roles: import("drizzle-orm/mysql-core").MySqlTableWithColum
483
668
  driverParam: string | number;
484
669
  notNull: true;
485
670
  hasDefault: false;
671
+ isPrimaryKey: false;
672
+ isAutoincrement: false;
673
+ hasRuntimeDefault: false;
486
674
  enumValues: [string, ...string[]];
487
675
  baseColumn: never;
488
- }, object>;
676
+ identity: undefined;
677
+ generated: undefined;
678
+ }, {}, {}>;
489
679
  roleSlug: import("drizzle-orm/mysql-core").MySqlColumn<{
490
680
  name: "role_slug";
491
681
  tableName: "roles";
@@ -495,9 +685,14 @@ export declare const roles: import("drizzle-orm/mysql-core").MySqlTableWithColum
495
685
  driverParam: string | number;
496
686
  notNull: false;
497
687
  hasDefault: false;
688
+ isPrimaryKey: false;
689
+ isAutoincrement: false;
690
+ hasRuntimeDefault: false;
498
691
  enumValues: [string, ...string[]];
499
692
  baseColumn: never;
500
- }, object>;
693
+ identity: undefined;
694
+ generated: undefined;
695
+ }, {}, {}>;
501
696
  description: import("drizzle-orm/mysql-core").MySqlColumn<{
502
697
  name: "description";
503
698
  tableName: "roles";
@@ -507,9 +702,14 @@ export declare const roles: import("drizzle-orm/mysql-core").MySqlTableWithColum
507
702
  driverParam: string | number;
508
703
  notNull: false;
509
704
  hasDefault: false;
705
+ isPrimaryKey: false;
706
+ isAutoincrement: false;
707
+ hasRuntimeDefault: false;
510
708
  enumValues: [string, ...string[]];
511
709
  baseColumn: never;
512
- }, object>;
710
+ identity: undefined;
711
+ generated: undefined;
712
+ }, {}, {}>;
513
713
  isSystemRole: import("drizzle-orm/mysql-core").MySqlColumn<{
514
714
  name: "is_system_role";
515
715
  tableName: "roles";
@@ -519,9 +719,14 @@ export declare const roles: import("drizzle-orm/mysql-core").MySqlTableWithColum
519
719
  driverParam: number | boolean;
520
720
  notNull: false;
521
721
  hasDefault: false;
722
+ isPrimaryKey: false;
723
+ isAutoincrement: false;
724
+ hasRuntimeDefault: false;
522
725
  enumValues: undefined;
523
726
  baseColumn: never;
524
- }, object>;
727
+ identity: undefined;
728
+ generated: undefined;
729
+ }, {}, {}>;
525
730
  isSystem: import("drizzle-orm/mysql-core").MySqlColumn<{
526
731
  name: "is_system";
527
732
  tableName: "roles";
@@ -531,9 +736,14 @@ export declare const roles: import("drizzle-orm/mysql-core").MySqlTableWithColum
531
736
  driverParam: number | boolean;
532
737
  notNull: true;
533
738
  hasDefault: true;
739
+ isPrimaryKey: false;
740
+ isAutoincrement: false;
741
+ hasRuntimeDefault: false;
534
742
  enumValues: undefined;
535
743
  baseColumn: never;
536
- }, object>;
744
+ identity: undefined;
745
+ generated: undefined;
746
+ }, {}, {}>;
537
747
  isEditable: import("drizzle-orm/mysql-core").MySqlColumn<{
538
748
  name: "is_editable";
539
749
  tableName: "roles";
@@ -543,9 +753,14 @@ export declare const roles: import("drizzle-orm/mysql-core").MySqlTableWithColum
543
753
  driverParam: number | boolean;
544
754
  notNull: true;
545
755
  hasDefault: true;
756
+ isPrimaryKey: false;
757
+ isAutoincrement: false;
758
+ hasRuntimeDefault: false;
546
759
  enumValues: undefined;
547
760
  baseColumn: never;
548
- }, object>;
761
+ identity: undefined;
762
+ generated: undefined;
763
+ }, {}, {}>;
549
764
  companyId: import("drizzle-orm/mysql-core").MySqlColumn<{
550
765
  name: "company_id";
551
766
  tableName: "roles";
@@ -555,9 +770,14 @@ export declare const roles: import("drizzle-orm/mysql-core").MySqlTableWithColum
555
770
  driverParam: string | number;
556
771
  notNull: false;
557
772
  hasDefault: false;
773
+ isPrimaryKey: false;
774
+ isAutoincrement: false;
775
+ hasRuntimeDefault: false;
558
776
  enumValues: [string, ...string[]];
559
777
  baseColumn: never;
560
- }, object>;
778
+ identity: undefined;
779
+ generated: undefined;
780
+ }, {}, {}>;
561
781
  createdAt: import("drizzle-orm/mysql-core").MySqlColumn<{
562
782
  name: "created_at";
563
783
  tableName: "roles";
@@ -567,9 +787,14 @@ export declare const roles: import("drizzle-orm/mysql-core").MySqlTableWithColum
567
787
  driverParam: string | number;
568
788
  notNull: false;
569
789
  hasDefault: true;
790
+ isPrimaryKey: false;
791
+ isAutoincrement: false;
792
+ hasRuntimeDefault: false;
570
793
  enumValues: undefined;
571
794
  baseColumn: never;
572
- }, object>;
795
+ identity: undefined;
796
+ generated: undefined;
797
+ }, {}, {}>;
573
798
  updatedAt: import("drizzle-orm/mysql-core").MySqlColumn<{
574
799
  name: "updated_at";
575
800
  tableName: "roles";
@@ -579,9 +804,14 @@ export declare const roles: import("drizzle-orm/mysql-core").MySqlTableWithColum
579
804
  driverParam: string | number;
580
805
  notNull: false;
581
806
  hasDefault: true;
807
+ isPrimaryKey: false;
808
+ isAutoincrement: false;
809
+ hasRuntimeDefault: false;
582
810
  enumValues: undefined;
583
811
  baseColumn: never;
584
- }, object>;
812
+ identity: undefined;
813
+ generated: undefined;
814
+ }, {}, {}>;
585
815
  };
586
816
  dialect: "mysql";
587
817
  }>;
@@ -600,9 +830,14 @@ export declare const rolePermissions: import("drizzle-orm/mysql-core").MySqlTabl
600
830
  driverParam: string | number;
601
831
  notNull: true;
602
832
  hasDefault: false;
833
+ isPrimaryKey: true;
834
+ isAutoincrement: false;
835
+ hasRuntimeDefault: false;
603
836
  enumValues: [string, ...string[]];
604
837
  baseColumn: never;
605
- }, object>;
838
+ identity: undefined;
839
+ generated: undefined;
840
+ }, {}, {}>;
606
841
  roleId: import("drizzle-orm/mysql-core").MySqlColumn<{
607
842
  name: "role_id";
608
843
  tableName: "role_permissions";
@@ -612,9 +847,14 @@ export declare const rolePermissions: import("drizzle-orm/mysql-core").MySqlTabl
612
847
  driverParam: string | number;
613
848
  notNull: true;
614
849
  hasDefault: false;
850
+ isPrimaryKey: false;
851
+ isAutoincrement: false;
852
+ hasRuntimeDefault: false;
615
853
  enumValues: [string, ...string[]];
616
854
  baseColumn: never;
617
- }, object>;
855
+ identity: undefined;
856
+ generated: undefined;
857
+ }, {}, {}>;
618
858
  permissionId: import("drizzle-orm/mysql-core").MySqlColumn<{
619
859
  name: "permission_id";
620
860
  tableName: "role_permissions";
@@ -624,9 +864,14 @@ export declare const rolePermissions: import("drizzle-orm/mysql-core").MySqlTabl
624
864
  driverParam: string | number;
625
865
  notNull: true;
626
866
  hasDefault: false;
867
+ isPrimaryKey: false;
868
+ isAutoincrement: false;
869
+ hasRuntimeDefault: false;
627
870
  enumValues: [string, ...string[]];
628
871
  baseColumn: never;
629
- }, object>;
872
+ identity: undefined;
873
+ generated: undefined;
874
+ }, {}, {}>;
630
875
  };
631
876
  dialect: "mysql";
632
877
  }>;
@@ -643,9 +888,14 @@ export declare const apiKeys: import("drizzle-orm/mysql-core").MySqlTableWithCol
643
888
  driverParam: string | number;
644
889
  notNull: true;
645
890
  hasDefault: false;
891
+ isPrimaryKey: true;
892
+ isAutoincrement: false;
893
+ hasRuntimeDefault: false;
646
894
  enumValues: [string, ...string[]];
647
895
  baseColumn: never;
648
- }, object>;
896
+ identity: undefined;
897
+ generated: undefined;
898
+ }, {}, {}>;
649
899
  companyId: import("drizzle-orm/mysql-core").MySqlColumn<{
650
900
  name: "company_id";
651
901
  tableName: "company_api_keys";
@@ -655,9 +905,14 @@ export declare const apiKeys: import("drizzle-orm/mysql-core").MySqlTableWithCol
655
905
  driverParam: string | number;
656
906
  notNull: true;
657
907
  hasDefault: false;
908
+ isPrimaryKey: false;
909
+ isAutoincrement: false;
910
+ hasRuntimeDefault: false;
658
911
  enumValues: [string, ...string[]];
659
912
  baseColumn: never;
660
- }, object>;
913
+ identity: undefined;
914
+ generated: undefined;
915
+ }, {}, {}>;
661
916
  name: import("drizzle-orm/mysql-core").MySqlColumn<{
662
917
  name: "name";
663
918
  tableName: "company_api_keys";
@@ -667,9 +922,14 @@ export declare const apiKeys: import("drizzle-orm/mysql-core").MySqlTableWithCol
667
922
  driverParam: string | number;
668
923
  notNull: true;
669
924
  hasDefault: false;
925
+ isPrimaryKey: false;
926
+ isAutoincrement: false;
927
+ hasRuntimeDefault: false;
670
928
  enumValues: [string, ...string[]];
671
929
  baseColumn: never;
672
- }, object>;
930
+ identity: undefined;
931
+ generated: undefined;
932
+ }, {}, {}>;
673
933
  clientId: import("drizzle-orm/mysql-core").MySqlColumn<{
674
934
  name: "client_id";
675
935
  tableName: "company_api_keys";
@@ -679,9 +939,14 @@ export declare const apiKeys: import("drizzle-orm/mysql-core").MySqlTableWithCol
679
939
  driverParam: string | number;
680
940
  notNull: true;
681
941
  hasDefault: false;
942
+ isPrimaryKey: false;
943
+ isAutoincrement: false;
944
+ hasRuntimeDefault: false;
682
945
  enumValues: [string, ...string[]];
683
946
  baseColumn: never;
684
- }, object>;
947
+ identity: undefined;
948
+ generated: undefined;
949
+ }, {}, {}>;
685
950
  clientSecretHash: import("drizzle-orm/mysql-core").MySqlColumn<{
686
951
  name: "client_secret_hash";
687
952
  tableName: "company_api_keys";
@@ -691,9 +956,14 @@ export declare const apiKeys: import("drizzle-orm/mysql-core").MySqlTableWithCol
691
956
  driverParam: string | number;
692
957
  notNull: true;
693
958
  hasDefault: false;
959
+ isPrimaryKey: false;
960
+ isAutoincrement: false;
961
+ hasRuntimeDefault: false;
694
962
  enumValues: [string, ...string[]];
695
963
  baseColumn: never;
696
- }, object>;
964
+ identity: undefined;
965
+ generated: undefined;
966
+ }, {}, {}>;
697
967
  clientSecretPrefix: import("drizzle-orm/mysql-core").MySqlColumn<{
698
968
  name: "client_secret_prefix";
699
969
  tableName: "company_api_keys";
@@ -703,9 +973,14 @@ export declare const apiKeys: import("drizzle-orm/mysql-core").MySqlTableWithCol
703
973
  driverParam: string | number;
704
974
  notNull: true;
705
975
  hasDefault: false;
976
+ isPrimaryKey: false;
977
+ isAutoincrement: false;
978
+ hasRuntimeDefault: false;
706
979
  enumValues: [string, ...string[]];
707
980
  baseColumn: never;
708
- }, object>;
981
+ identity: undefined;
982
+ generated: undefined;
983
+ }, {}, {}>;
709
984
  scopes: import("drizzle-orm/mysql-core").MySqlColumn<{
710
985
  name: "scopes";
711
986
  tableName: "company_api_keys";
@@ -715,9 +990,14 @@ export declare const apiKeys: import("drizzle-orm/mysql-core").MySqlTableWithCol
715
990
  driverParam: string;
716
991
  notNull: false;
717
992
  hasDefault: false;
993
+ isPrimaryKey: false;
994
+ isAutoincrement: false;
995
+ hasRuntimeDefault: false;
718
996
  enumValues: undefined;
719
997
  baseColumn: never;
720
- }, object>;
998
+ identity: undefined;
999
+ generated: undefined;
1000
+ }, {}, {}>;
721
1001
  rateLimitPerMinute: import("drizzle-orm/mysql-core").MySqlColumn<{
722
1002
  name: "rate_limit_per_minute";
723
1003
  tableName: "company_api_keys";
@@ -727,9 +1007,14 @@ export declare const apiKeys: import("drizzle-orm/mysql-core").MySqlTableWithCol
727
1007
  driverParam: string | number;
728
1008
  notNull: false;
729
1009
  hasDefault: true;
1010
+ isPrimaryKey: false;
1011
+ isAutoincrement: false;
1012
+ hasRuntimeDefault: false;
730
1013
  enumValues: undefined;
731
1014
  baseColumn: never;
732
- }, object>;
1015
+ identity: undefined;
1016
+ generated: undefined;
1017
+ }, {}, {}>;
733
1018
  isActive: import("drizzle-orm/mysql-core").MySqlColumn<{
734
1019
  name: "is_active";
735
1020
  tableName: "company_api_keys";
@@ -739,9 +1024,14 @@ export declare const apiKeys: import("drizzle-orm/mysql-core").MySqlTableWithCol
739
1024
  driverParam: number | boolean;
740
1025
  notNull: true;
741
1026
  hasDefault: true;
1027
+ isPrimaryKey: false;
1028
+ isAutoincrement: false;
1029
+ hasRuntimeDefault: false;
742
1030
  enumValues: undefined;
743
1031
  baseColumn: never;
744
- }, object>;
1032
+ identity: undefined;
1033
+ generated: undefined;
1034
+ }, {}, {}>;
745
1035
  isTestKey: import("drizzle-orm/mysql-core").MySqlColumn<{
746
1036
  name: "is_test_key";
747
1037
  tableName: "company_api_keys";
@@ -751,9 +1041,14 @@ export declare const apiKeys: import("drizzle-orm/mysql-core").MySqlTableWithCol
751
1041
  driverParam: number | boolean;
752
1042
  notNull: true;
753
1043
  hasDefault: true;
1044
+ isPrimaryKey: false;
1045
+ isAutoincrement: false;
1046
+ hasRuntimeDefault: false;
754
1047
  enumValues: undefined;
755
1048
  baseColumn: never;
756
- }, object>;
1049
+ identity: undefined;
1050
+ generated: undefined;
1051
+ }, {}, {}>;
757
1052
  expiresAt: import("drizzle-orm/mysql-core").MySqlColumn<{
758
1053
  name: "expires_at";
759
1054
  tableName: "company_api_keys";
@@ -763,9 +1058,14 @@ export declare const apiKeys: import("drizzle-orm/mysql-core").MySqlTableWithCol
763
1058
  driverParam: string | number;
764
1059
  notNull: false;
765
1060
  hasDefault: false;
1061
+ isPrimaryKey: false;
1062
+ isAutoincrement: false;
1063
+ hasRuntimeDefault: false;
766
1064
  enumValues: undefined;
767
1065
  baseColumn: never;
768
- }, object>;
1066
+ identity: undefined;
1067
+ generated: undefined;
1068
+ }, {}, {}>;
769
1069
  lastUsedAt: import("drizzle-orm/mysql-core").MySqlColumn<{
770
1070
  name: "last_used_at";
771
1071
  tableName: "company_api_keys";
@@ -775,9 +1075,14 @@ export declare const apiKeys: import("drizzle-orm/mysql-core").MySqlTableWithCol
775
1075
  driverParam: string | number;
776
1076
  notNull: false;
777
1077
  hasDefault: false;
1078
+ isPrimaryKey: false;
1079
+ isAutoincrement: false;
1080
+ hasRuntimeDefault: false;
778
1081
  enumValues: undefined;
779
1082
  baseColumn: never;
780
- }, object>;
1083
+ identity: undefined;
1084
+ generated: undefined;
1085
+ }, {}, {}>;
781
1086
  createdAt: import("drizzle-orm/mysql-core").MySqlColumn<{
782
1087
  name: "created_at";
783
1088
  tableName: "company_api_keys";
@@ -787,9 +1092,14 @@ export declare const apiKeys: import("drizzle-orm/mysql-core").MySqlTableWithCol
787
1092
  driverParam: string | number;
788
1093
  notNull: false;
789
1094
  hasDefault: true;
1095
+ isPrimaryKey: false;
1096
+ isAutoincrement: false;
1097
+ hasRuntimeDefault: false;
790
1098
  enumValues: undefined;
791
1099
  baseColumn: never;
792
- }, object>;
1100
+ identity: undefined;
1101
+ generated: undefined;
1102
+ }, {}, {}>;
793
1103
  updatedAt: import("drizzle-orm/mysql-core").MySqlColumn<{
794
1104
  name: "updated_at";
795
1105
  tableName: "company_api_keys";
@@ -799,9 +1109,14 @@ export declare const apiKeys: import("drizzle-orm/mysql-core").MySqlTableWithCol
799
1109
  driverParam: string | number;
800
1110
  notNull: false;
801
1111
  hasDefault: true;
1112
+ isPrimaryKey: false;
1113
+ isAutoincrement: false;
1114
+ hasRuntimeDefault: false;
802
1115
  enumValues: undefined;
803
1116
  baseColumn: never;
804
- }, object>;
1117
+ identity: undefined;
1118
+ generated: undefined;
1119
+ }, {}, {}>;
805
1120
  };
806
1121
  dialect: "mysql";
807
1122
  }>;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/database/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/database/index.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"permission.guard.d.ts","sourceRoot":"","sources":["../../src/nestjs/permission.guard.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,WAAW,EACX,gBAAgB,EAEjB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AASzC;;;GAGG;AACH,qBACa,eAAgB,YAAW,WAAW;IACrC,OAAO,CAAC,SAAS;gBAAT,SAAS,EAAE,SAAS;IAExC,WAAW,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO;CAoDhD"}
1
+ {"version":3,"file":"permission.guard.d.ts","sourceRoot":"","sources":["../../src/nestjs/permission.guard.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,WAAW,EACX,gBAAgB,EAEjB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AASzC;;;GAGG;AACH,qBACa,eAAgB,YAAW,WAAW;IACrC,OAAO,CAAC,SAAS;gBAAT,SAAS,EAAE,SAAS;IAExC,WAAW,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO;CAgEhD"}
@@ -36,23 +36,32 @@ let PermissionGuard = class PermissionGuard {
36
36
  // Super admins bypass all permission checks
37
37
  if (user.isSuperAdmin)
38
38
  return true;
39
- // Check roles
39
+ // M2M / gateway-authenticated clients: the gateway already verified the JWT
40
+ // and injected headers. Requiring human roles on top of scoped permissions
41
+ // is overly restrictive for API access.
42
+ const isGatewayAuth = request.headers?.['x-gateway-auth'] === 'verified';
43
+ // Check permissions first — they are the primary authorization mechanism
44
+ const requiredPermissions = this.reflector.getAllAndOverride(PERMISSIONS_KEY, [context.getHandler(), context.getClass()]);
45
+ const requireAll = this.reflector.getAllAndOverride(REQUIRE_ALL_KEY, [context.getHandler(), context.getClass()]);
46
+ let hasRequiredPermissions = true;
47
+ if (requiredPermissions?.length) {
48
+ hasRequiredPermissions = requireAll
49
+ ? requiredPermissions.every((p) => user.permissions.includes(p))
50
+ : requiredPermissions.some((p) => user.permissions.includes(p));
51
+ }
52
+ // Check roles — only enforced for direct (non-gateway) human users.
53
+ // Gateway-authenticated clients that hold the required permissions
54
+ // bypass role checks. This allows M2M API keys with scoped permissions
55
+ // (e.g. ussd.subscribers:read) to work without a human role assignment.
40
56
  const requiredRoles = this.reflector.getAllAndOverride(ROLES_KEY, [context.getHandler(), context.getClass()]);
41
57
  if (requiredRoles?.length) {
42
58
  const hasRole = requiredRoles.some((role) => user.roles.includes(role));
43
- if (!hasRole) {
59
+ // Gateway clients with the right permissions skip the role gate
60
+ if (!hasRole && !(isGatewayAuth && hasRequiredPermissions)) {
44
61
  throw new ForbiddenException('Insufficient role');
45
62
  }
46
63
  }
47
- // Check permissions
48
- const requiredPermissions = this.reflector.getAllAndOverride(PERMISSIONS_KEY, [context.getHandler(), context.getClass()]);
49
- if (!requiredPermissions?.length)
50
- return true;
51
- const requireAll = this.reflector.getAllAndOverride(REQUIRE_ALL_KEY, [context.getHandler(), context.getClass()]);
52
- const hasPermission = requireAll
53
- ? requiredPermissions.every((p) => user.permissions.includes(p))
54
- : requiredPermissions.some((p) => user.permissions.includes(p));
55
- if (!hasPermission) {
64
+ if (requiredPermissions?.length && !hasRequiredPermissions) {
56
65
  throw new ForbiddenException('Insufficient permissions');
57
66
  }
58
67
  return true;
@@ -1 +1 @@
1
- {"version":3,"file":"permission.guard.js","sourceRoot":"","sources":["../../src/nestjs/permission.guard.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EACL,UAAU,EAGV,kBAAkB,GACnB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EACL,eAAe,EACf,eAAe,EACf,SAAS,GACV,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAGhD;;;GAGG;AAEI,IAAM,eAAe,GAArB,MAAM,eAAe;IACN;IAApB,YAAoB,SAAoB;QAApB,cAAS,GAAT,SAAS,CAAW;IAAG,CAAC;IAE5C,WAAW,CAAC,OAAyB;QACnC,0CAA0C;QAC1C,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAU,aAAa,EAAE;YACxE,OAAO,CAAC,UAAU,EAAE;YACpB,OAAO,CAAC,QAAQ,EAAE;SACnB,CAAC,CAAC;QACH,IAAI,QAAQ;YAAE,OAAO,IAAI,CAAC;QAE1B,MAAM,OAAO,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,UAAU,EAAE,CAAC;QACpD,MAAM,IAAI,GAA0B,OAAO,CAAC,IAAI,CAAC;QAEjD,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,IAAI,kBAAkB,CAAC,wBAAwB,CAAC,CAAC;QACzD,CAAC;QAED,4CAA4C;QAC5C,IAAI,IAAI,CAAC,YAAY;YAAE,OAAO,IAAI,CAAC;QAEnC,cAAc;QACd,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,iBAAiB,CACpD,SAAS,EACT,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,CAC3C,CAAC;QACF,IAAI,aAAa,EAAE,MAAM,EAAE,CAAC;YAC1B,MAAM,OAAO,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC,IAAY,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;YAChF,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,MAAM,IAAI,kBAAkB,CAAC,mBAAmB,CAAC,CAAC;YACpD,CAAC;QACH,CAAC;QAED,oBAAoB;QACpB,MAAM,mBAAmB,GAAG,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAC1D,eAAe,EACf,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,CAC3C,CAAC;QACF,IAAI,CAAC,mBAAmB,EAAE,MAAM;YAAE,OAAO,IAAI,CAAC;QAE9C,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,iBAAiB,CACjD,eAAe,EACf,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,CAC3C,CAAC;QAEF,MAAM,aAAa,GAAG,UAAU;YAC9B,CAAC,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YACxE,CAAC,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QAE1E,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,MAAM,IAAI,kBAAkB,CAAC,0BAA0B,CAAC,CAAC;QAC3D,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;CACF,CAAA;AAvDY,eAAe;IAD3B,UAAU,EAAE;qCAEoB,SAAS;GAD7B,eAAe,CAuD3B"}
1
+ {"version":3,"file":"permission.guard.js","sourceRoot":"","sources":["../../src/nestjs/permission.guard.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@heavybit/pendoadmin-shared-lib",
3
- "version": "1.3.0",
3
+ "version": "1.3.1",
4
4
  "description": "Shared library for PendoAdmin microservices",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -91,13 +91,13 @@
91
91
  },
92
92
  "dependencies": {
93
93
  "amqplib": "^0.10.4",
94
- "bcrypt": "^5.1.1",
94
+ "bcrypt": "^6.0.0",
95
95
  "google-libphonenumber": "^3.2.38",
96
96
  "jsonwebtoken": "^9.0.2",
97
97
  "knex": "^3.1.0",
98
98
  "mysql2": "^3.11.0",
99
99
  "rate-limiter-flexible": "^5.0.0",
100
- "uuid": "^10.0.0",
100
+ "uuid": "^14.0.1",
101
101
  "winston": "^3.14.0",
102
102
  "winston-daily-rotate-file": "^5.0.0",
103
103
  "zod": "^3.23.0"
@@ -113,7 +113,7 @@
113
113
  "@types/jsonwebtoken": "^9.0.7",
114
114
  "@types/node": "^20.14.0",
115
115
  "@types/uuid": "^10.0.0",
116
- "drizzle-orm": "^0.30.0",
116
+ "drizzle-orm": "^0.45.2",
117
117
  "express": "^5.2.1",
118
118
  "ioredis": "^5.4.0",
119
119
  "reflect-metadata": "^0.2.2",
@@ -14,7 +14,7 @@ export const baseEnvSchema = z.object({
14
14
  DB_PASSWORD: z.string().default(''),
15
15
  DB_NAME: z.string(),
16
16
  JWT_SECRET: z.string().min(16),
17
- JWT_ACCESS_EXPIRY: z.string().default('24h'),
17
+ JWT_ACCESS_EXPIRY: z.string().default('2h'),
18
18
  JWT_REFRESH_EXPIRY: z.string().default('7d'),
19
19
  RABBITMQ_URL: z.string().url().default('amqp://localhost:5672'),
20
20
  REDIS_URL: z.string().default('redis://localhost:6379'),
@@ -39,35 +39,47 @@ export class PermissionGuard implements CanActivate {
39
39
  // Super admins bypass all permission checks
40
40
  if (user.isSuperAdmin) return true;
41
41
 
42
- // Check roles
43
- const requiredRoles = this.reflector.getAllAndOverride<string[]>(
44
- ROLES_KEY,
45
- [context.getHandler(), context.getClass()]
46
- );
47
- if (requiredRoles?.length) {
48
- const hasRole = requiredRoles.some((role: string) => user.roles.includes(role));
49
- if (!hasRole) {
50
- throw new ForbiddenException('Insufficient role');
51
- }
52
- }
42
+ // M2M / gateway-authenticated clients: the gateway already verified the JWT
43
+ // and injected headers. Requiring human roles on top of scoped permissions
44
+ // is overly restrictive for API access.
45
+ const isGatewayAuth =
46
+ request.headers?.['x-gateway-auth'] === 'verified';
53
47
 
54
- // Check permissions
48
+ // Check permissions first — they are the primary authorization mechanism
55
49
  const requiredPermissions = this.reflector.getAllAndOverride<string[]>(
56
50
  PERMISSIONS_KEY,
57
51
  [context.getHandler(), context.getClass()]
58
52
  );
59
- if (!requiredPermissions?.length) return true;
60
53
 
61
54
  const requireAll = this.reflector.getAllAndOverride<boolean>(
62
55
  REQUIRE_ALL_KEY,
63
56
  [context.getHandler(), context.getClass()]
64
57
  );
65
58
 
66
- const hasPermission = requireAll
67
- ? requiredPermissions.every((p: string) => user.permissions.includes(p))
68
- : requiredPermissions.some((p: string) => user.permissions.includes(p));
59
+ let hasRequiredPermissions = true;
60
+ if (requiredPermissions?.length) {
61
+ hasRequiredPermissions = requireAll
62
+ ? requiredPermissions.every((p: string) => user.permissions.includes(p))
63
+ : requiredPermissions.some((p: string) => user.permissions.includes(p));
64
+ }
65
+
66
+ // Check roles — only enforced for direct (non-gateway) human users.
67
+ // Gateway-authenticated clients that hold the required permissions
68
+ // bypass role checks. This allows M2M API keys with scoped permissions
69
+ // (e.g. ussd.subscribers:read) to work without a human role assignment.
70
+ const requiredRoles = this.reflector.getAllAndOverride<string[]>(
71
+ ROLES_KEY,
72
+ [context.getHandler(), context.getClass()]
73
+ );
74
+ if (requiredRoles?.length) {
75
+ const hasRole = requiredRoles.some((role: string) => user.roles.includes(role));
76
+ // Gateway clients with the right permissions skip the role gate
77
+ if (!hasRole && !(isGatewayAuth && hasRequiredPermissions)) {
78
+ throw new ForbiddenException('Insufficient role');
79
+ }
80
+ }
69
81
 
70
- if (!hasPermission) {
82
+ if (requiredPermissions?.length && !hasRequiredPermissions) {
71
83
  throw new ForbiddenException('Insufficient permissions');
72
84
  }
73
85