axiodb 9.7.9 → 11.9.12

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 (144) hide show
  1. package/README.md +67 -2
  2. package/lib/Services/Auth/AuthEvents.service.d.ts +15 -0
  3. package/lib/Services/Auth/AuthEvents.service.js +17 -0
  4. package/lib/Services/Auth/AuthEvents.service.js.map +1 -0
  5. package/lib/Services/Auth/AuthSeeder.service.d.ts +16 -0
  6. package/lib/Services/Auth/AuthSeeder.service.js +99 -0
  7. package/lib/Services/Auth/AuthSeeder.service.js.map +1 -0
  8. package/lib/Services/Auth/AuthService.service.d.ts +53 -0
  9. package/lib/Services/Auth/AuthService.service.js +221 -0
  10. package/lib/Services/Auth/AuthService.service.js.map +1 -0
  11. package/lib/Services/Auth/ConfigDatabase.service.d.ts +22 -0
  12. package/lib/Services/Auth/ConfigDatabase.service.js +47 -0
  13. package/lib/Services/Auth/ConfigDatabase.service.js.map +1 -0
  14. package/lib/Services/Auth/CookieCodec.helper.d.ts +10 -0
  15. package/lib/Services/Auth/CookieCodec.helper.js +30 -0
  16. package/lib/Services/Auth/CookieCodec.helper.js.map +1 -0
  17. package/lib/Services/Auth/LoginRateLimiter.service.d.ts +35 -0
  18. package/lib/Services/Auth/LoginRateLimiter.service.js +89 -0
  19. package/lib/Services/Auth/LoginRateLimiter.service.js.map +1 -0
  20. package/lib/Services/Auth/PasswordHasher.helper.d.ts +9 -0
  21. package/lib/Services/Auth/PasswordHasher.helper.js +54 -0
  22. package/lib/Services/Auth/PasswordHasher.helper.js.map +1 -0
  23. package/lib/Services/Auth/PermissionChecker.helper.d.ts +21 -0
  24. package/lib/Services/Auth/PermissionChecker.helper.js +41 -0
  25. package/lib/Services/Auth/PermissionChecker.helper.js.map +1 -0
  26. package/lib/Services/Auth/SessionStore.service.d.ts +23 -0
  27. package/lib/Services/Auth/SessionStore.service.js +96 -0
  28. package/lib/Services/Auth/SessionStore.service.js.map +1 -0
  29. package/lib/Services/Collection/collection.operation.d.ts +6 -0
  30. package/lib/Services/Collection/collection.operation.js +10 -0
  31. package/lib/Services/Collection/collection.operation.js.map +1 -1
  32. package/lib/Services/Index/Index.service.d.ts +20 -0
  33. package/lib/Services/Index/Index.service.js +25 -1
  34. package/lib/Services/Index/Index.service.js.map +1 -1
  35. package/lib/Services/Indexation.operation.d.ts +4 -0
  36. package/lib/Services/Indexation.operation.js +20 -6
  37. package/lib/Services/Indexation.operation.js.map +1 -1
  38. package/lib/client/AxioDBCloud.client.d.ts +20 -1
  39. package/lib/client/AxioDBCloud.client.js +54 -3
  40. package/lib/client/AxioDBCloud.client.js.map +1 -1
  41. package/lib/client/CollectionProxy.d.ts +4 -0
  42. package/lib/client/CollectionProxy.js +11 -0
  43. package/lib/client/CollectionProxy.js.map +1 -1
  44. package/lib/client/types/client.types.d.ts +8 -0
  45. package/lib/client/types/client.types.js.map +1 -1
  46. package/lib/config/Interfaces/Auth/auth.interface.d.ts +70 -0
  47. package/lib/config/Interfaces/Auth/auth.interface.js +4 -0
  48. package/lib/config/Interfaces/Auth/auth.interface.js.map +1 -0
  49. package/lib/config/Interfaces/Operation/Indexation.operation.interface.d.ts +2 -0
  50. package/lib/config/Keys/Permissions.d.ts +64 -0
  51. package/lib/config/Keys/Permissions.js +121 -0
  52. package/lib/config/Keys/Permissions.js.map +1 -0
  53. package/lib/server/config/keys.d.ts +2 -2
  54. package/lib/server/config/keys.js +109 -1
  55. package/lib/server/config/keys.js.map +1 -1
  56. package/lib/server/config/server.js +6 -0
  57. package/lib/server/config/server.js.map +1 -1
  58. package/lib/server/controller/Auth/Auth.controller.d.ts +12 -0
  59. package/lib/server/controller/Auth/Auth.controller.js +162 -0
  60. package/lib/server/controller/Auth/Auth.controller.js.map +1 -0
  61. package/lib/server/controller/Auth/RoleManagement.controller.d.ts +9 -0
  62. package/lib/server/controller/Auth/RoleManagement.controller.js +89 -0
  63. package/lib/server/controller/Auth/RoleManagement.controller.js.map +1 -0
  64. package/lib/server/controller/Auth/UserManagement.controller.d.ts +11 -0
  65. package/lib/server/controller/Auth/UserManagement.controller.js +122 -0
  66. package/lib/server/controller/Auth/UserManagement.controller.js.map +1 -0
  67. package/lib/server/controller/Collections/Collection.controller.js +10 -0
  68. package/lib/server/controller/Collections/Collection.controller.js.map +1 -1
  69. package/lib/server/controller/Database/Databse.controller.js +17 -0
  70. package/lib/server/controller/Database/Databse.controller.js.map +1 -1
  71. package/lib/server/controller/Index/Index.controller.d.ts +35 -0
  72. package/lib/server/controller/Index/Index.controller.js +148 -0
  73. package/lib/server/controller/Index/Index.controller.js.map +1 -0
  74. package/lib/server/controller/Operation/CRUD.controller.js +31 -0
  75. package/lib/server/controller/Operation/CRUD.controller.js.map +1 -1
  76. package/lib/server/helper/responseBuilder.helper.d.ts +8 -0
  77. package/lib/server/helper/responseBuilder.helper.js +11 -1
  78. package/lib/server/helper/responseBuilder.helper.js.map +1 -1
  79. package/lib/server/middleware/auth.middleware.d.ts +14 -0
  80. package/lib/server/middleware/auth.middleware.js +64 -0
  81. package/lib/server/middleware/auth.middleware.js.map +1 -0
  82. package/lib/server/middleware/permission.middleware.d.ts +6 -0
  83. package/lib/server/middleware/permission.middleware.js +36 -0
  84. package/lib/server/middleware/permission.middleware.js.map +1 -0
  85. package/lib/server/public/AxioControl/.vite/manifest.json +2 -2
  86. package/lib/server/public/AxioControl/.vite/ssr-manifest.json +10 -0
  87. package/lib/server/public/AxioControl/assets/index-D3V1EZ2f.css +1 -0
  88. package/lib/server/public/AxioControl/assets/index-DyJg6FRw.js +75 -0
  89. package/lib/server/public/AxioControl/index.html +2 -2
  90. package/lib/server/public/AxioControl/sw.js +1 -1
  91. package/lib/server/router/Router.js +18 -1
  92. package/lib/server/router/Router.js.map +1 -1
  93. package/lib/server/router/Routers/Auth.routes.d.ts +2 -0
  94. package/lib/server/router/Routers/Auth.routes.js +27 -0
  95. package/lib/server/router/Routers/Auth.routes.js.map +1 -0
  96. package/lib/server/router/Routers/Collection.routes.js +20 -3
  97. package/lib/server/router/Routers/Collection.routes.js.map +1 -1
  98. package/lib/server/router/Routers/DB.routes.js +8 -5
  99. package/lib/server/router/Routers/DB.routes.js.map +1 -1
  100. package/lib/server/router/Routers/Index.routes.d.ts +7 -0
  101. package/lib/server/router/Routers/Index.routes.js +38 -0
  102. package/lib/server/router/Routers/Index.routes.js.map +1 -0
  103. package/lib/server/router/Routers/Operation.routes.js +31 -10
  104. package/lib/server/router/Routers/Operation.routes.js.map +1 -1
  105. package/lib/server/router/Routers/RoleManagement.routes.d.ts +2 -0
  106. package/lib/server/router/Routers/RoleManagement.routes.js +28 -0
  107. package/lib/server/router/Routers/RoleManagement.routes.js.map +1 -0
  108. package/lib/server/router/Routers/UserManagement.routes.d.ts +2 -0
  109. package/lib/server/router/Routers/UserManagement.routes.js +38 -0
  110. package/lib/server/router/Routers/UserManagement.routes.js.map +1 -0
  111. package/lib/tcp/config/keys.d.ts +8 -0
  112. package/lib/tcp/config/keys.js +8 -0
  113. package/lib/tcp/config/keys.js.map +1 -1
  114. package/lib/tcp/config/permissions.d.ts +16 -0
  115. package/lib/tcp/config/permissions.js +46 -0
  116. package/lib/tcp/config/permissions.js.map +1 -0
  117. package/lib/tcp/config/protocol.js +13 -0
  118. package/lib/tcp/config/protocol.js.map +1 -1
  119. package/lib/tcp/config/server.d.ts +1 -1
  120. package/lib/tcp/config/server.js +28 -6
  121. package/lib/tcp/config/server.js.map +1 -1
  122. package/lib/tcp/connection/ConnectionManager.d.ts +19 -0
  123. package/lib/tcp/connection/ConnectionManager.js +31 -0
  124. package/lib/tcp/connection/ConnectionManager.js.map +1 -1
  125. package/lib/tcp/connection/RequestContext.d.ts +4 -1
  126. package/lib/tcp/connection/RequestContext.js +4 -1
  127. package/lib/tcp/connection/RequestContext.js.map +1 -1
  128. package/lib/tcp/handler/CommandHandler.d.ts +5 -1
  129. package/lib/tcp/handler/CommandHandler.js +34 -4
  130. package/lib/tcp/handler/CommandHandler.js.map +1 -1
  131. package/lib/tcp/handler/handlers/Auth.handler.d.ts +16 -0
  132. package/lib/tcp/handler/handlers/Auth.handler.js +91 -0
  133. package/lib/tcp/handler/handlers/Auth.handler.js.map +1 -0
  134. package/lib/tcp/handler/handlers/Operation.handler.d.ts +4 -0
  135. package/lib/tcp/handler/handlers/Operation.handler.js +27 -0
  136. package/lib/tcp/handler/handlers/Operation.handler.js.map +1 -1
  137. package/lib/tcp/types/command.types.d.ts +2 -0
  138. package/lib/tcp/types/command.types.js +5 -0
  139. package/lib/tcp/types/command.types.js.map +1 -1
  140. package/lib/tcp/types/protocol.types.d.ts +2 -0
  141. package/lib/tcp/types/protocol.types.js.map +1 -1
  142. package/package.json +2 -1
  143. package/lib/server/public/AxioControl/assets/index-BRkVgnlw.js +0 -75
  144. package/lib/server/public/AxioControl/assets/index-C8TNGVxT.css +0 -1
@@ -9,7 +9,7 @@ export declare enum ServerKeys {
9
9
  DEFAULT_KEY_ROUNDS = 1
10
10
  }
11
11
  export declare const CORS_CONFIG: {
12
- ORIGIN: string;
12
+ ORIGIN: string[];
13
13
  METHODS: string[];
14
14
  ALLOWED_HEADERS: string[];
15
15
  EXPOSED_HEADERS: string[];
@@ -18,7 +18,7 @@ export declare const CORS_CONFIG: {
18
18
  };
19
19
  export declare const staticPath: string;
20
20
  interface MainRoutesInterface {
21
- method: "GET" | "POST" | "PUT" | "DELETE";
21
+ method: "GET" | "POST" | "PUT" | "PATCH" | "DELETE";
22
22
  path: string;
23
23
  description: string;
24
24
  payload?: Record<string, any>;
@@ -18,8 +18,12 @@ var ServerKeys;
18
18
  ServerKeys[ServerKeys["DEFAULT_KEY_ROUNDS"] = 1] = "DEFAULT_KEY_ROUNDS";
19
19
  })(ServerKeys || (exports.ServerKeys = ServerKeys = {}));
20
20
  // Config for CORS
21
+ // NOTE: ORIGIN cannot be "*" while ALLOW_CREDENTIALS is true - browsers reject
22
+ // wildcard origins on credentialed (cookie-bearing) requests. 5173 is the GUI's
23
+ // Vite dev server; 27018 is where the built GUI is served from in production
24
+ // (same-origin there, so CORS doesn't matter for that case).
21
25
  exports.CORS_CONFIG = {
22
- ORIGIN: "*",
26
+ ORIGIN: ["http://localhost:5173", "http://localhost:27018"],
23
27
  METHODS: ["GET", "HEAD", "PUT", "PATCH", "POST", "DELETE"],
24
28
  ALLOWED_HEADERS: ["Content-Type", "Authorization"],
25
29
  EXPOSED_HEADERS: ["Content-Length", "X-Requested-With"],
@@ -117,6 +121,32 @@ exports.AvailableRoutes = [
117
121
  },
118
122
  ],
119
123
  },
124
+ {
125
+ groupName: "Index",
126
+ description: "Index Management Endpoints",
127
+ Paths: [
128
+ {
129
+ method: "GET",
130
+ path: "/api/index/list/?dbName&collectionName",
131
+ description: "List all indexes registered on a collection",
132
+ },
133
+ {
134
+ method: "POST",
135
+ path: "/api/index/create/",
136
+ description: "Create one or more indexes on a collection",
137
+ payload: {
138
+ dbName: "string",
139
+ collectionName: "string",
140
+ fieldNames: "array",
141
+ },
142
+ },
143
+ {
144
+ method: "DELETE",
145
+ path: "/api/index/delete/?dbName&collectionName&indexName",
146
+ description: "Delete an index from a collection",
147
+ },
148
+ ],
149
+ },
120
150
  {
121
151
  groupName: "CRUD Operations",
122
152
  description: "CRUD Operations Endpoints",
@@ -195,6 +225,84 @@ exports.AvailableRoutes = [
195
225
  },
196
226
  ],
197
227
  },
228
+ {
229
+ groupName: "Authentication",
230
+ description: "Login, session, and self-service password endpoints",
231
+ Paths: [
232
+ {
233
+ method: "POST",
234
+ path: "/api/auth/login",
235
+ description: "Authenticate with username/password and start a session",
236
+ payload: { username: "string", password: "string" },
237
+ },
238
+ {
239
+ method: "POST",
240
+ path: "/api/auth/logout",
241
+ description: "End the current session",
242
+ },
243
+ {
244
+ method: "GET",
245
+ path: "/api/auth/me",
246
+ description: "Get the currently authenticated user's role and permissions",
247
+ },
248
+ {
249
+ method: "PATCH",
250
+ path: "/api/auth/change-password",
251
+ description: "Change the current user's own password",
252
+ payload: { currentPassword: "string", newPassword: "string" },
253
+ },
254
+ ],
255
+ },
256
+ {
257
+ groupName: "User & Role Management",
258
+ description: "Super Admin-only endpoints for managing users and roles",
259
+ Paths: [
260
+ {
261
+ method: "GET",
262
+ path: "/api/auth/users",
263
+ description: "List all users",
264
+ },
265
+ {
266
+ method: "POST",
267
+ path: "/api/auth/users",
268
+ description: "Create a new user",
269
+ payload: { username: "string", password: "string", role: "string" },
270
+ },
271
+ {
272
+ method: "PATCH",
273
+ path: "/api/auth/users/:username/role",
274
+ description: "Change a user's assigned role",
275
+ payload: { role: "string" },
276
+ },
277
+ {
278
+ method: "PATCH",
279
+ path: "/api/auth/users/:username/reset-password",
280
+ description: "Reset a user's password (forces change on next login)",
281
+ payload: { newPassword: "string" },
282
+ },
283
+ {
284
+ method: "DELETE",
285
+ path: "/api/auth/users/:username",
286
+ description: "Delete a user",
287
+ },
288
+ {
289
+ method: "GET",
290
+ path: "/api/auth/roles",
291
+ description: "List all roles",
292
+ },
293
+ {
294
+ method: "POST",
295
+ path: "/api/auth/roles",
296
+ description: "Create a new role from the predefined permission catalogue",
297
+ payload: { roleName: "string", permissions: "array" },
298
+ },
299
+ {
300
+ method: "GET",
301
+ path: "/api/auth/roles/permissions",
302
+ description: "List the full predefined permission catalogue",
303
+ },
304
+ ],
305
+ },
198
306
  ];
199
307
  exports.AuthorInfo = {
200
308
  name: "Ankan Saha",
@@ -1 +1 @@
1
- {"version":3,"file":"keys.js","sourceRoot":"","sources":["../../../source/server/config/keys.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"keys.js","sourceRoot":"","sources":["../../../source/server/config/keys.ts"],"names":[],"mappings":"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"}
@@ -17,11 +17,13 @@ exports.default = createAxioDBControlServer;
17
17
  const fastify_1 = __importDefault(require("fastify"));
18
18
  const cors_1 = __importDefault(require("@fastify/cors"));
19
19
  const static_1 = __importDefault(require("@fastify/static"));
20
+ const cookie_1 = __importDefault(require("@fastify/cookie"));
20
21
  const path_1 = __importDefault(require("path"));
21
22
  const fs_1 = __importDefault(require("fs"));
22
23
  const keys_1 = require("./keys");
23
24
  const PortFreeChecker_1 = __importDefault(require("./PortFreeChecker"));
24
25
  const Router_1 = __importDefault(require("../router/Router"));
26
+ const SessionStore_service_1 = __importDefault(require("../../Services/Auth/SessionStore.service"));
25
27
  function createAxioDBControlServer(AxioDBInstance) {
26
28
  return __awaiter(this, void 0, void 0, function* () {
27
29
  yield (0, PortFreeChecker_1.default)(keys_1.ServerKeys.PORT);
@@ -39,6 +41,9 @@ function createAxioDBControlServer(AxioDBInstance) {
39
41
  exposedHeaders: keys_1.CORS_CONFIG.EXPOSED_HEADERS, // Expose specific headers
40
42
  maxAge: keys_1.CORS_CONFIG.MAX_AGE, // Cache preflight response for 24 hours
41
43
  });
44
+ // Cookie support for session-based authentication (no signing secret needed -
45
+ // the cookie value is meaningless without a matching entry in SessionStore's map)
46
+ yield AxioDBControlServer.register(cookie_1.default);
42
47
  // Configure JSON parsing
43
48
  AxioDBControlServer.addContentTypeParser("application/json", { parseAs: "string", bodyLimit: 52428800 }, (req, body, done) => {
44
49
  try {
@@ -71,6 +76,7 @@ function createAxioDBControlServer(AxioDBInstance) {
71
76
  port: Number(keys_1.ServerKeys.PORT),
72
77
  host: "0.0.0.0",
73
78
  });
79
+ SessionStore_service_1.default.startCleanupSweep();
74
80
  console.log(`AxioDB Control Server is running on http://localhost:${keys_1.ServerKeys.PORT}`);
75
81
  }
76
82
  catch (err) {
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../../../source/server/config/server.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,sDAAsD;AACtD,sDAA8B;AAC9B,yDAAwC;AACxC,6DAA4C;AAC5C,gDAAwB;AACxB,4CAAoB;AACpB,iCAA6D;AAC7D,wEAAmD;AAEnD,8DAAsC;AAEtC,mCACE,cAAsB;;QAEtB,MAAM,IAAA,yBAAkB,EAAC,iBAAU,CAAC,IAAI,CAAC,CAAC;QAE1C,MAAM,mBAAmB,GAAG,IAAA,iBAAO,EAAC;YAClC,MAAM,EAAE,KAAK,EAAE,0BAA0B;YACzC,UAAU,EAAE,IAAI,EAAE,kCAAkC;YACpD,SAAS,EAAE,QAAQ,EAAE,yBAAyB;SAC/C,CAAC,CAAC;QAEH,qBAAqB;QACrB,MAAM,mBAAmB,CAAC,QAAQ,CAAC,cAAW,EAAE;YAC9C,MAAM,EAAE,kBAAW,CAAC,MAAM,EAAE,oBAAoB;YAChD,OAAO,EAAE,kBAAW,CAAC,OAAO,EAAE,yBAAyB;YACvD,cAAc,EAAE,kBAAW,CAAC,eAAe,EAAE,yBAAyB;YACtE,WAAW,EAAE,kBAAW,CAAC,iBAAiB,EAAE,oBAAoB;YAChE,cAAc,EAAE,kBAAW,CAAC,eAAe,EAAE,0BAA0B;YACvE,MAAM,EAAE,kBAAW,CAAC,OAAO,EAAE,wCAAwC;SACtE,CAAC,CAAC;QAEH,yBAAyB;QACzB,mBAAmB,CAAC,oBAAoB,CACtC,kBAAkB,EAClB,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,EAC1C,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE;YAClB,IAAI,CAAC;gBACH,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAc,CAAC,CAAC;gBACxC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YACnB,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,IAAI,CAAC,GAAY,EAAE,SAAS,CAAC,CAAC;YAChC,CAAC;QACH,CAAC,CACF,CAAC;QAEF,6CAA6C;QAC7C,MAAM,mBAAmB,CAAC,QAAQ,CAAC,gBAAa,EAAE;YAChD,IAAI,EAAE,iBAAU;YAChB,MAAM,EAAE,GAAG;YACX,aAAa,EAAE,KAAK;SACrB,CAAC,CAAC;QAEH,uDAAuD;QACvD,mBAAmB,CAAC,GAAG,CAAC,GAAG,EAAE,CAAO,OAAO,EAAE,KAAK,EAAE,EAAE;YACpD,MAAM,SAAS,GAAG,cAAI,CAAC,IAAI,CAAC,iBAAU,EAAE,YAAY,CAAC,CAAC;YACtD,MAAM,MAAM,GAAG,YAAE,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;YAC9C,OAAO,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC9C,CAAC,CAAA,CAAC,CAAC;QAEH,4CAA4C;QAC5C,mBAAmB,CAAC,QAAQ,CAAC,gBAAM,EAAE;YACnC,MAAM,EAAE,MAAM;YACd,cAAc,EAAE,yCAAyC;SAC1D,CAAC,CAAC;QAEH,IAAI,CAAC;YACH,MAAM,mBAAmB,CAAC,MAAM,CAAC;gBAC/B,IAAI,EAAE,MAAM,CAAC,iBAAU,CAAC,IAAI,CAAC;gBAC7B,IAAI,EAAE,SAAS;aAChB,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CACT,wDAAwD,iBAAU,CAAC,IAAI,EAAE,CAC1E,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,mBAAmB,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACnC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;CAAA"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../../source/server/config/server.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import { FastifyReply, FastifyRequest } from "fastify";
2
+ import { ResponseBuilder } from "../../helper/responseBuilder.helper";
3
+ export default class AuthController {
4
+ private readonly authService;
5
+ constructor();
6
+ login(request: FastifyRequest, reply: FastifyReply): Promise<ResponseBuilder>;
7
+ logout(request: FastifyRequest, reply: FastifyReply): Promise<ResponseBuilder>;
8
+ me(request: FastifyRequest, reply: FastifyReply): Promise<ResponseBuilder>;
9
+ changePassword(request: FastifyRequest, reply: FastifyReply): Promise<ResponseBuilder>;
10
+ private setSessionCookie;
11
+ private extractSid;
12
+ }
@@ -0,0 +1,162 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
36
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
37
+ return new (P || (P = Promise))(function (resolve, reject) {
38
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
39
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
40
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
41
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
42
+ });
43
+ };
44
+ var __importDefault = (this && this.__importDefault) || function (mod) {
45
+ return (mod && mod.__esModule) ? mod : { "default": mod };
46
+ };
47
+ Object.defineProperty(exports, "__esModule", { value: true });
48
+ const StatusCode_1 = require("../../../config/Keys/StatusCode");
49
+ const responseBuilder_helper_1 = __importStar(require("../../helper/responseBuilder.helper"));
50
+ const AuthService_service_1 = __importDefault(require("../../../Services/Auth/AuthService.service"));
51
+ const SessionStore_service_1 = __importDefault(require("../../../Services/Auth/SessionStore.service"));
52
+ const CookieCodec_helper_1 = __importDefault(require("../../../Services/Auth/CookieCodec.helper"));
53
+ const PermissionChecker_helper_1 = __importDefault(require("../../../Services/Auth/PermissionChecker.helper"));
54
+ const AuthEvents_service_1 = __importDefault(require("../../../Services/Auth/AuthEvents.service"));
55
+ const LoginRateLimiter_service_1 = __importDefault(require("../../../Services/Auth/LoginRateLimiter.service"));
56
+ const Permissions_1 = require("../../../config/Keys/Permissions");
57
+ const MIN_PASSWORD_LENGTH = 4;
58
+ class AuthController {
59
+ constructor() {
60
+ this.authService = new AuthService_service_1.default();
61
+ }
62
+ login(request, reply) {
63
+ return __awaiter(this, void 0, void 0, function* () {
64
+ const { username, password } = request.body;
65
+ if (!username || typeof username !== "string") {
66
+ return (0, responseBuilder_helper_1.sendResponse)(reply, (0, responseBuilder_helper_1.default)(StatusCode_1.StatusCodes.BAD_REQUEST, "Username is required"));
67
+ }
68
+ if (!password || typeof password !== "string") {
69
+ return (0, responseBuilder_helper_1.sendResponse)(reply, (0, responseBuilder_helper_1.default)(StatusCode_1.StatusCodes.BAD_REQUEST, "Password is required"));
70
+ }
71
+ const cooldownRemaining = LoginRateLimiter_service_1.default.getCooldownRemaining(request.ip);
72
+ if (cooldownRemaining > 0) {
73
+ return (0, responseBuilder_helper_1.sendResponse)(reply, (0, responseBuilder_helper_1.default)(StatusCode_1.StatusCodes.TOO_MANY_REQUESTS, `Too many failed login attempts. Try again in ${Math.ceil(cooldownRemaining / 1000)}s.`));
74
+ }
75
+ const result = yield this.authService.login(username, password);
76
+ if (!result.success || !result.user) {
77
+ LoginRateLimiter_service_1.default.recordFailure(request.ip);
78
+ return (0, responseBuilder_helper_1.sendResponse)(reply, (0, responseBuilder_helper_1.default)(StatusCode_1.StatusCodes.UNAUTHORIZED, result.message));
79
+ }
80
+ LoginRateLimiter_service_1.default.recordSuccess(request.ip);
81
+ const session = SessionStore_service_1.default.createSession(result.user.username, result.user.role, result.user.mustChangePassword);
82
+ this.setSessionCookie(reply, session.sid);
83
+ return (0, responseBuilder_helper_1.sendResponse)(reply, (0, responseBuilder_helper_1.default)(StatusCode_1.StatusCodes.OK, "Login successful", {
84
+ username: result.user.username,
85
+ role: result.user.role,
86
+ permissions: PermissionChecker_helper_1.default.getPermissionsForRole(result.user.role),
87
+ mustChangePassword: result.user.mustChangePassword,
88
+ }));
89
+ });
90
+ }
91
+ logout(request, reply) {
92
+ return __awaiter(this, void 0, void 0, function* () {
93
+ const sid = this.extractSid(request);
94
+ if (sid) {
95
+ SessionStore_service_1.default.revokeSession(sid);
96
+ }
97
+ reply.clearCookie(Permissions_1.SESSION_COOKIE_NAME, { path: "/" });
98
+ return (0, responseBuilder_helper_1.sendResponse)(reply, (0, responseBuilder_helper_1.default)(StatusCode_1.StatusCodes.OK, "Logged out successfully"));
99
+ });
100
+ }
101
+ me(request, reply) {
102
+ return __awaiter(this, void 0, void 0, function* () {
103
+ const authUser = request.authUser;
104
+ if (!authUser) {
105
+ return (0, responseBuilder_helper_1.sendResponse)(reply, (0, responseBuilder_helper_1.default)(StatusCode_1.StatusCodes.UNAUTHORIZED, "Not authenticated"));
106
+ }
107
+ return (0, responseBuilder_helper_1.sendResponse)(reply, (0, responseBuilder_helper_1.default)(StatusCode_1.StatusCodes.OK, "OK", {
108
+ username: authUser.username,
109
+ role: authUser.role,
110
+ mustChangePassword: authUser.mustChangePassword,
111
+ permissions: PermissionChecker_helper_1.default.getPermissionsForRole(authUser.role),
112
+ }));
113
+ });
114
+ }
115
+ changePassword(request, reply) {
116
+ return __awaiter(this, void 0, void 0, function* () {
117
+ const authUser = request.authUser;
118
+ if (!authUser) {
119
+ return (0, responseBuilder_helper_1.sendResponse)(reply, (0, responseBuilder_helper_1.default)(StatusCode_1.StatusCodes.UNAUTHORIZED, "Not authenticated"));
120
+ }
121
+ const { currentPassword, newPassword } = request.body;
122
+ if (!currentPassword || typeof currentPassword !== "string") {
123
+ return (0, responseBuilder_helper_1.sendResponse)(reply, (0, responseBuilder_helper_1.default)(StatusCode_1.StatusCodes.BAD_REQUEST, "Current password is required"));
124
+ }
125
+ if (!newPassword || typeof newPassword !== "string" || newPassword.length < MIN_PASSWORD_LENGTH) {
126
+ return (0, responseBuilder_helper_1.sendResponse)(reply, (0, responseBuilder_helper_1.default)(StatusCode_1.StatusCodes.BAD_REQUEST, `New password must be at least ${MIN_PASSWORD_LENGTH} characters`));
127
+ }
128
+ const result = yield this.authService.changeOwnPassword(authUser.username, currentPassword, newPassword);
129
+ if (!result.success) {
130
+ return (0, responseBuilder_helper_1.sendResponse)(reply, (0, responseBuilder_helper_1.default)(StatusCode_1.StatusCodes.BAD_REQUEST, result.message));
131
+ }
132
+ // Rotate the session so a still-live cookie can't keep referencing the old password state.
133
+ SessionStore_service_1.default.revokeSessionsForUser(authUser.username);
134
+ AuthEvents_service_1.default.emit("user-revoked", authUser.username);
135
+ const session = SessionStore_service_1.default.createSession(authUser.username, authUser.role, false);
136
+ this.setSessionCookie(reply, session.sid);
137
+ return (0, responseBuilder_helper_1.sendResponse)(reply, (0, responseBuilder_helper_1.default)(StatusCode_1.StatusCodes.OK, "Password changed successfully", {
138
+ username: authUser.username,
139
+ role: authUser.role,
140
+ permissions: PermissionChecker_helper_1.default.getPermissionsForRole(authUser.role),
141
+ mustChangePassword: false,
142
+ }));
143
+ });
144
+ }
145
+ setSessionCookie(reply, sid) {
146
+ const cookieValue = CookieCodec_helper_1.default.encode({ sid, iat: Date.now() });
147
+ reply.setCookie(Permissions_1.SESSION_COOKIE_NAME, cookieValue, {
148
+ httpOnly: true,
149
+ sameSite: "lax",
150
+ secure: "auto",
151
+ path: "/",
152
+ maxAge: Permissions_1.SESSION_TTL_MS / 1000,
153
+ });
154
+ }
155
+ extractSid(request) {
156
+ const rawCookie = request.cookies[Permissions_1.SESSION_COOKIE_NAME];
157
+ const payload = rawCookie ? CookieCodec_helper_1.default.decode(rawCookie) : null;
158
+ return payload ? payload.sid : null;
159
+ }
160
+ }
161
+ exports.default = AuthController;
162
+ //# sourceMappingURL=Auth.controller.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Auth.controller.js","sourceRoot":"","sources":["../../../../source/server/controller/Auth/Auth.controller.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import { FastifyReply, FastifyRequest } from "fastify";
2
+ import { ResponseBuilder } from "../../helper/responseBuilder.helper";
3
+ export default class RoleManagementController {
4
+ private readonly authService;
5
+ constructor();
6
+ listRoles(request: FastifyRequest, reply: FastifyReply): Promise<ResponseBuilder>;
7
+ createRole(request: FastifyRequest, reply: FastifyReply): Promise<ResponseBuilder>;
8
+ listPermissions(request: FastifyRequest, reply: FastifyReply): Promise<ResponseBuilder>;
9
+ }
@@ -0,0 +1,89 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
36
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
37
+ return new (P || (P = Promise))(function (resolve, reject) {
38
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
39
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
40
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
41
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
42
+ });
43
+ };
44
+ var __importDefault = (this && this.__importDefault) || function (mod) {
45
+ return (mod && mod.__esModule) ? mod : { "default": mod };
46
+ };
47
+ Object.defineProperty(exports, "__esModule", { value: true });
48
+ const StatusCode_1 = require("../../../config/Keys/StatusCode");
49
+ const responseBuilder_helper_1 = __importStar(require("../../helper/responseBuilder.helper"));
50
+ const AuthService_service_1 = __importDefault(require("../../../Services/Auth/AuthService.service"));
51
+ const Permissions_1 = require("../../../config/Keys/Permissions");
52
+ class RoleManagementController {
53
+ constructor() {
54
+ this.authService = new AuthService_service_1.default();
55
+ }
56
+ listRoles(request, reply) {
57
+ return __awaiter(this, void 0, void 0, function* () {
58
+ const roles = yield this.authService.listRoles();
59
+ return (0, responseBuilder_helper_1.sendResponse)(reply, (0, responseBuilder_helper_1.default)(StatusCode_1.StatusCodes.OK, "List of Roles", roles));
60
+ });
61
+ }
62
+ createRole(request, reply) {
63
+ return __awaiter(this, void 0, void 0, function* () {
64
+ const { roleName, permissions } = request.body;
65
+ if (!roleName || typeof roleName !== "string" || roleName.trim() === "") {
66
+ return (0, responseBuilder_helper_1.sendResponse)(reply, (0, responseBuilder_helper_1.default)(StatusCode_1.StatusCodes.BAD_REQUEST, "Role name is required"));
67
+ }
68
+ if (!Array.isArray(permissions) || permissions.length === 0) {
69
+ return (0, responseBuilder_helper_1.sendResponse)(reply, (0, responseBuilder_helper_1.default)(StatusCode_1.StatusCodes.BAD_REQUEST, "At least one permission is required"));
70
+ }
71
+ if (!permissions.every((key) => typeof key === "string")) {
72
+ return (0, responseBuilder_helper_1.sendResponse)(reply, (0, responseBuilder_helper_1.default)(StatusCode_1.StatusCodes.BAD_REQUEST, "Permissions must be an array of strings"));
73
+ }
74
+ const result = yield this.authService.createRole(roleName, permissions);
75
+ if (!result.success) {
76
+ const statusCode = result.conflict ? StatusCode_1.StatusCodes.CONFLICT : StatusCode_1.StatusCodes.BAD_REQUEST;
77
+ return (0, responseBuilder_helper_1.sendResponse)(reply, (0, responseBuilder_helper_1.default)(statusCode, result.message));
78
+ }
79
+ return (0, responseBuilder_helper_1.sendResponse)(reply, (0, responseBuilder_helper_1.default)(StatusCode_1.StatusCodes.CREATED, result.message, { roleName, permissions }));
80
+ });
81
+ }
82
+ listPermissions(request, reply) {
83
+ return __awaiter(this, void 0, void 0, function* () {
84
+ return (0, responseBuilder_helper_1.sendResponse)(reply, (0, responseBuilder_helper_1.default)(StatusCode_1.StatusCodes.OK, "Permission catalogue", Permissions_1.PERMISSION_CATALOGUE));
85
+ });
86
+ }
87
+ }
88
+ exports.default = RoleManagementController;
89
+ //# sourceMappingURL=RoleManagement.controller.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RoleManagement.controller.js","sourceRoot":"","sources":["../../../../source/server/controller/Auth/RoleManagement.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,gEAA8D;AAC9D,8FAAmG;AACnG,qGAAqE;AAErE,kEAAwE;AAExE;IAGE;QACE,IAAI,CAAC,WAAW,GAAG,IAAI,6BAAW,EAAE,CAAC;IACvC,CAAC;IAEY,SAAS,CAAC,OAAuB,EAAE,KAAmB;;YACjE,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,CAAC;YACjD,OAAO,IAAA,qCAAY,EAAC,KAAK,EAAE,IAAA,gCAAa,EAAC,wBAAW,CAAC,EAAE,EAAE,eAAe,EAAE,KAAK,CAAC,CAAC,CAAC;QACpF,CAAC;KAAA;IAEY,UAAU,CAAC,OAAuB,EAAE,KAAmB;;YAClE,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,IAA6B,CAAC;YAExE,IAAI,CAAC,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;gBACxE,OAAO,IAAA,qCAAY,EAAC,KAAK,EAAE,IAAA,gCAAa,EAAC,wBAAW,CAAC,WAAW,EAAE,uBAAuB,CAAC,CAAC,CAAC;YAC9F,CAAC;YACD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC5D,OAAO,IAAA,qCAAY,EACjB,KAAK,EACL,IAAA,gCAAa,EAAC,wBAAW,CAAC,WAAW,EAAE,qCAAqC,CAAC,CAC9E,CAAC;YACJ,CAAC;YACD,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,GAAG,KAAK,QAAQ,CAAC,EAAE,CAAC;gBACzD,OAAO,IAAA,qCAAY,EACjB,KAAK,EACL,IAAA,gCAAa,EAAC,wBAAW,CAAC,WAAW,EAAE,yCAAyC,CAAC,CAClF,CAAC;YACJ,CAAC;YAED,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;YACxE,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBACpB,MAAM,UAAU,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,wBAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,wBAAW,CAAC,WAAW,CAAC;gBACpF,OAAO,IAAA,qCAAY,EAAC,KAAK,EAAE,IAAA,gCAAa,EAAC,UAAU,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;YACxE,CAAC;YACD,OAAO,IAAA,qCAAY,EACjB,KAAK,EACL,IAAA,gCAAa,EAAC,wBAAW,CAAC,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC,CAC9E,CAAC;QACJ,CAAC;KAAA;IAEY,eAAe,CAC1B,OAAuB,EACvB,KAAmB;;YAEnB,OAAO,IAAA,qCAAY,EACjB,KAAK,EACL,IAAA,gCAAa,EAAC,wBAAW,CAAC,EAAE,EAAE,sBAAsB,EAAE,kCAAoB,CAAC,CAC5E,CAAC;QACJ,CAAC;KAAA;CACF"}
@@ -0,0 +1,11 @@
1
+ import { FastifyReply, FastifyRequest } from "fastify";
2
+ import { ResponseBuilder } from "../../helper/responseBuilder.helper";
3
+ export default class UserManagementController {
4
+ private readonly authService;
5
+ constructor();
6
+ listUsers(request: FastifyRequest, reply: FastifyReply): Promise<ResponseBuilder>;
7
+ createUser(request: FastifyRequest, reply: FastifyReply): Promise<ResponseBuilder>;
8
+ resetUserPassword(request: FastifyRequest, reply: FastifyReply): Promise<ResponseBuilder>;
9
+ updateUserRole(request: FastifyRequest, reply: FastifyReply): Promise<ResponseBuilder>;
10
+ deleteUser(request: FastifyRequest, reply: FastifyReply): Promise<ResponseBuilder>;
11
+ }