lapeeh 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.
Files changed (76) hide show
  1. package/dist/lib/bootstrap.d.ts +3 -0
  2. package/dist/lib/bootstrap.d.ts.map +1 -0
  3. package/dist/lib/bootstrap.js +184 -0
  4. package/dist/lib/core/realtime.d.ts +3 -0
  5. package/dist/lib/core/realtime.d.ts.map +1 -0
  6. package/dist/lib/core/realtime.js +36 -0
  7. package/dist/lib/core/redis.d.ts +9 -0
  8. package/dist/lib/core/redis.d.ts.map +1 -0
  9. package/dist/lib/core/redis.js +133 -0
  10. package/dist/lib/core/serializer.d.ts +43 -0
  11. package/dist/lib/core/serializer.d.ts.map +1 -0
  12. package/dist/lib/core/serializer.js +66 -0
  13. package/dist/lib/core/server.d.ts +2 -0
  14. package/dist/lib/core/server.d.ts.map +1 -0
  15. package/dist/lib/core/server.js +60 -0
  16. package/dist/lib/core/store.d.ts +55 -0
  17. package/dist/lib/core/store.d.ts.map +1 -0
  18. package/dist/lib/core/store.js +66 -0
  19. package/dist/lib/middleware/auth.d.ts +4 -0
  20. package/dist/lib/middleware/auth.d.ts.map +1 -0
  21. package/dist/lib/middleware/auth.js +55 -0
  22. package/dist/lib/middleware/error.d.ts +3 -0
  23. package/dist/lib/middleware/error.d.ts.map +1 -0
  24. package/dist/lib/middleware/error.js +41 -0
  25. package/dist/lib/middleware/multipart.d.ts +4 -0
  26. package/dist/lib/middleware/multipart.d.ts.map +1 -0
  27. package/dist/lib/middleware/multipart.js +17 -0
  28. package/dist/lib/middleware/rateLimit.d.ts +2 -0
  29. package/dist/lib/middleware/rateLimit.d.ts.map +1 -0
  30. package/dist/lib/middleware/rateLimit.js +19 -0
  31. package/dist/lib/middleware/requestLogger.d.ts +3 -0
  32. package/dist/lib/middleware/requestLogger.d.ts.map +1 -0
  33. package/dist/lib/middleware/requestLogger.js +22 -0
  34. package/dist/lib/middleware/visitor.d.ts +3 -0
  35. package/dist/lib/middleware/visitor.d.ts.map +1 -0
  36. package/dist/lib/middleware/visitor.js +144 -0
  37. package/dist/lib/utils/logger.d.ts +11 -0
  38. package/dist/lib/utils/logger.d.ts.map +1 -0
  39. package/dist/lib/utils/logger.js +81 -0
  40. package/dist/lib/utils/pagination.d.ts +19 -0
  41. package/dist/lib/utils/pagination.d.ts.map +1 -0
  42. package/dist/lib/utils/pagination.js +34 -0
  43. package/dist/lib/utils/response.d.ts +11 -0
  44. package/dist/lib/utils/response.d.ts.map +1 -0
  45. package/dist/lib/utils/response.js +57 -0
  46. package/dist/lib/utils/validator.d.ts +38 -0
  47. package/dist/lib/utils/validator.d.ts.map +1 -0
  48. package/dist/lib/utils/validator.js +346 -0
  49. package/dist/src/config/app.d.ts +10 -0
  50. package/dist/src/config/app.d.ts.map +1 -0
  51. package/dist/src/config/app.js +12 -0
  52. package/dist/src/config/cors.d.ts +6 -0
  53. package/dist/src/config/cors.d.ts.map +1 -0
  54. package/dist/src/config/cors.js +8 -0
  55. package/dist/src/modules/Auth/auth.controller.d.ts +11 -0
  56. package/dist/src/modules/Auth/auth.controller.d.ts.map +1 -0
  57. package/dist/src/modules/Auth/auth.controller.js +427 -0
  58. package/dist/src/modules/Auth/auth.routes.d.ts +2 -0
  59. package/dist/src/modules/Auth/auth.routes.d.ts.map +1 -0
  60. package/dist/src/modules/Auth/auth.routes.js +45 -0
  61. package/dist/src/modules/Auth/auth.service.d.ts +3 -0
  62. package/dist/src/modules/Auth/auth.service.d.ts.map +1 -0
  63. package/dist/src/modules/Auth/auth.service.js +8 -0
  64. package/dist/src/modules/Rbac/rbac.controller.d.ts +16 -0
  65. package/dist/src/modules/Rbac/rbac.controller.d.ts.map +1 -0
  66. package/dist/src/modules/Rbac/rbac.controller.js +438 -0
  67. package/dist/src/modules/Rbac/rbac.routes.d.ts +2 -0
  68. package/dist/src/modules/Rbac/rbac.routes.d.ts.map +1 -0
  69. package/dist/src/modules/Rbac/rbac.routes.js +23 -0
  70. package/dist/src/modules/Rbac/rbac.service.d.ts +3 -0
  71. package/dist/src/modules/Rbac/rbac.service.d.ts.map +1 -0
  72. package/dist/src/modules/Rbac/rbac.service.js +8 -0
  73. package/dist/src/routes/index.d.ts +2 -0
  74. package/dist/src/routes/index.d.ts.map +1 -0
  75. package/dist/src/routes/index.js +9 -0
  76. package/package.json +23 -1
@@ -0,0 +1,438 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createRole = createRole;
4
+ exports.listRoles = listRoles;
5
+ exports.updateRole = updateRole;
6
+ exports.deleteRole = deleteRole;
7
+ exports.createPermission = createPermission;
8
+ exports.listPermissions = listPermissions;
9
+ exports.updatePermission = updatePermission;
10
+ exports.deletePermission = deletePermission;
11
+ exports.assignRoleToUser = assignRoleToUser;
12
+ exports.removeRoleFromUser = removeRoleFromUser;
13
+ exports.assignPermissionToRole = assignPermissionToRole;
14
+ exports.removePermissionFromRole = removePermissionFromRole;
15
+ exports.assignPermissionToUser = assignPermissionToUser;
16
+ exports.removePermissionFromUser = removePermissionFromUser;
17
+ const store_1 = require("../../../lib/core/store");
18
+ const response_1 = require("../../../lib/utils/response");
19
+ const validator_1 = require("../../../lib/utils/validator");
20
+ const zod_1 = require("zod");
21
+ const serializer_1 = require("../../../lib/core/serializer");
22
+ // --- Serializers ---
23
+ const roleSchema = {
24
+ type: "object",
25
+ properties: {
26
+ id: { type: "string" },
27
+ name: { type: "string" },
28
+ slug: { type: "string" },
29
+ description: { type: "string", nullable: true },
30
+ created_at: { type: "string", format: "date-time", nullable: true },
31
+ updated_at: { type: "string", format: "date-time", nullable: true },
32
+ },
33
+ };
34
+ const permissionSchema = {
35
+ type: "object",
36
+ properties: {
37
+ id: { type: "string" },
38
+ name: { type: "string" },
39
+ slug: { type: "string" },
40
+ description: { type: "string", nullable: true },
41
+ created_at: { type: "string", format: "date-time", nullable: true },
42
+ updated_at: { type: "string", format: "date-time", nullable: true },
43
+ },
44
+ };
45
+ const roleSerializer = (0, serializer_1.getSerializer)("role", (0, serializer_1.createResponseSchema)(roleSchema));
46
+ const roleListSerializer = (0, serializer_1.getSerializer)("role-list", (0, serializer_1.createResponseSchema)({ type: "array", items: roleSchema }));
47
+ const permissionSerializer = (0, serializer_1.getSerializer)("permission", (0, serializer_1.createResponseSchema)(permissionSchema));
48
+ const permissionListSerializer = (0, serializer_1.getSerializer)("permission-list", (0, serializer_1.createResponseSchema)({ type: "array", items: permissionSchema }));
49
+ const voidSerializer = (0, serializer_1.getSerializer)("void", (0, serializer_1.createResponseSchema)({ type: "null" }));
50
+ // --- Controllers ---
51
+ async function createRole(req, res) {
52
+ const validator = validator_1.Validator.make(req.body || {}, {
53
+ name: "required|string|min:1",
54
+ slug: "required|string|min:1|unique:roles,slug",
55
+ description: "string",
56
+ });
57
+ if (await validator.fails()) {
58
+ (0, response_1.sendError)(res, 422, "Validation error", validator.errors());
59
+ return;
60
+ }
61
+ const { name, slug, description } = await validator.validated();
62
+ // Manual unique check
63
+ if (store_1.roles.find((r) => r.slug === slug)) {
64
+ (0, response_1.sendError)(res, 422, "Validation error", { slug: "Slug already exists" });
65
+ return;
66
+ }
67
+ const role = {
68
+ id: (0, store_1.generateId)(),
69
+ name,
70
+ slug,
71
+ description: description || null,
72
+ created_at: new Date(),
73
+ updated_at: new Date(),
74
+ };
75
+ store_1.roles.push(role);
76
+ (0, store_1.saveStore)();
77
+ (0, response_1.sendFastSuccess)(res, 201, roleSerializer, {
78
+ status: "success",
79
+ message: "Role created",
80
+ data: { ...role, id: role.id.toString() },
81
+ });
82
+ }
83
+ async function listRoles(_req, res) {
84
+ const serialized = store_1.roles.map((r) => ({ ...r, id: r.id.toString() }));
85
+ (0, response_1.sendFastSuccess)(res, 200, roleListSerializer, {
86
+ status: "success",
87
+ message: "Roles list",
88
+ data: serialized,
89
+ });
90
+ }
91
+ async function updateRole(req, res) {
92
+ const { id } = req.params;
93
+ const roleId = id;
94
+ const validator = validator_1.Validator.make(req.body || {}, {
95
+ name: "string",
96
+ slug: `string|unique:roles,slug,${id}`,
97
+ description: "string",
98
+ });
99
+ if (await validator.fails()) {
100
+ (0, response_1.sendError)(res, 422, "Validation error", validator.errors());
101
+ return;
102
+ }
103
+ const { name, slug, description } = await validator.validated();
104
+ const roleIndex = store_1.roles.findIndex((r) => r.id === roleId);
105
+ if (roleIndex === -1) {
106
+ (0, response_1.sendError)(res, 404, "Role not found");
107
+ return;
108
+ }
109
+ // Manual unique check for update
110
+ if (slug &&
111
+ slug !== store_1.roles[roleIndex].slug &&
112
+ store_1.roles.find((r) => r.slug === slug)) {
113
+ (0, response_1.sendError)(res, 422, "Validation error", { slug: "Slug already exists" });
114
+ return;
115
+ }
116
+ store_1.roles[roleIndex] = {
117
+ ...store_1.roles[roleIndex],
118
+ name: name ?? store_1.roles[roleIndex].name,
119
+ slug: slug ?? store_1.roles[roleIndex].slug,
120
+ description: description ?? store_1.roles[roleIndex].description,
121
+ updated_at: new Date(),
122
+ };
123
+ (0, store_1.saveStore)();
124
+ const updated = store_1.roles[roleIndex];
125
+ (0, response_1.sendFastSuccess)(res, 200, roleSerializer, {
126
+ status: "success",
127
+ message: "Role updated",
128
+ data: { ...updated, id: updated.id.toString() },
129
+ });
130
+ }
131
+ async function deleteRole(req, res) {
132
+ const { id } = req.params;
133
+ const roleId = id;
134
+ const roleIndex = store_1.roles.findIndex((r) => r.id === roleId);
135
+ if (roleIndex === -1) {
136
+ (0, response_1.sendError)(res, 404, "Role not found");
137
+ return;
138
+ }
139
+ // Clean up relationships
140
+ // Remove from role_permissions
141
+ for (let i = store_1.role_permissions.length - 1; i >= 0; i--) {
142
+ if (store_1.role_permissions[i].role_id === roleId) {
143
+ store_1.role_permissions.splice(i, 1);
144
+ }
145
+ }
146
+ // Remove from user_roles
147
+ for (let i = store_1.user_roles.length - 1; i >= 0; i--) {
148
+ if (store_1.user_roles[i].role_id === roleId) {
149
+ store_1.user_roles.splice(i, 1);
150
+ }
151
+ }
152
+ store_1.roles.splice(roleIndex, 1);
153
+ (0, response_1.sendFastSuccess)(res, 200, voidSerializer, {
154
+ status: "success",
155
+ message: "Role deleted",
156
+ data: null,
157
+ });
158
+ }
159
+ async function createPermission(req, res) {
160
+ const validator = validator_1.Validator.make(req.body || {}, {
161
+ name: "required|string|min:1",
162
+ slug: "required|string|min:1|unique:permissions,slug",
163
+ description: "string",
164
+ });
165
+ if (await validator.fails()) {
166
+ (0, response_1.sendError)(res, 422, "Validation error", validator.errors());
167
+ return;
168
+ }
169
+ const { name, slug, description } = await validator.validated();
170
+ // Manual unique check
171
+ if (store_1.permissions.find((p) => p.slug === slug)) {
172
+ (0, response_1.sendError)(res, 422, "Validation error", { slug: "Slug already exists" });
173
+ return;
174
+ }
175
+ const permission = {
176
+ id: (0, store_1.generateId)(),
177
+ name,
178
+ slug,
179
+ description: description || null,
180
+ created_at: new Date(),
181
+ updated_at: new Date(),
182
+ };
183
+ store_1.permissions.push(permission);
184
+ (0, store_1.saveStore)();
185
+ (0, response_1.sendFastSuccess)(res, 201, permissionSerializer, {
186
+ status: "success",
187
+ message: "Permission created",
188
+ data: { ...permission, id: permission.id.toString() },
189
+ });
190
+ }
191
+ async function listPermissions(_req, res) {
192
+ const serialized = store_1.permissions.map((p) => ({
193
+ ...p,
194
+ id: p.id.toString(),
195
+ }));
196
+ (0, response_1.sendFastSuccess)(res, 200, permissionListSerializer, {
197
+ status: "success",
198
+ message: "Permissions list",
199
+ data: serialized,
200
+ });
201
+ }
202
+ async function updatePermission(req, res) {
203
+ const { id } = req.params;
204
+ const permissionId = id;
205
+ const validator = validator_1.Validator.make(req.body || {}, {
206
+ name: "string",
207
+ slug: `string|unique:permissions,slug,${id}`,
208
+ description: "string",
209
+ });
210
+ if (await validator.fails()) {
211
+ (0, response_1.sendError)(res, 422, "Validation error", validator.errors());
212
+ return;
213
+ }
214
+ const { name, slug, description } = await validator.validated();
215
+ const permIndex = store_1.permissions.findIndex((p) => p.id === permissionId);
216
+ if (permIndex === -1) {
217
+ (0, response_1.sendError)(res, 404, "Permission not found");
218
+ return;
219
+ }
220
+ if (slug &&
221
+ slug !== store_1.permissions[permIndex].slug &&
222
+ store_1.permissions.find((p) => p.slug === slug)) {
223
+ (0, response_1.sendError)(res, 422, "Validation error", { slug: "Slug already exists" });
224
+ return;
225
+ }
226
+ store_1.permissions[permIndex] = {
227
+ ...store_1.permissions[permIndex],
228
+ name: name ?? store_1.permissions[permIndex].name,
229
+ slug: slug ?? store_1.permissions[permIndex].slug,
230
+ description: description ?? store_1.permissions[permIndex].description,
231
+ updated_at: new Date(),
232
+ };
233
+ (0, store_1.saveStore)();
234
+ const updated = store_1.permissions[permIndex];
235
+ (0, response_1.sendFastSuccess)(res, 200, permissionSerializer, {
236
+ status: "success",
237
+ message: "Permission updated",
238
+ data: { ...updated, id: updated.id.toString() },
239
+ });
240
+ }
241
+ async function deletePermission(req, res) {
242
+ const { id } = req.params;
243
+ const permissionId = id;
244
+ const permIndex = store_1.permissions.findIndex((p) => p.id === permissionId);
245
+ if (permIndex === -1) {
246
+ (0, response_1.sendError)(res, 404, "Permission not found");
247
+ return;
248
+ }
249
+ // Clean up relationships
250
+ for (let i = store_1.role_permissions.length - 1; i >= 0; i--) {
251
+ if (store_1.role_permissions[i].permission_id === permissionId) {
252
+ store_1.role_permissions.splice(i, 1);
253
+ }
254
+ }
255
+ for (let i = store_1.user_permissions.length - 1; i >= 0; i--) {
256
+ if (store_1.user_permissions[i].permission_id === permissionId) {
257
+ store_1.user_permissions.splice(i, 1);
258
+ }
259
+ }
260
+ store_1.permissions.splice(permIndex, 1);
261
+ (0, store_1.saveStore)();
262
+ (0, response_1.sendFastSuccess)(res, 200, voidSerializer, {
263
+ status: "success",
264
+ message: "Permission deleted",
265
+ data: null,
266
+ });
267
+ }
268
+ async function assignRoleToUser(req, res) {
269
+ const validator = validator_1.Validator.make(req.body || {}, {
270
+ userId: zod_1.z.string().min(1, "userId wajib diisi"),
271
+ roleId: zod_1.z.string().min(1, "roleId wajib diisi"),
272
+ });
273
+ if (await validator.fails()) {
274
+ (0, response_1.sendError)(res, 422, "Validation error", validator.errors());
275
+ return;
276
+ }
277
+ const { userId, roleId } = await validator.validated();
278
+ const user = store_1.users.find((u) => u.id === userId);
279
+ if (!user) {
280
+ (0, response_1.sendError)(res, 404, "User not found");
281
+ return;
282
+ }
283
+ const role = store_1.roles.find((r) => r.id === roleId);
284
+ if (!role) {
285
+ (0, response_1.sendError)(res, 404, "Role not found");
286
+ return;
287
+ }
288
+ const exists = store_1.user_roles.find((ur) => ur.user_id === userId && ur.role_id === roleId);
289
+ if (!exists) {
290
+ store_1.user_roles.push({
291
+ id: (0, store_1.generateId)(),
292
+ user_id: userId,
293
+ role_id: roleId,
294
+ created_at: new Date(),
295
+ });
296
+ (0, store_1.saveStore)();
297
+ }
298
+ (0, response_1.sendFastSuccess)(res, 200, voidSerializer, {
299
+ status: "success",
300
+ message: "Role assigned to user",
301
+ data: null,
302
+ });
303
+ }
304
+ async function removeRoleFromUser(req, res) {
305
+ const validator = validator_1.Validator.make(req.body || {}, {
306
+ userId: zod_1.z.string().min(1, "userId wajib diisi"),
307
+ roleId: zod_1.z.string().min(1, "roleId wajib diisi"),
308
+ });
309
+ if (await validator.fails()) {
310
+ (0, response_1.sendError)(res, 422, "Validation error", validator.errors());
311
+ return;
312
+ }
313
+ const { userId, roleId } = await validator.validated();
314
+ for (let i = store_1.user_roles.length - 1; i >= 0; i--) {
315
+ if (store_1.user_roles[i].user_id === userId && store_1.user_roles[i].role_id === roleId) {
316
+ store_1.user_roles.splice(i, 1);
317
+ }
318
+ }
319
+ (0, response_1.sendFastSuccess)(res, 200, voidSerializer, {
320
+ status: "success",
321
+ message: "Role removed from user",
322
+ data: null,
323
+ });
324
+ }
325
+ async function assignPermissionToRole(req, res) {
326
+ const validator = validator_1.Validator.make(req.body || {}, {
327
+ roleId: zod_1.z.string().min(1, "roleId wajib diisi"),
328
+ permissionId: zod_1.z.string().min(1, "permissionId wajib diisi"),
329
+ });
330
+ if (await validator.fails()) {
331
+ (0, response_1.sendError)(res, 422, "Validation error", validator.errors());
332
+ return;
333
+ }
334
+ const { roleId, permissionId } = await validator.validated();
335
+ const role = store_1.roles.find((r) => r.id === roleId);
336
+ if (!role) {
337
+ (0, response_1.sendError)(res, 404, "Role not found");
338
+ return;
339
+ }
340
+ const permission = store_1.permissions.find((p) => p.id === permissionId);
341
+ if (!permission) {
342
+ (0, response_1.sendError)(res, 404, "Permission not found");
343
+ return;
344
+ }
345
+ const exists = store_1.role_permissions.find((rp) => rp.role_id === roleId && rp.permission_id === permissionId);
346
+ if (!exists) {
347
+ store_1.role_permissions.push({
348
+ id: (0, store_1.generateId)(),
349
+ role_id: roleId,
350
+ permission_id: permissionId,
351
+ created_at: new Date(),
352
+ });
353
+ (0, store_1.saveStore)();
354
+ }
355
+ (0, response_1.sendFastSuccess)(res, 200, voidSerializer, {
356
+ status: "success",
357
+ message: "Permission assigned to role",
358
+ data: null,
359
+ });
360
+ }
361
+ async function removePermissionFromRole(req, res) {
362
+ const validator = validator_1.Validator.make(req.body || {}, {
363
+ roleId: zod_1.z.string().min(1, "roleId wajib diisi"),
364
+ permissionId: zod_1.z.string().min(1, "permissionId wajib diisi"),
365
+ });
366
+ if (await validator.fails()) {
367
+ (0, response_1.sendError)(res, 422, "Validation error", validator.errors());
368
+ return;
369
+ }
370
+ const { roleId, permissionId } = await validator.validated();
371
+ for (let i = store_1.role_permissions.length - 1; i >= 0; i--) {
372
+ if (store_1.role_permissions[i].role_id === roleId &&
373
+ store_1.role_permissions[i].permission_id === permissionId) {
374
+ store_1.role_permissions.splice(i, 1);
375
+ }
376
+ }
377
+ (0, response_1.sendFastSuccess)(res, 200, voidSerializer, {
378
+ status: "success",
379
+ message: "Permission removed from role",
380
+ data: null,
381
+ });
382
+ }
383
+ async function assignPermissionToUser(req, res) {
384
+ const validator = validator_1.Validator.make(req.body || {}, {
385
+ userId: zod_1.z.string().min(1, "userId wajib diisi"),
386
+ permissionId: zod_1.z.string().min(1, "permissionId wajib diisi"),
387
+ });
388
+ if (await validator.fails()) {
389
+ (0, response_1.sendError)(res, 422, "Validation error", validator.errors());
390
+ return;
391
+ }
392
+ const { userId, permissionId } = await validator.validated();
393
+ const user = store_1.users.find((u) => u.id === userId);
394
+ if (!user) {
395
+ (0, response_1.sendError)(res, 404, "User not found");
396
+ return;
397
+ }
398
+ const permission = store_1.permissions.find((p) => p.id === permissionId);
399
+ if (!permission) {
400
+ (0, response_1.sendError)(res, 404, "Permission not found");
401
+ return;
402
+ }
403
+ const exists = store_1.user_permissions.find((up) => up.user_id === userId && up.permission_id === permissionId);
404
+ if (!exists) {
405
+ store_1.user_permissions.push({
406
+ id: (0, store_1.generateId)(),
407
+ user_id: userId,
408
+ permission_id: permissionId,
409
+ created_at: new Date(),
410
+ });
411
+ }
412
+ (0, response_1.sendFastSuccess)(res, 200, voidSerializer, {
413
+ status: "success",
414
+ message: "Permission assigned to user",
415
+ data: null,
416
+ });
417
+ }
418
+ async function removePermissionFromUser(req, res) {
419
+ const validator = validator_1.Validator.make(req.body || {}, {
420
+ userId: zod_1.z.string().min(1, "userId wajib diisi"),
421
+ permissionId: zod_1.z.string().min(1, "permissionId wajib diisi"),
422
+ });
423
+ if (await validator.fails()) {
424
+ (0, response_1.sendError)(res, 422, "Validation error", validator.errors());
425
+ return;
426
+ }
427
+ const { userId, permissionId } = await validator.validated();
428
+ const index = store_1.user_permissions.findIndex((up) => up.user_id === userId && up.permission_id === permissionId);
429
+ if (index !== -1) {
430
+ store_1.user_permissions.splice(index, 1);
431
+ (0, store_1.saveStore)();
432
+ }
433
+ (0, response_1.sendFastSuccess)(res, 200, voidSerializer, {
434
+ status: "success",
435
+ message: "Permission removed from user",
436
+ data: null,
437
+ });
438
+ }
@@ -0,0 +1,2 @@
1
+ export declare const rbacRouter: import("express-serve-static-core").Router;
2
+ //# sourceMappingURL=rbac.routes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rbac.routes.d.ts","sourceRoot":"","sources":["../../../../src/modules/Rbac/rbac.routes.ts"],"names":[],"mappings":"AAmBA,eAAO,MAAM,UAAU,4CAAW,CAAC"}
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.rbacRouter = void 0;
4
+ const express_1 = require("express");
5
+ const auth_1 = require("../../../lib/middleware/auth");
6
+ const rbac_controller_1 = require("./rbac.controller");
7
+ exports.rbacRouter = (0, express_1.Router)();
8
+ exports.rbacRouter.use(auth_1.requireAuth);
9
+ exports.rbacRouter.use(auth_1.requireAdmin);
10
+ exports.rbacRouter.post("/roles", rbac_controller_1.createRole);
11
+ exports.rbacRouter.get("/roles", rbac_controller_1.listRoles);
12
+ exports.rbacRouter.put("/roles/:id", rbac_controller_1.updateRole);
13
+ exports.rbacRouter.delete("/roles/:id", rbac_controller_1.deleteRole);
14
+ exports.rbacRouter.post("/permissions", rbac_controller_1.createPermission);
15
+ exports.rbacRouter.get("/permissions", rbac_controller_1.listPermissions);
16
+ exports.rbacRouter.put("/permissions/:id", rbac_controller_1.updatePermission);
17
+ exports.rbacRouter.delete("/permissions/:id", rbac_controller_1.deletePermission);
18
+ exports.rbacRouter.post("/users/assign-role", rbac_controller_1.assignRoleToUser);
19
+ exports.rbacRouter.post("/users/remove-role", rbac_controller_1.removeRoleFromUser);
20
+ exports.rbacRouter.post("/roles/assign-permission", rbac_controller_1.assignPermissionToRole);
21
+ exports.rbacRouter.post("/roles/remove-permission", rbac_controller_1.removePermissionFromRole);
22
+ exports.rbacRouter.post("/users/assign-permission", rbac_controller_1.assignPermissionToUser);
23
+ exports.rbacRouter.post("/users/remove-permission", rbac_controller_1.removePermissionFromUser);
@@ -0,0 +1,3 @@
1
+ export declare class RbacService {
2
+ }
3
+ //# sourceMappingURL=rbac.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rbac.service.d.ts","sourceRoot":"","sources":["../../../../src/modules/Rbac/rbac.service.ts"],"names":[],"mappings":"AAGA,qBAAa,WAAW;CAEvB"}
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RbacService = void 0;
4
+ // Placeholder for Rbac Service
5
+ // You can move business logic from controller to here in the future
6
+ class RbacService {
7
+ }
8
+ exports.RbacService = RbacService;
@@ -0,0 +1,2 @@
1
+ export declare const apiRouter: import("express-serve-static-core").Router;
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/routes/index.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,SAAS,4CAAW,CAAC"}
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.apiRouter = void 0;
4
+ const express_1 = require("express");
5
+ const auth_routes_1 = require("../modules/Auth/auth.routes");
6
+ const rbac_routes_1 = require("../modules/Rbac/rbac.routes");
7
+ exports.apiRouter = (0, express_1.Router)();
8
+ exports.apiRouter.use("/auth", auth_routes_1.authRouter);
9
+ exports.apiRouter.use("/rbac", rbac_routes_1.rbacRouter);
package/package.json CHANGED
@@ -1,12 +1,25 @@
1
1
  {
2
2
  "name": "lapeeh",
3
- "version": "1.0.11",
3
+ "version": "1.0.13",
4
4
  "description": "lapeeh Framework (Standardized by lapeeh)",
5
5
  "engines": {
6
6
  "node": ">=18.0.0",
7
7
  "npm": ">=9.0.0"
8
8
  },
9
9
  "main": "dist/lib/bootstrap.js",
10
+ "exports": {
11
+ ".": {
12
+ "types": "./dist/lib/bootstrap.d.ts",
13
+ "require": "./dist/lib/bootstrap.js",
14
+ "default": "./dist/lib/bootstrap.js"
15
+ },
16
+ "./*": {
17
+ "types": "./dist/lib/*.d.ts",
18
+ "require": "./dist/lib/*.js",
19
+ "default": "./dist/lib/*.js"
20
+ },
21
+ "./package.json": "./package.json"
22
+ },
10
23
  "bin": {
11
24
  "lapeeh": "bin/index.js"
12
25
  },
@@ -19,6 +32,13 @@
19
32
  "url": "https://github.com/lapeeh/lapeeh/issues"
20
33
  },
21
34
  "types": "dist/lib/bootstrap.d.ts",
35
+ "typesVersions": {
36
+ "*": {
37
+ "*": [
38
+ "dist/lib/*"
39
+ ]
40
+ }
41
+ },
22
42
  "files": [
23
43
  "bin",
24
44
  "dist",
@@ -49,6 +69,7 @@
49
69
  "lint": "eslint .",
50
70
  "lint:fix": "eslint . --fix",
51
71
  "test": "jest",
72
+ "prepublishOnly": "npm run build",
52
73
  "generate:jwt": "node scripts/generate-jwt-secret.js",
53
74
  "make:module": "node scripts/make-module.js",
54
75
  "make:modul": "node scripts/make-module.js",
@@ -121,6 +142,7 @@
121
142
  "globals": "^16.5.0",
122
143
  "jest": "^30.2.0",
123
144
  "supertest": "^7.1.4",
145
+ "tsc-alias": "^1.8.16",
124
146
  "ts-jest": "^29.4.6",
125
147
  "typescript-eslint": "^8.50.1"
126
148
  }