exguard-backend 1.0.11 → 1.0.13
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.
- package/package.json +1 -1
- package/scripts/setup-nestjs.cjs +39 -2
package/package.json
CHANGED
package/scripts/setup-nestjs.cjs
CHANGED
|
@@ -201,6 +201,17 @@ export class ExGuardNestGuard implements CanActivate {
|
|
|
201
201
|
@Injectable()
|
|
202
202
|
export class ExGuardPermissionGuard extends ExGuardNestGuard {
|
|
203
203
|
public async checkPermissions(context: GuardContext) {
|
|
204
|
+
// Check if user has any read permission (more flexible)
|
|
205
|
+
const user = context.request.user;
|
|
206
|
+
const hasReadPermission = user?.permissions?.some(perm =>
|
|
207
|
+
perm.includes('read') || perm === 'read'
|
|
208
|
+
);
|
|
209
|
+
|
|
210
|
+
if (hasReadPermission) {
|
|
211
|
+
return { allowed: true, user };
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
// Fallback to specific 'read' permission
|
|
204
215
|
return this.exGuard.requirePermissions(context, ['read']);
|
|
205
216
|
}
|
|
206
217
|
}
|
|
@@ -343,7 +354,8 @@ function createExampleController() {
|
|
|
343
354
|
Post,
|
|
344
355
|
Body,
|
|
345
356
|
UseGuards,
|
|
346
|
-
Request
|
|
357
|
+
Request,
|
|
358
|
+
ForbiddenException
|
|
347
359
|
} from '@nestjs/common';
|
|
348
360
|
import {
|
|
349
361
|
RequirePermissions,
|
|
@@ -363,7 +375,18 @@ export class EventsController {
|
|
|
363
375
|
@Get()
|
|
364
376
|
async getEvents(@Request() req) {
|
|
365
377
|
console.log('User accessing events:', req.user);
|
|
366
|
-
|
|
378
|
+
console.log('User permissions:', req.user?.permissions);
|
|
379
|
+
|
|
380
|
+
return {
|
|
381
|
+
success: true,
|
|
382
|
+
data: [],
|
|
383
|
+
user: {
|
|
384
|
+
id: req.user?.id,
|
|
385
|
+
permissions: req.user?.permissions,
|
|
386
|
+
roles: req.user?.roles
|
|
387
|
+
},
|
|
388
|
+
message: 'Events retrieved successfully'
|
|
389
|
+
};
|
|
367
390
|
}
|
|
368
391
|
|
|
369
392
|
@Post()
|
|
@@ -373,6 +396,20 @@ export class EventsController {
|
|
|
373
396
|
return { success: true, data: createEventDto };
|
|
374
397
|
}
|
|
375
398
|
|
|
399
|
+
@Get('debug')
|
|
400
|
+
async getDebugInfo(@Request() req) {
|
|
401
|
+
// Debug endpoint to check user permissions
|
|
402
|
+
return {
|
|
403
|
+
success: true,
|
|
404
|
+
user: req.user,
|
|
405
|
+
permissions: req.user?.permissions || [],
|
|
406
|
+
roles: req.user?.roles || [],
|
|
407
|
+
modules: req.user?.modules || [],
|
|
408
|
+
fieldOffices: req.user?.fieldOffices || [],
|
|
409
|
+
message: 'Debug information'
|
|
410
|
+
};
|
|
411
|
+
}
|
|
412
|
+
|
|
376
413
|
@Get('admin')
|
|
377
414
|
@RequireRoles(['Admin']) // Using decorator
|
|
378
415
|
@UseGuards(createRoleGuard(['Admin']))
|