Skip to content

Commit 8097b11

Browse files
committed
fix: issue where additional permissions are not added to the JWT
1 parent 84853d4 commit 8097b11

File tree

1 file changed

+11
-1
lines changed

1 file changed

+11
-1
lines changed

apps/api/src/vendor/configured.auth.module.ts

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import type { Model } from '@douglasneuroinformatics/libnest';
33
import { Module } from '@nestjs/common';
44
import { $LoginCredentials } from '@opendatacapture/schemas/auth';
55
import type { JwtPayload } from '@opendatacapture/schemas/auth';
6+
import { $Permissions } from '@opendatacapture/schemas/core';
67
import { $Group } from '@opendatacapture/schemas/group';
78
import { $BasePermissionLevel } from '@opendatacapture/schemas/user';
89
import { z } from 'zod';
@@ -13,7 +14,7 @@ import { z } from 'zod';
1314
inject: [getModelToken('User')],
1415
useFactory: (userModel: Model<'User'>) => {
1516
return {
16-
defineAbility: (ability, payload) => {
17+
defineAbility: (ability, payload, metadata) => {
1718
const groupIds = payload.groups.map((group) => group.id);
1819
switch (payload.basePermissionLevel) {
1920
case 'ADMIN':
@@ -41,9 +42,15 @@ import { z } from 'zod';
4142
ability.can('read', 'Subject', { groupIds: { hasSome: groupIds } });
4243
break;
4344
}
45+
metadata.additionalPermissions?.forEach(({ action, subject }) => {
46+
ability.can(action, subject);
47+
});
4448
},
4549
schemas: {
4650
loginCredentials: $LoginCredentials,
51+
metadata: z.object({
52+
additionalPermissions: $Permissions.optional()
53+
}),
4754
tokenPayload: z.object({
4855
basePermissionLevel: $BasePermissionLevel.nullable(),
4956
firstName: z.string().nullable(),
@@ -62,6 +69,9 @@ import { z } from 'zod';
6269
}
6370
return {
6471
hashedPassword: user.hashedPassword,
72+
metadata: {
73+
additionalPermissions: user.additionalPermissions
74+
},
6575
tokenPayload: {
6676
basePermissionLevel: user.basePermissionLevel,
6777
firstName: user.firstName,

0 commit comments

Comments
 (0)