@ahksolution/permissions-sdk 1.1.0 → 1.1.2
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/dist/client/permissions-client.module.d.ts.map +1 -1
- package/dist/client/permissions-client.module.js +20 -4
- package/dist/client/permissions-client.module.js.map +1 -1
- package/dist/client/permissions-grpc.client.d.ts.map +1 -1
- package/dist/client/permissions-grpc.client.js +90 -47
- package/dist/client/permissions-grpc.client.js.map +1 -1
- package/dist/guards/jwt-auth.guard.d.ts.map +1 -1
- package/dist/guards/jwt-auth.guard.js +20 -8
- package/dist/guards/jwt-auth.guard.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"permissions-client.module.d.ts","sourceRoot":"","sources":["../../src/client/permissions-client.module.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAU,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"permissions-client.module.d.ts","sourceRoot":"","sources":["../../src/client/permissions-client.module.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAU,MAAM,gBAAgB,CAAC;AAavD;;GAEG;AACH,MAAM,WAAW,8BAA8B;IAC7C;;;OAGG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IAEb;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,mCAAmC;IAClD;;OAEG;IACH,OAAO,CAAC,EAAE,aAAa,CAAC,SAAS,CAAC,CAAC;IAEnC;;OAEG;IACH,UAAU,EAAE,CACV,GAAG,IAAI,EAAE,OAAO,EAAE,KACf,8BAA8B,GAAG,OAAO,CAAC,8BAA8B,CAAC,CAAC;IAE9E;;OAEG;IACH,MAAM,CAAC,EAAE,OAAO,EAAE,CAAC;CACpB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,qBACa,uBAAuB;IAClC;;OAEG;IACH,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,8BAA8B,GAAG,aAAa;IA+BxE;;OAEG;IACH,MAAM,CAAC,aAAa,CAAC,OAAO,EAAE,mCAAmC,GAAG,aAAa;CAsClF"}
|
|
@@ -12,6 +12,8 @@ const common_1 = require("@nestjs/common");
|
|
|
12
12
|
const microservices_1 = require("@nestjs/microservices");
|
|
13
13
|
const path_1 = require("path");
|
|
14
14
|
const constants_1 = require("../constants");
|
|
15
|
+
const jwt_auth_guard_1 = require("../guards/jwt-auth.guard");
|
|
16
|
+
const permissions_guard_1 = require("../guards/permissions.guard");
|
|
15
17
|
const permissions_grpc_client_1 = require("./permissions-grpc.client");
|
|
16
18
|
/**
|
|
17
19
|
* NestJS module for integrating the Permissions gRPC client
|
|
@@ -61,12 +63,19 @@ let PermissionsClientModule = PermissionsClientModule_1 = class PermissionsClien
|
|
|
61
63
|
url,
|
|
62
64
|
package: constants_1.PERMISSIONS_PACKAGE_NAME,
|
|
63
65
|
protoPath,
|
|
66
|
+
loader: {
|
|
67
|
+
keepCase: false, // Convert snake_case to camelCase
|
|
68
|
+
longs: String,
|
|
69
|
+
enums: String,
|
|
70
|
+
defaults: true,
|
|
71
|
+
oneofs: true,
|
|
72
|
+
},
|
|
64
73
|
},
|
|
65
74
|
},
|
|
66
75
|
]),
|
|
67
76
|
],
|
|
68
|
-
providers: [permissions_grpc_client_1.PermissionsGrpcClient],
|
|
69
|
-
exports: [permissions_grpc_client_1.PermissionsGrpcClient],
|
|
77
|
+
providers: [permissions_grpc_client_1.PermissionsGrpcClient, jwt_auth_guard_1.JwtAuthGuard, permissions_guard_1.PermissionsGuard],
|
|
78
|
+
exports: [permissions_grpc_client_1.PermissionsGrpcClient, jwt_auth_guard_1.JwtAuthGuard, permissions_guard_1.PermissionsGuard],
|
|
70
79
|
};
|
|
71
80
|
}
|
|
72
81
|
/**
|
|
@@ -90,6 +99,13 @@ let PermissionsClientModule = PermissionsClientModule_1 = class PermissionsClien
|
|
|
90
99
|
url,
|
|
91
100
|
package: constants_1.PERMISSIONS_PACKAGE_NAME,
|
|
92
101
|
protoPath,
|
|
102
|
+
loader: {
|
|
103
|
+
keepCase: false, // Convert snake_case to camelCase
|
|
104
|
+
longs: String,
|
|
105
|
+
enums: String,
|
|
106
|
+
defaults: true,
|
|
107
|
+
oneofs: true,
|
|
108
|
+
},
|
|
93
109
|
},
|
|
94
110
|
};
|
|
95
111
|
},
|
|
@@ -97,8 +113,8 @@ let PermissionsClientModule = PermissionsClientModule_1 = class PermissionsClien
|
|
|
97
113
|
},
|
|
98
114
|
]),
|
|
99
115
|
],
|
|
100
|
-
providers: [permissions_grpc_client_1.PermissionsGrpcClient],
|
|
101
|
-
exports: [permissions_grpc_client_1.PermissionsGrpcClient],
|
|
116
|
+
providers: [permissions_grpc_client_1.PermissionsGrpcClient, jwt_auth_guard_1.JwtAuthGuard, permissions_guard_1.PermissionsGuard],
|
|
117
|
+
exports: [permissions_grpc_client_1.PermissionsGrpcClient, jwt_auth_guard_1.JwtAuthGuard, permissions_guard_1.PermissionsGuard],
|
|
102
118
|
};
|
|
103
119
|
}
|
|
104
120
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"permissions-client.module.js","sourceRoot":"","sources":["../../src/client/permissions-client.module.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,2CAAuD;AACvD,yDAAiE;AACjE,+BAA4B;AAE5B,4CAIsB;AACtB,uEAAkE;AAyClE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEI,IAAM,uBAAuB,+BAA7B,MAAM,uBAAuB;IAClC;;OAEG;IACH,MAAM,CAAC,QAAQ,CAAC,OAAwC;QACtD,MAAM,GAAG,GAAG,OAAO,EAAE,GAAG,IAAI,gCAAoB,CAAC,GAAG,CAAC;QACrD,MAAM,SAAS,GAAG,OAAO,EAAE,SAAS,IAAI,IAAA,WAAI,EAAC,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,mBAAmB,CAAC,CAAC;QAE5F,OAAO;YACL,MAAM,EAAE,yBAAuB;YAC/B,OAAO,EAAE;gBACP,6BAAa,CAAC,QAAQ,CAAC;oBACrB;wBACE,IAAI,EAAE,mCAAuB;wBAC7B,SAAS,EAAE,yBAAS,CAAC,IAAI;wBACzB,OAAO,EAAE;4BACP,GAAG;4BACH,OAAO,EAAE,oCAAwB;4BACjC,SAAS;
|
|
1
|
+
{"version":3,"file":"permissions-client.module.js","sourceRoot":"","sources":["../../src/client/permissions-client.module.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,2CAAuD;AACvD,yDAAiE;AACjE,+BAA4B;AAE5B,4CAIsB;AACtB,6DAAwD;AACxD,mEAA+D;AAC/D,uEAAkE;AAyClE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEI,IAAM,uBAAuB,+BAA7B,MAAM,uBAAuB;IAClC;;OAEG;IACH,MAAM,CAAC,QAAQ,CAAC,OAAwC;QACtD,MAAM,GAAG,GAAG,OAAO,EAAE,GAAG,IAAI,gCAAoB,CAAC,GAAG,CAAC;QACrD,MAAM,SAAS,GAAG,OAAO,EAAE,SAAS,IAAI,IAAA,WAAI,EAAC,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,mBAAmB,CAAC,CAAC;QAE5F,OAAO;YACL,MAAM,EAAE,yBAAuB;YAC/B,OAAO,EAAE;gBACP,6BAAa,CAAC,QAAQ,CAAC;oBACrB;wBACE,IAAI,EAAE,mCAAuB;wBAC7B,SAAS,EAAE,yBAAS,CAAC,IAAI;wBACzB,OAAO,EAAE;4BACP,GAAG;4BACH,OAAO,EAAE,oCAAwB;4BACjC,SAAS;4BACT,MAAM,EAAE;gCACN,QAAQ,EAAE,KAAK,EAAE,kCAAkC;gCACnD,KAAK,EAAE,MAAM;gCACb,KAAK,EAAE,MAAM;gCACb,QAAQ,EAAE,IAAI;gCACd,MAAM,EAAE,IAAI;6BACb;yBACF;qBACF;iBACF,CAAC;aACH;YACD,SAAS,EAAE,CAAC,+CAAqB,EAAE,6BAAY,EAAE,oCAAgB,CAAC;YAClE,OAAO,EAAE,CAAC,+CAAqB,EAAE,6BAAY,EAAE,oCAAgB,CAAC;SACjE,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,aAAa,CAAC,OAA4C;QAC/D,OAAO;YACL,MAAM,EAAE,yBAAuB;YAC/B,OAAO,EAAE;gBACP,GAAG,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC;gBAC1B,6BAAa,CAAC,aAAa,CAAC;oBAC1B;wBACE,IAAI,EAAE,mCAAuB;wBAC7B,UAAU,EAAE,KAAK,EAAE,GAAG,IAAe,EAAE,EAAE;4BACvC,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,CAAC;4BACjD,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,IAAI,gCAAoB,CAAC,GAAG,CAAC;4BACnD,MAAM,SAAS,GACb,MAAM,CAAC,SAAS,IAAI,IAAA,WAAI,EAAC,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,mBAAmB,CAAC,CAAC;4BAE1E,OAAO;gCACL,SAAS,EAAE,yBAAS,CAAC,IAAI;gCACzB,OAAO,EAAE;oCACP,GAAG;oCACH,OAAO,EAAE,oCAAwB;oCACjC,SAAS;oCACT,MAAM,EAAE;wCACN,QAAQ,EAAE,KAAK,EAAE,kCAAkC;wCACnD,KAAK,EAAE,MAAM;wCACb,KAAK,EAAE,MAAM;wCACb,QAAQ,EAAE,IAAI;wCACd,MAAM,EAAE,IAAI;qCACb;iCACF;6BACF,CAAC;wBACJ,CAAC;wBACD,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,EAAE;qBAC7B;iBACF,CAAC;aACH;YACD,SAAS,EAAE,CAAC,+CAAqB,EAAE,6BAAY,EAAE,oCAAgB,CAAC;YAClE,OAAO,EAAE,CAAC,+CAAqB,EAAE,6BAAY,EAAE,oCAAgB,CAAC;SACjE,CAAC;IACJ,CAAC;CACF,CAAA;AA5EY,0DAAuB;kCAAvB,uBAAuB;IADnC,IAAA,eAAM,EAAC,EAAE,CAAC;GACE,uBAAuB,CA4EnC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"permissions-grpc.client.d.ts","sourceRoot":"","sources":["../../src/client/permissions-grpc.client.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"permissions-grpc.client.d.ts","sourceRoot":"","sources":["../../src/client/permissions-grpc.client.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,YAAY,EAEb,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAInD,OAAO,KAAK,EACV,0BAA0B,EAC1B,oBAAoB,EACpB,gBAAgB,EAGhB,cAAc,EACd,eAAe,EACf,mBAAmB,EACpB,MAAM,UAAU,CAAC;AAmGlB;;;GAGG;AACH,qBACa,qBAAsB,YAAW,YAAY;IAMtD,OAAO,CAAC,QAAQ,CAAC,MAAM;IALzB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA0C;IACjE,OAAO,CAAC,kBAAkB,CAA0B;gBAIjC,MAAM,EAAE,UAAU;IAGrC,YAAY,IAAI,IAAI;IAMpB;;OAEG;IACG,eAAe,CACnB,MAAM,EAAE,MAAM,EACd,cAAc,EAAE,MAAM,EACtB,OAAO,CAAC,EAAE;QACR,QAAQ,CAAC,EAAE,eAAe,CAAC;QAC3B,OAAO,CAAC,EAAE,cAAc,CAAC;KAC1B,GACA,OAAO,CAAC,gBAAgB,CAAC;IAiB5B;;OAEG;IACG,oBAAoB,CACxB,MAAM,EAAE,MAAM,EACd,eAAe,EAAE,MAAM,EAAE,EACzB,OAAO,CAAC,EAAE;QACR,QAAQ,CAAC,EAAE,eAAe,CAAC;QAC3B,OAAO,CAAC,EAAE,cAAc,CAAC;KAC1B,GACA,OAAO,CAAC,0BAA0B,CAAC;IAwBtC;;OAEG;IACG,uBAAuB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAsB5E;;OAEG;IACG,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAY7E;;OAEG;IACG,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC;IAYpF;;OAEG;IACG,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC;IAYnF;;;OAGG;IACG,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAyBhE;;OAEG;IACH,OAAO,CAAC,gBAAgB;CAsBzB"}
|
|
@@ -107,88 +107,131 @@ let PermissionsGrpcClient = PermissionsGrpcClient_1 = class PermissionsGrpcClien
|
|
|
107
107
|
* Check if a user has a specific permission
|
|
108
108
|
*/
|
|
109
109
|
async checkPermission(userId, permissionCode, options) {
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
110
|
+
try {
|
|
111
|
+
const response = await (0, rxjs_1.firstValueFrom)(this.permissionsService.checkPermission({
|
|
112
|
+
userId,
|
|
113
|
+
permissionCode,
|
|
114
|
+
resourceContext: toGrpcResourceContext(options?.resource),
|
|
115
|
+
requestContext: toGrpcRequestContext(options?.request),
|
|
116
|
+
}));
|
|
117
|
+
return toEvaluationResult(response);
|
|
118
|
+
}
|
|
119
|
+
catch (error) {
|
|
120
|
+
this.logger.error(`gRPC checkPermission failed for user ${userId}`, error);
|
|
121
|
+
throw new common_1.ServiceUnavailableException('Permissions service unavailable');
|
|
122
|
+
}
|
|
117
123
|
}
|
|
118
124
|
/**
|
|
119
125
|
* Check multiple permissions at once
|
|
120
126
|
*/
|
|
121
127
|
async checkBulkPermissions(userId, permissionCodes, options) {
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
128
|
+
try {
|
|
129
|
+
const response = await (0, rxjs_1.firstValueFrom)(this.permissionsService.checkBulkPermissions({
|
|
130
|
+
userId,
|
|
131
|
+
permissionCodes,
|
|
132
|
+
resourceContext: toGrpcResourceContext(options?.resource),
|
|
133
|
+
requestContext: toGrpcRequestContext(options?.request),
|
|
134
|
+
}));
|
|
135
|
+
const results = {};
|
|
136
|
+
for (const [key, value] of Object.entries(response.results)) {
|
|
137
|
+
results[key] = toEvaluationResult(value);
|
|
138
|
+
}
|
|
139
|
+
return {
|
|
140
|
+
results,
|
|
141
|
+
totalTimeMs: response.totalTimeMs,
|
|
142
|
+
};
|
|
143
|
+
}
|
|
144
|
+
catch (error) {
|
|
145
|
+
this.logger.error(`gRPC checkBulkPermissions failed for user ${userId}`, error);
|
|
146
|
+
throw new common_1.ServiceUnavailableException('Permissions service unavailable');
|
|
131
147
|
}
|
|
132
|
-
return {
|
|
133
|
-
results,
|
|
134
|
-
totalTimeMs: response.totalTimeMs,
|
|
135
|
-
};
|
|
136
148
|
}
|
|
137
149
|
/**
|
|
138
150
|
* Get all effective permissions for a user
|
|
139
151
|
*/
|
|
140
152
|
async getEffectivePermissions(userId) {
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
+
try {
|
|
154
|
+
const response = await (0, rxjs_1.firstValueFrom)(this.permissionsService.getEffectivePermissions({ userId }));
|
|
155
|
+
return {
|
|
156
|
+
permissions: response.permissions,
|
|
157
|
+
roles: response.roles.map((r) => ({
|
|
158
|
+
id: r.id,
|
|
159
|
+
code: r.code,
|
|
160
|
+
name: r.name,
|
|
161
|
+
isSystem: r.isSystem,
|
|
162
|
+
})),
|
|
163
|
+
version: response.version,
|
|
164
|
+
computedAt: new Date(response.computedAt),
|
|
165
|
+
};
|
|
166
|
+
}
|
|
167
|
+
catch (error) {
|
|
168
|
+
this.logger.error(`gRPC getEffectivePermissions failed for user ${userId}`, error);
|
|
169
|
+
throw new common_1.ServiceUnavailableException('Permissions service unavailable');
|
|
170
|
+
}
|
|
153
171
|
}
|
|
154
172
|
/**
|
|
155
173
|
* Simple boolean check - does user have this permission?
|
|
156
174
|
*/
|
|
157
175
|
async hasPermission(userId, permissionCode) {
|
|
158
|
-
|
|
159
|
-
|
|
176
|
+
try {
|
|
177
|
+
const response = await (0, rxjs_1.firstValueFrom)(this.permissionsService.hasPermission({ userId, permissionCode }));
|
|
178
|
+
return response.hasPermission;
|
|
179
|
+
}
|
|
180
|
+
catch (error) {
|
|
181
|
+
this.logger.error(`gRPC hasPermission failed for user ${userId}`, error);
|
|
182
|
+
throw new common_1.ServiceUnavailableException('Permissions service unavailable');
|
|
183
|
+
}
|
|
160
184
|
}
|
|
161
185
|
/**
|
|
162
186
|
* Check if user has ALL of the specified permissions
|
|
163
187
|
*/
|
|
164
188
|
async hasAllPermissions(userId, permissionCodes) {
|
|
165
|
-
|
|
166
|
-
|
|
189
|
+
try {
|
|
190
|
+
const response = await (0, rxjs_1.firstValueFrom)(this.permissionsService.hasAllPermissions({ userId, permissionCodes }));
|
|
191
|
+
return response.hasPermission;
|
|
192
|
+
}
|
|
193
|
+
catch (error) {
|
|
194
|
+
this.logger.error(`gRPC hasAllPermissions failed for user ${userId}`, error);
|
|
195
|
+
throw new common_1.ServiceUnavailableException('Permissions service unavailable');
|
|
196
|
+
}
|
|
167
197
|
}
|
|
168
198
|
/**
|
|
169
199
|
* Check if user has ANY of the specified permissions
|
|
170
200
|
*/
|
|
171
201
|
async hasAnyPermission(userId, permissionCodes) {
|
|
172
|
-
|
|
173
|
-
|
|
202
|
+
try {
|
|
203
|
+
const response = await (0, rxjs_1.firstValueFrom)(this.permissionsService.hasAnyPermission({ userId, permissionCodes }));
|
|
204
|
+
return response.hasPermission;
|
|
205
|
+
}
|
|
206
|
+
catch (error) {
|
|
207
|
+
this.logger.error(`gRPC hasAnyPermission failed for user ${userId}`, error);
|
|
208
|
+
throw new common_1.ServiceUnavailableException('Permissions service unavailable');
|
|
209
|
+
}
|
|
174
210
|
}
|
|
175
211
|
/**
|
|
176
212
|
* Validate a JWT token via gRPC and return user data
|
|
177
213
|
* Used by JwtAuthGuard to authenticate requests
|
|
178
214
|
*/
|
|
179
215
|
async validateToken(token) {
|
|
180
|
-
|
|
181
|
-
|
|
216
|
+
try {
|
|
217
|
+
const response = await (0, rxjs_1.firstValueFrom)(this.permissionsService.validateToken({ token }));
|
|
218
|
+
if (!response.valid) {
|
|
219
|
+
return {
|
|
220
|
+
valid: false,
|
|
221
|
+
errorCode: response.errorCode,
|
|
222
|
+
errorMessage: response.errorMessage,
|
|
223
|
+
};
|
|
224
|
+
}
|
|
182
225
|
return {
|
|
183
|
-
valid:
|
|
184
|
-
|
|
185
|
-
errorMessage: response.errorMessage,
|
|
226
|
+
valid: true,
|
|
227
|
+
user: this.mapToJwtUserData(response.user),
|
|
186
228
|
};
|
|
187
229
|
}
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
230
|
+
catch (error) {
|
|
231
|
+
const grpcError = error;
|
|
232
|
+
this.logger.error(`gRPC validateToken failed - code: ${grpcError.code}, details: ${grpcError.details}, message: ${grpcError.message}`);
|
|
233
|
+
throw new common_1.ServiceUnavailableException('Authentication service unavailable');
|
|
234
|
+
}
|
|
192
235
|
}
|
|
193
236
|
/**
|
|
194
237
|
* Maps gRPC user data to JwtUserData type
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"permissions-grpc.client.js","sourceRoot":"","sources":["../../src/client/permissions-grpc.client.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"permissions-grpc.client.js","sourceRoot":"","sources":["../../src/client/permissions-grpc.client.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jwt-auth.guard.d.ts","sourceRoot":"","sources":["../../src/guards/jwt-auth.guard.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,gBAAgB,
|
|
1
|
+
{"version":3,"file":"jwt-auth.guard.d.ts","sourceRoot":"","sources":["../../src/guards/jwt-auth.guard.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,gBAAgB,EAKjB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,OAAO,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAG1E;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,qBACa,YAAa,YAAW,WAAW;IAI5C,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAJpC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAiC;gBAGrC,SAAS,EAAE,SAAS,EACpB,iBAAiB,EAAE,qBAAqB;IAGrD,WAAW,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC;IA8C9D,OAAO,CAAC,sBAAsB;CAW/B"}
|
|
@@ -64,15 +64,27 @@ let JwtAuthGuard = JwtAuthGuard_1 = class JwtAuthGuard {
|
|
|
64
64
|
if (token === undefined) {
|
|
65
65
|
throw new common_1.UnauthorizedException('No token provided');
|
|
66
66
|
}
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
67
|
+
try {
|
|
68
|
+
// Validate token via gRPC call to permissions service
|
|
69
|
+
const result = await this.permissionsClient.validateToken(token);
|
|
70
|
+
if (!result.valid) {
|
|
71
|
+
this.logger.debug(`Token validation failed: ${result.errorCode ?? 'UNKNOWN'}`);
|
|
72
|
+
throw new common_1.UnauthorizedException(result.errorMessage ?? 'Invalid token');
|
|
73
|
+
}
|
|
74
|
+
// Attach user to request
|
|
75
|
+
request.user = result.user;
|
|
76
|
+
return true;
|
|
77
|
+
}
|
|
78
|
+
catch (error) {
|
|
79
|
+
if (error instanceof common_1.UnauthorizedException) {
|
|
80
|
+
throw error;
|
|
81
|
+
}
|
|
82
|
+
if (error instanceof common_1.ServiceUnavailableException) {
|
|
83
|
+
throw error;
|
|
84
|
+
}
|
|
85
|
+
this.logger.error('Token validation failed due to unexpected error', error);
|
|
86
|
+
throw new common_1.ServiceUnavailableException('Authentication service unavailable');
|
|
72
87
|
}
|
|
73
|
-
// Attach user to request
|
|
74
|
-
request.user = result.user;
|
|
75
|
-
return true;
|
|
76
88
|
}
|
|
77
89
|
extractTokenFromHeader(request) {
|
|
78
90
|
const authHeader = request.headers.authorization;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jwt-auth.guard.js","sourceRoot":"","sources":["../../src/guards/jwt-auth.guard.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"jwt-auth.guard.js","sourceRoot":"","sources":["../../src/guards/jwt-auth.guard.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,2CAOwB;AACxB,uCAAyC;AAEzC,+EAA0E;AAC1E,qEAA+D;AAE/D;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEI,IAAM,YAAY,oBAAlB,MAAM,YAAY;IAIJ;IACA;IAJF,MAAM,GAAG,IAAI,eAAM,CAAC,cAAY,CAAC,IAAI,CAAC,CAAC;IAExD,YACmB,SAAoB,EACpB,iBAAwC;QADxC,cAAS,GAAT,SAAS,CAAW;QACpB,sBAAiB,GAAjB,iBAAiB,CAAuB;IACxD,CAAC;IAEJ,KAAK,CAAC,WAAW,CAAC,OAAyB;QACzC,qCAAqC;QACrC,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAU,gCAAa,EAAE;YACxE,OAAO,CAAC,UAAU,EAAE;YACpB,OAAO,CAAC,QAAQ,EAAE;SACnB,CAAC,CAAC;QAEH,IAAI,QAAQ,EAAE,CAAC;YACb,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,OAAO,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,UAAU,EAG7C,CAAC;QACL,MAAM,KAAK,GAAG,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC;QAEnD,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,MAAM,IAAI,8BAAqB,CAAC,mBAAmB,CAAC,CAAC;QACvD,CAAC;QAED,IAAI,CAAC;YACH,sDAAsD;YACtD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAEjE,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;gBAClB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,4BAA4B,MAAM,CAAC,SAAS,IAAI,SAAS,EAAE,CAAC,CAAC;gBAC/E,MAAM,IAAI,8BAAqB,CAAC,MAAM,CAAC,YAAY,IAAI,eAAe,CAAC,CAAC;YAC1E,CAAC;YAED,yBAAyB;YACzB,OAAO,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;YAE3B,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,8BAAqB,EAAE,CAAC;gBAC3C,MAAM,KAAK,CAAC;YACd,CAAC;YACD,IAAI,KAAK,YAAY,oCAA2B,EAAE,CAAC;gBACjD,MAAM,KAAK,CAAC;YACd,CAAC;YACD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,iDAAiD,EAAE,KAAK,CAAC,CAAC;YAC5E,MAAM,IAAI,oCAA2B,CAAC,oCAAoC,CAAC,CAAC;QAC9E,CAAC;IACH,CAAC;IAEO,sBAAsB,CAAC,OAE9B;QACC,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC;QACjD,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;YAC7B,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC5C,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;IAC/C,CAAC;CACF,CAAA;AAjEY,oCAAY;uBAAZ,YAAY;IADxB,IAAA,mBAAU,GAAE;qCAKmB,gBAAS;QACD,+CAAqB;GALhD,YAAY,CAiExB"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ahksolution/permissions-sdk",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.2",
|
|
4
4
|
"description": "gRPC client SDK for AHK Solution Permissions Microservice - provides NestJS guard, decorators, and client for inter-service permission checks",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|