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.
- package/README.md +67 -2
- package/lib/Services/Auth/AuthEvents.service.d.ts +15 -0
- package/lib/Services/Auth/AuthEvents.service.js +17 -0
- package/lib/Services/Auth/AuthEvents.service.js.map +1 -0
- package/lib/Services/Auth/AuthSeeder.service.d.ts +16 -0
- package/lib/Services/Auth/AuthSeeder.service.js +99 -0
- package/lib/Services/Auth/AuthSeeder.service.js.map +1 -0
- package/lib/Services/Auth/AuthService.service.d.ts +53 -0
- package/lib/Services/Auth/AuthService.service.js +221 -0
- package/lib/Services/Auth/AuthService.service.js.map +1 -0
- package/lib/Services/Auth/ConfigDatabase.service.d.ts +22 -0
- package/lib/Services/Auth/ConfigDatabase.service.js +47 -0
- package/lib/Services/Auth/ConfigDatabase.service.js.map +1 -0
- package/lib/Services/Auth/CookieCodec.helper.d.ts +10 -0
- package/lib/Services/Auth/CookieCodec.helper.js +30 -0
- package/lib/Services/Auth/CookieCodec.helper.js.map +1 -0
- package/lib/Services/Auth/LoginRateLimiter.service.d.ts +35 -0
- package/lib/Services/Auth/LoginRateLimiter.service.js +89 -0
- package/lib/Services/Auth/LoginRateLimiter.service.js.map +1 -0
- package/lib/Services/Auth/PasswordHasher.helper.d.ts +9 -0
- package/lib/Services/Auth/PasswordHasher.helper.js +54 -0
- package/lib/Services/Auth/PasswordHasher.helper.js.map +1 -0
- package/lib/Services/Auth/PermissionChecker.helper.d.ts +21 -0
- package/lib/Services/Auth/PermissionChecker.helper.js +41 -0
- package/lib/Services/Auth/PermissionChecker.helper.js.map +1 -0
- package/lib/Services/Auth/SessionStore.service.d.ts +23 -0
- package/lib/Services/Auth/SessionStore.service.js +96 -0
- package/lib/Services/Auth/SessionStore.service.js.map +1 -0
- package/lib/Services/Collection/collection.operation.d.ts +6 -0
- package/lib/Services/Collection/collection.operation.js +10 -0
- package/lib/Services/Collection/collection.operation.js.map +1 -1
- package/lib/Services/Index/Index.service.d.ts +20 -0
- package/lib/Services/Index/Index.service.js +25 -1
- package/lib/Services/Index/Index.service.js.map +1 -1
- package/lib/Services/Indexation.operation.d.ts +4 -0
- package/lib/Services/Indexation.operation.js +20 -6
- package/lib/Services/Indexation.operation.js.map +1 -1
- package/lib/client/AxioDBCloud.client.d.ts +20 -1
- package/lib/client/AxioDBCloud.client.js +54 -3
- package/lib/client/AxioDBCloud.client.js.map +1 -1
- package/lib/client/CollectionProxy.d.ts +4 -0
- package/lib/client/CollectionProxy.js +11 -0
- package/lib/client/CollectionProxy.js.map +1 -1
- package/lib/client/types/client.types.d.ts +8 -0
- package/lib/client/types/client.types.js.map +1 -1
- package/lib/config/Interfaces/Auth/auth.interface.d.ts +70 -0
- package/lib/config/Interfaces/Auth/auth.interface.js +4 -0
- package/lib/config/Interfaces/Auth/auth.interface.js.map +1 -0
- package/lib/config/Interfaces/Operation/Indexation.operation.interface.d.ts +2 -0
- package/lib/config/Keys/Permissions.d.ts +64 -0
- package/lib/config/Keys/Permissions.js +121 -0
- package/lib/config/Keys/Permissions.js.map +1 -0
- package/lib/server/config/keys.d.ts +2 -2
- package/lib/server/config/keys.js +109 -1
- package/lib/server/config/keys.js.map +1 -1
- package/lib/server/config/server.js +6 -0
- package/lib/server/config/server.js.map +1 -1
- package/lib/server/controller/Auth/Auth.controller.d.ts +12 -0
- package/lib/server/controller/Auth/Auth.controller.js +162 -0
- package/lib/server/controller/Auth/Auth.controller.js.map +1 -0
- package/lib/server/controller/Auth/RoleManagement.controller.d.ts +9 -0
- package/lib/server/controller/Auth/RoleManagement.controller.js +89 -0
- package/lib/server/controller/Auth/RoleManagement.controller.js.map +1 -0
- package/lib/server/controller/Auth/UserManagement.controller.d.ts +11 -0
- package/lib/server/controller/Auth/UserManagement.controller.js +122 -0
- package/lib/server/controller/Auth/UserManagement.controller.js.map +1 -0
- package/lib/server/controller/Collections/Collection.controller.js +10 -0
- package/lib/server/controller/Collections/Collection.controller.js.map +1 -1
- package/lib/server/controller/Database/Databse.controller.js +17 -0
- package/lib/server/controller/Database/Databse.controller.js.map +1 -1
- package/lib/server/controller/Index/Index.controller.d.ts +35 -0
- package/lib/server/controller/Index/Index.controller.js +148 -0
- package/lib/server/controller/Index/Index.controller.js.map +1 -0
- package/lib/server/controller/Operation/CRUD.controller.js +31 -0
- package/lib/server/controller/Operation/CRUD.controller.js.map +1 -1
- package/lib/server/helper/responseBuilder.helper.d.ts +8 -0
- package/lib/server/helper/responseBuilder.helper.js +11 -1
- package/lib/server/helper/responseBuilder.helper.js.map +1 -1
- package/lib/server/middleware/auth.middleware.d.ts +14 -0
- package/lib/server/middleware/auth.middleware.js +64 -0
- package/lib/server/middleware/auth.middleware.js.map +1 -0
- package/lib/server/middleware/permission.middleware.d.ts +6 -0
- package/lib/server/middleware/permission.middleware.js +36 -0
- package/lib/server/middleware/permission.middleware.js.map +1 -0
- package/lib/server/public/AxioControl/.vite/manifest.json +2 -2
- package/lib/server/public/AxioControl/.vite/ssr-manifest.json +10 -0
- package/lib/server/public/AxioControl/assets/index-D3V1EZ2f.css +1 -0
- package/lib/server/public/AxioControl/assets/index-DyJg6FRw.js +75 -0
- package/lib/server/public/AxioControl/index.html +2 -2
- package/lib/server/public/AxioControl/sw.js +1 -1
- package/lib/server/router/Router.js +18 -1
- package/lib/server/router/Router.js.map +1 -1
- package/lib/server/router/Routers/Auth.routes.d.ts +2 -0
- package/lib/server/router/Routers/Auth.routes.js +27 -0
- package/lib/server/router/Routers/Auth.routes.js.map +1 -0
- package/lib/server/router/Routers/Collection.routes.js +20 -3
- package/lib/server/router/Routers/Collection.routes.js.map +1 -1
- package/lib/server/router/Routers/DB.routes.js +8 -5
- package/lib/server/router/Routers/DB.routes.js.map +1 -1
- package/lib/server/router/Routers/Index.routes.d.ts +7 -0
- package/lib/server/router/Routers/Index.routes.js +38 -0
- package/lib/server/router/Routers/Index.routes.js.map +1 -0
- package/lib/server/router/Routers/Operation.routes.js +31 -10
- package/lib/server/router/Routers/Operation.routes.js.map +1 -1
- package/lib/server/router/Routers/RoleManagement.routes.d.ts +2 -0
- package/lib/server/router/Routers/RoleManagement.routes.js +28 -0
- package/lib/server/router/Routers/RoleManagement.routes.js.map +1 -0
- package/lib/server/router/Routers/UserManagement.routes.d.ts +2 -0
- package/lib/server/router/Routers/UserManagement.routes.js +38 -0
- package/lib/server/router/Routers/UserManagement.routes.js.map +1 -0
- package/lib/tcp/config/keys.d.ts +8 -0
- package/lib/tcp/config/keys.js +8 -0
- package/lib/tcp/config/keys.js.map +1 -1
- package/lib/tcp/config/permissions.d.ts +16 -0
- package/lib/tcp/config/permissions.js +46 -0
- package/lib/tcp/config/permissions.js.map +1 -0
- package/lib/tcp/config/protocol.js +13 -0
- package/lib/tcp/config/protocol.js.map +1 -1
- package/lib/tcp/config/server.d.ts +1 -1
- package/lib/tcp/config/server.js +28 -6
- package/lib/tcp/config/server.js.map +1 -1
- package/lib/tcp/connection/ConnectionManager.d.ts +19 -0
- package/lib/tcp/connection/ConnectionManager.js +31 -0
- package/lib/tcp/connection/ConnectionManager.js.map +1 -1
- package/lib/tcp/connection/RequestContext.d.ts +4 -1
- package/lib/tcp/connection/RequestContext.js +4 -1
- package/lib/tcp/connection/RequestContext.js.map +1 -1
- package/lib/tcp/handler/CommandHandler.d.ts +5 -1
- package/lib/tcp/handler/CommandHandler.js +34 -4
- package/lib/tcp/handler/CommandHandler.js.map +1 -1
- package/lib/tcp/handler/handlers/Auth.handler.d.ts +16 -0
- package/lib/tcp/handler/handlers/Auth.handler.js +91 -0
- package/lib/tcp/handler/handlers/Auth.handler.js.map +1 -0
- package/lib/tcp/handler/handlers/Operation.handler.d.ts +4 -0
- package/lib/tcp/handler/handlers/Operation.handler.js +27 -0
- package/lib/tcp/handler/handlers/Operation.handler.js.map +1 -1
- package/lib/tcp/types/command.types.d.ts +2 -0
- package/lib/tcp/types/command.types.js +5 -0
- package/lib/tcp/types/command.types.js.map +1 -1
- package/lib/tcp/types/protocol.types.d.ts +2 -0
- package/lib/tcp/types/protocol.types.js.map +1 -1
- package/package.json +2 -1
- package/lib/server/public/AxioControl/assets/index-BRkVgnlw.js +0 -75
- package/lib/server/public/AxioControl/assets/index-C8TNGVxT.css +0 -1
|
@@ -28,6 +28,9 @@ const StatusCode_1 = require("../config/Keys/StatusCode");
|
|
|
28
28
|
const response_helper_1 = __importDefault(require("../Helper/response.helper"));
|
|
29
29
|
const server_1 = __importDefault(require("../server/config/server"));
|
|
30
30
|
const server_2 = __importDefault(require("../tcp/config/server"));
|
|
31
|
+
const AuthSeeder_service_1 = __importDefault(require("./Auth/AuthSeeder.service"));
|
|
32
|
+
const Permissions_1 = require("../config/Keys/Permissions");
|
|
33
|
+
const LoginRateLimiter_service_1 = __importDefault(require("./Auth/LoginRateLimiter.service"));
|
|
31
34
|
/**
|
|
32
35
|
* Class representing the AxioDB database.
|
|
33
36
|
* @param {AxioDBOptions} options - Configuration options for AxioDB
|
|
@@ -35,19 +38,23 @@ const server_2 = __importDefault(require("../tcp/config/server"));
|
|
|
35
38
|
* @param {string} options.RootName - Custom name for the database root folder. Defaults to "AxioDB".
|
|
36
39
|
* @param {string} options.CustomPath - Custom path for database storage. Defaults to current directory.
|
|
37
40
|
* @param {boolean} options.TCP - Enable/disable TCP server (port 27019). Defaults to false.
|
|
41
|
+
* @param {boolean} options.TCPAuth - Require username/password authentication (same RBAC users as the GUI) for TCP connections. Defaults to false.
|
|
38
42
|
* @returns {AxioDB} - Returns the instance of AxioDB.
|
|
39
43
|
* @example
|
|
40
44
|
* const db = new AxioDB({ GUI: true, RootName: "MyDB", CustomPath: "./data" });
|
|
45
|
+
* @example
|
|
46
|
+
* const db = new AxioDB({ TCP: true, TCPAuth: true, RootName: "MyDB", CustomPath: "./data" });
|
|
41
47
|
*/
|
|
42
48
|
class AxioDB {
|
|
43
49
|
constructor(options = {}) {
|
|
44
50
|
this.GUI = Keys_1.General.DBMS_GUI_Enable;
|
|
45
51
|
this.TCP = false;
|
|
52
|
+
this.TCPAuth = false;
|
|
46
53
|
if (AxioDB._instance) {
|
|
47
54
|
throw new Error("Only one instance of AxioDB is allowed.");
|
|
48
55
|
}
|
|
49
56
|
AxioDB._instance = this;
|
|
50
|
-
const { GUI, RootName, CustomPath, TCP } = options;
|
|
57
|
+
const { GUI, RootName, CustomPath, TCP, TCPAuth } = options;
|
|
51
58
|
// Default Vlaues
|
|
52
59
|
this.RootName = RootName || Keys_1.General.DBMS_Name; // Set the root name
|
|
53
60
|
this.currentPATH = path_1.default.resolve(CustomPath || "."); // Set the current path
|
|
@@ -55,10 +62,11 @@ class AxioDB {
|
|
|
55
62
|
this.folderManager = new FolderManager_1.default(); // Initialize the FolderManager class
|
|
56
63
|
this.Converter = new Converter_helper_1.default(); // Initialize the Converter class
|
|
57
64
|
this.ResponseHelper = new response_helper_1.default(); // Initialize the ResponseHelper class
|
|
58
|
-
this.initializeRoot(); // Ensure root initialization
|
|
59
65
|
this.DatabaseMap = new Map(); // Initialize the DatabaseMap
|
|
60
66
|
this.GUI = GUI !== undefined ? GUI : Keys_1.General.DBMS_GUI_Enable; // Set GUI option
|
|
61
67
|
this.TCP = TCP !== undefined ? TCP : false; // Set TCP option
|
|
68
|
+
this.TCPAuth = TCPAuth !== undefined ? TCPAuth : false; // Set TCPAuth option
|
|
69
|
+
this.initializeRoot(); // Ensure root initialization (reads GUI/TCP/TCPAuth, so runs after they're set)
|
|
62
70
|
}
|
|
63
71
|
/**
|
|
64
72
|
* Initializes the root directory for the AxioDB.
|
|
@@ -83,13 +91,17 @@ class AxioDB {
|
|
|
83
91
|
console.log(`AxioDB folder created at: ${this.currentPATH}`);
|
|
84
92
|
}
|
|
85
93
|
}
|
|
94
|
+
if (this.GUI || (this.TCP && this.TCPAuth)) {
|
|
95
|
+
yield new AuthSeeder_service_1.default(this).seedIfNeeded(); // Ensure config DB, RBAC seed data exist before accepting requests
|
|
96
|
+
LoginRateLimiter_service_1.default.startCleanupSweep(); // Only relevant once some auth surface (GUI or TCPAuth) is active
|
|
97
|
+
}
|
|
86
98
|
if (this.GUI) {
|
|
87
99
|
Console_helper_1.default.green("Starting AxioDB Control Server...");
|
|
88
100
|
(0, server_1.default)(this); // Start the web Control Server with the AxioDB instance
|
|
89
101
|
}
|
|
90
102
|
if (this.TCP) {
|
|
91
103
|
Console_helper_1.default.green("Starting AxioDB TCP Server...");
|
|
92
|
-
(0, server_2.default)(this); // Start the TCP Server with the AxioDB instance
|
|
104
|
+
(0, server_2.default)(this, undefined, this.TCPAuth); // Start the TCP Server with the AxioDB instance
|
|
93
105
|
}
|
|
94
106
|
});
|
|
95
107
|
}
|
|
@@ -142,14 +154,16 @@ class AxioDB {
|
|
|
142
154
|
const totalSize = yield this.folderManager.GetDirectorySize(path_1.default.resolve(this.currentPATH));
|
|
143
155
|
// check if all data is returned
|
|
144
156
|
if ("data" in totalDatabases && "data" in totalSize) {
|
|
157
|
+
// Hide the reserved RBAC "config" database from user-facing database listings
|
|
158
|
+
const visibleDatabases = totalDatabases.data.filter((db) => db.toLowerCase() !== Permissions_1.RESERVED_DB_NAME);
|
|
145
159
|
const FinalDatabaseInfo = {
|
|
146
160
|
CurrentPath: this.currentPATH,
|
|
147
161
|
RootName: this.RootName,
|
|
148
162
|
TotalSize: parseFloat(totalSize.data),
|
|
149
|
-
TotalDatabases: `${
|
|
150
|
-
ListOfDatabases:
|
|
163
|
+
TotalDatabases: `${visibleDatabases.length} Databases`,
|
|
164
|
+
ListOfDatabases: visibleDatabases,
|
|
151
165
|
DatabaseMap: this.DatabaseMap,
|
|
152
|
-
AllDatabasesPaths:
|
|
166
|
+
AllDatabasesPaths: visibleDatabases.map((db) => path_1.default.join(this.currentPATH, db)),
|
|
153
167
|
};
|
|
154
168
|
return this.ResponseHelper.Success(FinalDatabaseInfo);
|
|
155
169
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Indexation.operation.js","sourceRoot":"","sources":["../../source/Services/Indexation.operation.ts"],"names":[],"mappings":";AAAA,uDAAuD;;;;;;;;;;;;;;;AAEvD,mBAAmB;AACnB,mFAA2D;AAC3D,uFAA+D;AAC/D,8CAA8C;AAC9C,gDAAwB;AACxB,uFAAqD;AACrD,kDAAkD;AAElD,iBAAiB;AACjB,kFAAmD;AACnD,8EAA+C;AAC/C,0DAAwD;AACxD,gFAAuD;AAQvD,qEAAgE;AAEhE,kEAAyD;
|
|
1
|
+
{"version":3,"file":"Indexation.operation.js","sourceRoot":"","sources":["../../source/Services/Indexation.operation.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { EventEmitter } from 'events';
|
|
2
2
|
import { CommandType } from '../tcp/types/command.types';
|
|
3
|
-
import { AxioDBCloudOptions, ConnectionState } from './types/client.types';
|
|
3
|
+
import { AxioDBCloudOptions, AuthenticatedUser, ConnectionState } from './types/client.types';
|
|
4
4
|
import DatabaseProxy from './DatabaseProxy';
|
|
5
5
|
/**
|
|
6
6
|
* AxioDBCloud - TCP Client for remote AxioDB access
|
|
@@ -15,6 +15,8 @@ export declare class AxioDBCloud extends EventEmitter {
|
|
|
15
15
|
private options;
|
|
16
16
|
private reconnectAttempt;
|
|
17
17
|
private heartbeatInterval;
|
|
18
|
+
private credentials?;
|
|
19
|
+
private authUser?;
|
|
18
20
|
constructor(connectionString: string, options?: AxioDBCloudOptions);
|
|
19
21
|
/**
|
|
20
22
|
* Parse connection string: axiodb://host:port
|
|
@@ -24,6 +26,23 @@ export declare class AxioDBCloud extends EventEmitter {
|
|
|
24
26
|
* Connect to AxioDB TCP server
|
|
25
27
|
*/
|
|
26
28
|
connect(): Promise<void>;
|
|
29
|
+
/**
|
|
30
|
+
* Authenticate with username/password (same RBAC users as the GUI Control Server).
|
|
31
|
+
* Only required when the server was started with `TCPAuth: true`.
|
|
32
|
+
*
|
|
33
|
+
* Stashes the credentials so a later automatic reconnect replays login - otherwise a
|
|
34
|
+
* network blip after a runtime `login()` call would silently leave the reconnected
|
|
35
|
+
* socket unauthenticated.
|
|
36
|
+
*/
|
|
37
|
+
login(username: string, password: string): Promise<AuthenticatedUser>;
|
|
38
|
+
/**
|
|
39
|
+
* Sends the AUTHENTICATE command and stores the resulting identity.
|
|
40
|
+
*/
|
|
41
|
+
private performAuthenticate;
|
|
42
|
+
/**
|
|
43
|
+
* The currently authenticated identity, if `login()` (or constructor credentials) succeeded.
|
|
44
|
+
*/
|
|
45
|
+
get authenticatedUser(): AuthenticatedUser | undefined;
|
|
27
46
|
/**
|
|
28
47
|
* Setup socket event handlers
|
|
29
48
|
*/
|
|
@@ -47,6 +47,9 @@ class AxioDBCloud extends events_1.EventEmitter {
|
|
|
47
47
|
reconnectDelay: (options === null || options === void 0 ? void 0 : options.reconnectDelay) || 1000,
|
|
48
48
|
heartbeatInterval: (options === null || options === void 0 ? void 0 : options.heartbeatInterval) || 30000,
|
|
49
49
|
};
|
|
50
|
+
if ((options === null || options === void 0 ? void 0 : options.username) && (options === null || options === void 0 ? void 0 : options.password)) {
|
|
51
|
+
this.credentials = { username: options.username, password: options.password };
|
|
52
|
+
}
|
|
50
53
|
}
|
|
51
54
|
/**
|
|
52
55
|
* Parse connection string: axiodb://host:port
|
|
@@ -90,14 +93,31 @@ class AxioDBCloud extends events_1.EventEmitter {
|
|
|
90
93
|
reject(new Error('Connection timeout'));
|
|
91
94
|
}, this.options.timeout);
|
|
92
95
|
// Connect to server
|
|
93
|
-
this.socket.connect(this.port, this.host, () => {
|
|
96
|
+
this.socket.connect(this.port, this.host, () => __awaiter(this, void 0, void 0, function* () {
|
|
97
|
+
var _a;
|
|
94
98
|
clearTimeout(connectionTimeout);
|
|
95
99
|
this.connectionState = client_types_1.ConnectionState.CONNECTED;
|
|
96
100
|
this.reconnectAttempt = 0;
|
|
97
101
|
this.startHeartbeat();
|
|
98
102
|
this.emit('connected');
|
|
99
|
-
|
|
100
|
-
|
|
103
|
+
if (!this.credentials) {
|
|
104
|
+
resolve();
|
|
105
|
+
return;
|
|
106
|
+
}
|
|
107
|
+
try {
|
|
108
|
+
yield this.performAuthenticate(this.credentials.username, this.credentials.password);
|
|
109
|
+
resolve();
|
|
110
|
+
}
|
|
111
|
+
catch (authError) {
|
|
112
|
+
// Mirror disconnect()'s guard: prevent handleDisconnection's auto-reconnect
|
|
113
|
+
// from retrying the same bad credentials up to `reconnectAttempts` times.
|
|
114
|
+
this.reconnectAttempt = this.options.reconnectAttempts;
|
|
115
|
+
this.connectionState = client_types_1.ConnectionState.FAILED;
|
|
116
|
+
this.stopHeartbeat();
|
|
117
|
+
(_a = this.socket) === null || _a === void 0 ? void 0 : _a.destroy();
|
|
118
|
+
reject(authError);
|
|
119
|
+
}
|
|
120
|
+
}));
|
|
101
121
|
// Handle connection errors
|
|
102
122
|
this.socket.once('error', (error) => {
|
|
103
123
|
clearTimeout(connectionTimeout);
|
|
@@ -107,6 +127,37 @@ class AxioDBCloud extends events_1.EventEmitter {
|
|
|
107
127
|
});
|
|
108
128
|
});
|
|
109
129
|
}
|
|
130
|
+
/**
|
|
131
|
+
* Authenticate with username/password (same RBAC users as the GUI Control Server).
|
|
132
|
+
* Only required when the server was started with `TCPAuth: true`.
|
|
133
|
+
*
|
|
134
|
+
* Stashes the credentials so a later automatic reconnect replays login - otherwise a
|
|
135
|
+
* network blip after a runtime `login()` call would silently leave the reconnected
|
|
136
|
+
* socket unauthenticated.
|
|
137
|
+
*/
|
|
138
|
+
login(username, password) {
|
|
139
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
140
|
+
const authUser = yield this.performAuthenticate(username, password);
|
|
141
|
+
this.credentials = { username, password };
|
|
142
|
+
return authUser;
|
|
143
|
+
});
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Sends the AUTHENTICATE command and stores the resulting identity.
|
|
147
|
+
*/
|
|
148
|
+
performAuthenticate(username, password) {
|
|
149
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
150
|
+
const result = yield this.sendCommand(command_types_1.CommandType.AUTHENTICATE, { username, password });
|
|
151
|
+
this.authUser = result;
|
|
152
|
+
return this.authUser;
|
|
153
|
+
});
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* The currently authenticated identity, if `login()` (or constructor credentials) succeeded.
|
|
157
|
+
*/
|
|
158
|
+
get authenticatedUser() {
|
|
159
|
+
return this.authUser;
|
|
160
|
+
}
|
|
110
161
|
/**
|
|
111
162
|
* Setup socket event handlers
|
|
112
163
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AxioDBCloud.client.js","sourceRoot":"","sources":["../../source/client/AxioDBCloud.client.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,sDAAsD;AACtD,uDAAuD;AACvD,6BAA6B;AAC7B,mCAAoC;AACpC,mCAAsC;AACtC,qDAAsE;AAEtE,8DAAyD;AACzD,
|
|
1
|
+
{"version":3,"file":"AxioDBCloud.client.js","sourceRoot":"","sources":["../../source/client/AxioDBCloud.client.ts"],"names":[],"mappings":"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"}
|
|
@@ -110,6 +110,17 @@ class CollectionProxy {
|
|
|
110
110
|
});
|
|
111
111
|
});
|
|
112
112
|
}
|
|
113
|
+
/**
|
|
114
|
+
* List all indexes registered on this collection
|
|
115
|
+
*/
|
|
116
|
+
listIndexes() {
|
|
117
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
118
|
+
return yield this.client.sendCommand(command_types_1.CommandType.LIST_INDEXES, {
|
|
119
|
+
dbName: this.dbName,
|
|
120
|
+
collectionName: this.collectionName,
|
|
121
|
+
});
|
|
122
|
+
});
|
|
123
|
+
}
|
|
113
124
|
/**
|
|
114
125
|
* Get collection name
|
|
115
126
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CollectionProxy.js","sourceRoot":"","sources":["../../source/client/CollectionProxy.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AACA,8DAAyD;AACzD,gEAAwC;AACxC,kFAA0D;AAC1D,kFAA0D;AAC1D,0EAAkD;AAElD;;;GAGG;AACH;IAKE,YAAY,MAAmB,EAAE,MAAc,EAAE,cAAsB;QACrE,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;IACvC,CAAC;IAED;;OAEG;IACG,MAAM,CAAC,IAAY;;YACvB,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,2BAAW,CAAC,eAAe,EAAE;gBAChE,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,cAAc,EAAE,IAAI,CAAC,cAAc;gBACnC,IAAI;aACL,CAAC,CAAC;QACL,CAAC;KAAA;IAED;;OAEG;IACG,UAAU,CAAC,SAAmB;;YAClC,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,2BAAW,CAAC,qBAAqB,EAAE;gBACtE,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,cAAc,EAAE,IAAI,CAAC,cAAc;gBACnC,SAAS;aACV,CAAC,CAAC;QACL,CAAC;KAAA;IAED;;OAEG;IACH,KAAK,CAAC,KAAa;QACjB,OAAO,IAAI,qBAAW,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;IAC/E,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,KAAa;QAClB,OAAO,IAAI,8BAAoB,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;IACxF,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,KAAa;QAClB,OAAO,IAAI,8BAAoB,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;IACxF,CAAC;IAED;;OAEG;IACH,SAAS,CAAC,QAAkB;QAC1B,OAAO,IAAI,0BAAgB,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;IACvF,CAAC;IAED;;OAEG;IACG,cAAc;;YAClB,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,2BAAW,CAAC,eAAe,EAAE;gBAChE,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,cAAc,EAAE,IAAI,CAAC,cAAc;aACpC,CAAC,CAAC;QACL,CAAC;KAAA;IAED;;OAEG;IACG,QAAQ,CAAC,GAAG,UAAoB;;YACpC,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,2BAAW,CAAC,YAAY,EAAE;gBAC7D,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,cAAc,EAAE,IAAI,CAAC,cAAc;gBACnC,UAAU;aACX,CAAC,CAAC;QACL,CAAC;KAAA;IAED;;OAEG;IACG,SAAS,CAAC,SAAiB;;YAC/B,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,2BAAW,CAAC,UAAU,EAAE;gBAC3D,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,cAAc,EAAE,IAAI,CAAC,cAAc;gBACnC,SAAS;aACV,CAAC,CAAC;QACL,CAAC;KAAA;IAED;;OAEG;IACH,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,cAAc,CAAC;IAC7B,CAAC;CACF"}
|
|
1
|
+
{"version":3,"file":"CollectionProxy.js","sourceRoot":"","sources":["../../source/client/CollectionProxy.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,6 +9,14 @@ export interface AxioDBCloudOptions {
|
|
|
9
9
|
reconnectAttempts?: number;
|
|
10
10
|
reconnectDelay?: number;
|
|
11
11
|
heartbeatInterval?: number;
|
|
12
|
+
username?: string;
|
|
13
|
+
password?: string;
|
|
14
|
+
}
|
|
15
|
+
/** Public shape returned by a successful AUTHENTICATE command. */
|
|
16
|
+
export interface AuthenticatedUser {
|
|
17
|
+
username: string;
|
|
18
|
+
role: string;
|
|
19
|
+
mustChangePassword: boolean;
|
|
12
20
|
}
|
|
13
21
|
/**
|
|
14
22
|
* Connection state
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.types.js","sourceRoot":"","sources":["../../../source/client/types/client.types.ts"],"names":[],"mappings":";AAAA;;GAEG;;;
|
|
1
|
+
{"version":3,"file":"client.types.js","sourceRoot":"","sources":["../../../source/client/types/client.types.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAqBH;;GAEG;AACH,IAAY,eAMX;AAND,WAAY,eAAe;IACzB,gDAA6B,CAAA;IAC7B,4CAAyB,CAAA;IACzB,0CAAuB,CAAA;IACvB,gDAA6B,CAAA;IAC7B,oCAAiB,CAAA;AACnB,CAAC,EANW,eAAe,aAAf,eAAe,GAAf,eAAe,QAM1B"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/** Document shape stored in the `config.users` collection. */
|
|
2
|
+
export interface UserDocument {
|
|
3
|
+
documentId?: string;
|
|
4
|
+
username: string;
|
|
5
|
+
passwordHash: string;
|
|
6
|
+
role: string;
|
|
7
|
+
mustChangePassword: boolean;
|
|
8
|
+
isActive: boolean;
|
|
9
|
+
createdAt: string;
|
|
10
|
+
updatedAt?: string;
|
|
11
|
+
}
|
|
12
|
+
/** Document shape stored in the `config.roles` collection. */
|
|
13
|
+
export interface RoleDocument {
|
|
14
|
+
documentId?: string;
|
|
15
|
+
roleName: string;
|
|
16
|
+
permissions: string[];
|
|
17
|
+
isSystemRole: boolean;
|
|
18
|
+
createdAt: string;
|
|
19
|
+
}
|
|
20
|
+
/** Document shape stored in the `config.permissions` collection. */
|
|
21
|
+
export interface PermissionDocument {
|
|
22
|
+
documentId?: string;
|
|
23
|
+
key: string;
|
|
24
|
+
group: string;
|
|
25
|
+
description: string;
|
|
26
|
+
}
|
|
27
|
+
/** In-memory session record kept only for the lifetime of the server process. */
|
|
28
|
+
export interface SessionRecord {
|
|
29
|
+
sid: string;
|
|
30
|
+
username: string;
|
|
31
|
+
role: string;
|
|
32
|
+
mustChangePassword: boolean;
|
|
33
|
+
createdAt: number;
|
|
34
|
+
lastSeenAt: number;
|
|
35
|
+
expiresAt: number;
|
|
36
|
+
}
|
|
37
|
+
/** Payload embedded (base64url-encoded) inside the session cookie. Never trust `username`/`role` from this - it only carries the lookup key. */
|
|
38
|
+
export interface CookiePayload {
|
|
39
|
+
sid: string;
|
|
40
|
+
iat: number;
|
|
41
|
+
}
|
|
42
|
+
/** Public shape returned to the frontend describing the authenticated caller. */
|
|
43
|
+
export interface AuthenticatedUser {
|
|
44
|
+
username: string;
|
|
45
|
+
role: string;
|
|
46
|
+
mustChangePassword: boolean;
|
|
47
|
+
}
|
|
48
|
+
export interface LoginRequestBody {
|
|
49
|
+
username: string;
|
|
50
|
+
password: string;
|
|
51
|
+
}
|
|
52
|
+
export interface ChangePasswordRequestBody {
|
|
53
|
+
currentPassword: string;
|
|
54
|
+
newPassword: string;
|
|
55
|
+
}
|
|
56
|
+
export interface CreateUserRequestBody {
|
|
57
|
+
username: string;
|
|
58
|
+
password: string;
|
|
59
|
+
role: string;
|
|
60
|
+
}
|
|
61
|
+
export interface ResetPasswordRequestBody {
|
|
62
|
+
newPassword: string;
|
|
63
|
+
}
|
|
64
|
+
export interface UpdateUserRoleRequestBody {
|
|
65
|
+
role: string;
|
|
66
|
+
}
|
|
67
|
+
export interface CreateRoleRequestBody {
|
|
68
|
+
roleName: string;
|
|
69
|
+
permissions: string[];
|
|
70
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.interface.js","sourceRoot":"","sources":["../../../../source/config/Interfaces/Auth/auth.interface.ts"],"names":[],"mappings":";AAAA,mEAAmE"}
|
|
@@ -4,6 +4,8 @@ export interface AxioDBOptions {
|
|
|
4
4
|
RootName?: string;
|
|
5
5
|
CustomPath?: string;
|
|
6
6
|
TCP?: boolean;
|
|
7
|
+
/** Require username/password authentication (same RBAC users as the GUI) for TCP connections. Defaults to false. */
|
|
8
|
+
TCPAuth?: boolean;
|
|
7
9
|
}
|
|
8
10
|
export interface FinalDatabaseInfo {
|
|
9
11
|
CurrentPath: string;
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
export declare const PERMISSIONS: {
|
|
2
|
+
readonly DB_VIEW: "db:view";
|
|
3
|
+
readonly DB_CREATE: "db:create";
|
|
4
|
+
readonly DB_DELETE: "db:delete";
|
|
5
|
+
readonly DB_EXPORT: "db:export";
|
|
6
|
+
readonly DB_IMPORT: "db:import";
|
|
7
|
+
readonly COLLECTION_VIEW: "collection:view";
|
|
8
|
+
readonly COLLECTION_CREATE: "collection:create";
|
|
9
|
+
readonly COLLECTION_DELETE: "collection:delete";
|
|
10
|
+
readonly DOCUMENT_VIEW: "document:view";
|
|
11
|
+
readonly DOCUMENT_QUERY: "document:query";
|
|
12
|
+
readonly DOCUMENT_CREATE: "document:create";
|
|
13
|
+
readonly DOCUMENT_UPDATE: "document:update";
|
|
14
|
+
readonly DOCUMENT_DELETE: "document:delete";
|
|
15
|
+
readonly DOCUMENT_AGGREGATE: "document:aggregate";
|
|
16
|
+
readonly DASHBOARD_VIEW: "dashboard:view";
|
|
17
|
+
readonly USER_VIEW: "user:view";
|
|
18
|
+
readonly USER_CREATE: "user:create";
|
|
19
|
+
readonly USER_UPDATE_ROLE: "user:update-role";
|
|
20
|
+
readonly USER_RESET_PASSWORD: "user:reset-password";
|
|
21
|
+
readonly USER_DELETE: "user:delete";
|
|
22
|
+
readonly ROLE_VIEW: "role:view";
|
|
23
|
+
readonly ROLE_CREATE: "role:create";
|
|
24
|
+
readonly INDEX_VIEW: "index:view";
|
|
25
|
+
readonly INDEX_CREATE: "index:create";
|
|
26
|
+
readonly INDEX_DELETE: "index:delete";
|
|
27
|
+
};
|
|
28
|
+
export type PermissionKey = (typeof PERMISSIONS)[keyof typeof PERMISSIONS];
|
|
29
|
+
interface PermissionCatalogueEntry {
|
|
30
|
+
key: PermissionKey;
|
|
31
|
+
group: string;
|
|
32
|
+
description: string;
|
|
33
|
+
}
|
|
34
|
+
export declare const PERMISSION_CATALOGUE: PermissionCatalogueEntry[];
|
|
35
|
+
export declare const ALL_PERMISSION_KEYS: string[];
|
|
36
|
+
export declare const SUPER_ADMIN_ROLE = "Super Admin";
|
|
37
|
+
export declare const ADMIN_ROLE = "Admin";
|
|
38
|
+
export declare const VIEW_ROLE = "View";
|
|
39
|
+
export declare const PREDEFINED_ROLES: {
|
|
40
|
+
roleName: string;
|
|
41
|
+
permissions: string[];
|
|
42
|
+
}[];
|
|
43
|
+
export declare const RESERVED_DB_NAME = "config";
|
|
44
|
+
/** The `config` database backs the RBAC system and must never be reachable through the generic Database/Collection/Operation routes. */
|
|
45
|
+
export declare function isReservedDatabaseName(name: string): boolean;
|
|
46
|
+
export declare const CONFIG_USERS_COLLECTION = "users";
|
|
47
|
+
export declare const CONFIG_ROLES_COLLECTION = "roles";
|
|
48
|
+
export declare const CONFIG_PERMISSIONS_COLLECTION = "permissions";
|
|
49
|
+
export declare const DEFAULT_ADMIN_USERNAME = "admin";
|
|
50
|
+
export declare const DEFAULT_ADMIN_PASSWORD = "admin";
|
|
51
|
+
export declare const SESSION_COOKIE_NAME = "axiodb_session";
|
|
52
|
+
export declare const SESSION_TTL_MS: number;
|
|
53
|
+
export declare const SESSION_SWEEP_INTERVAL_MS: number;
|
|
54
|
+
/**
|
|
55
|
+
* Login rate limiting - shared by the GUI's /auth/login route and the TCP AUTHENTICATE
|
|
56
|
+
* command (see LoginRateLimiter.service.ts). Tracked per client IP: after
|
|
57
|
+
* LOGIN_RATE_LIMIT_MAX_ATTEMPTS failures within LOGIN_RATE_LIMIT_WINDOW_MS, that IP is
|
|
58
|
+
* locked out for LOGIN_RATE_LIMIT_COOLDOWN_MS.
|
|
59
|
+
*/
|
|
60
|
+
export declare const LOGIN_RATE_LIMIT_MAX_ATTEMPTS = 5;
|
|
61
|
+
export declare const LOGIN_RATE_LIMIT_WINDOW_MS: number;
|
|
62
|
+
export declare const LOGIN_RATE_LIMIT_COOLDOWN_MS: number;
|
|
63
|
+
export declare const LOGIN_RATE_LIMIT_SWEEP_INTERVAL_MS: number;
|
|
64
|
+
export {};
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Predefined permission catalogue and role matrix for the Control Server's RBAC system.
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.LOGIN_RATE_LIMIT_SWEEP_INTERVAL_MS = exports.LOGIN_RATE_LIMIT_COOLDOWN_MS = exports.LOGIN_RATE_LIMIT_WINDOW_MS = exports.LOGIN_RATE_LIMIT_MAX_ATTEMPTS = exports.SESSION_SWEEP_INTERVAL_MS = exports.SESSION_TTL_MS = exports.SESSION_COOKIE_NAME = exports.DEFAULT_ADMIN_PASSWORD = exports.DEFAULT_ADMIN_USERNAME = exports.CONFIG_PERMISSIONS_COLLECTION = exports.CONFIG_ROLES_COLLECTION = exports.CONFIG_USERS_COLLECTION = exports.RESERVED_DB_NAME = exports.PREDEFINED_ROLES = exports.VIEW_ROLE = exports.ADMIN_ROLE = exports.SUPER_ADMIN_ROLE = exports.ALL_PERMISSION_KEYS = exports.PERMISSION_CATALOGUE = exports.PERMISSIONS = void 0;
|
|
5
|
+
exports.isReservedDatabaseName = isReservedDatabaseName;
|
|
6
|
+
exports.PERMISSIONS = {
|
|
7
|
+
DB_VIEW: "db:view",
|
|
8
|
+
DB_CREATE: "db:create",
|
|
9
|
+
DB_DELETE: "db:delete",
|
|
10
|
+
DB_EXPORT: "db:export",
|
|
11
|
+
DB_IMPORT: "db:import",
|
|
12
|
+
COLLECTION_VIEW: "collection:view",
|
|
13
|
+
COLLECTION_CREATE: "collection:create",
|
|
14
|
+
COLLECTION_DELETE: "collection:delete",
|
|
15
|
+
DOCUMENT_VIEW: "document:view",
|
|
16
|
+
DOCUMENT_QUERY: "document:query",
|
|
17
|
+
DOCUMENT_CREATE: "document:create",
|
|
18
|
+
DOCUMENT_UPDATE: "document:update",
|
|
19
|
+
DOCUMENT_DELETE: "document:delete",
|
|
20
|
+
DOCUMENT_AGGREGATE: "document:aggregate",
|
|
21
|
+
DASHBOARD_VIEW: "dashboard:view",
|
|
22
|
+
USER_VIEW: "user:view",
|
|
23
|
+
USER_CREATE: "user:create",
|
|
24
|
+
USER_UPDATE_ROLE: "user:update-role",
|
|
25
|
+
USER_RESET_PASSWORD: "user:reset-password",
|
|
26
|
+
USER_DELETE: "user:delete",
|
|
27
|
+
ROLE_VIEW: "role:view",
|
|
28
|
+
ROLE_CREATE: "role:create",
|
|
29
|
+
INDEX_VIEW: "index:view",
|
|
30
|
+
INDEX_CREATE: "index:create",
|
|
31
|
+
INDEX_DELETE: "index:delete",
|
|
32
|
+
};
|
|
33
|
+
exports.PERMISSION_CATALOGUE = [
|
|
34
|
+
{ key: exports.PERMISSIONS.DB_VIEW, group: "Database", description: "View the list of databases and dashboard database counts" },
|
|
35
|
+
{ key: exports.PERMISSIONS.DB_CREATE, group: "Database", description: "Create new databases" },
|
|
36
|
+
{ key: exports.PERMISSIONS.DB_DELETE, group: "Database", description: "Delete databases" },
|
|
37
|
+
{ key: exports.PERMISSIONS.DB_EXPORT, group: "Database", description: "Export a database as a compressed archive" },
|
|
38
|
+
{ key: exports.PERMISSIONS.DB_IMPORT, group: "Database", description: "Import a database from a compressed archive" },
|
|
39
|
+
{ key: exports.PERMISSIONS.COLLECTION_VIEW, group: "Collection", description: "View collections inside a database" },
|
|
40
|
+
{ key: exports.PERMISSIONS.COLLECTION_CREATE, group: "Collection", description: "Create new collections" },
|
|
41
|
+
{ key: exports.PERMISSIONS.COLLECTION_DELETE, group: "Collection", description: "Delete collections" },
|
|
42
|
+
{ key: exports.PERMISSIONS.DOCUMENT_VIEW, group: "Document", description: "View documents inside a collection" },
|
|
43
|
+
{ key: exports.PERMISSIONS.DOCUMENT_QUERY, group: "Document", description: "Query documents with filters" },
|
|
44
|
+
{ key: exports.PERMISSIONS.DOCUMENT_CREATE, group: "Document", description: "Create new documents" },
|
|
45
|
+
{ key: exports.PERMISSIONS.DOCUMENT_UPDATE, group: "Document", description: "Update existing documents" },
|
|
46
|
+
{ key: exports.PERMISSIONS.DOCUMENT_DELETE, group: "Document", description: "Delete documents" },
|
|
47
|
+
{ key: exports.PERMISSIONS.DOCUMENT_AGGREGATE, group: "Document", description: "Run aggregation pipelines" },
|
|
48
|
+
{ key: exports.PERMISSIONS.DASHBOARD_VIEW, group: "Dashboard", description: "View dashboard statistics" },
|
|
49
|
+
{ key: exports.PERMISSIONS.USER_VIEW, group: "User Management", description: "View the list of users" },
|
|
50
|
+
{ key: exports.PERMISSIONS.USER_CREATE, group: "User Management", description: "Create new users" },
|
|
51
|
+
{ key: exports.PERMISSIONS.USER_UPDATE_ROLE, group: "User Management", description: "Change a user's assigned role" },
|
|
52
|
+
{ key: exports.PERMISSIONS.USER_RESET_PASSWORD, group: "User Management", description: "Reset a user's password" },
|
|
53
|
+
{ key: exports.PERMISSIONS.USER_DELETE, group: "User Management", description: "Delete a user" },
|
|
54
|
+
{ key: exports.PERMISSIONS.ROLE_VIEW, group: "Role Management", description: "View the list of roles and the permission catalogue" },
|
|
55
|
+
{ key: exports.PERMISSIONS.ROLE_CREATE, group: "Role Management", description: "Create new roles from the predefined permission catalogue" },
|
|
56
|
+
{ key: exports.PERMISSIONS.INDEX_VIEW, group: "Index", description: "View the list of indexes on a collection" },
|
|
57
|
+
{ key: exports.PERMISSIONS.INDEX_CREATE, group: "Index", description: "Create new indexes on a collection" },
|
|
58
|
+
{ key: exports.PERMISSIONS.INDEX_DELETE, group: "Index", description: "Delete an index from a collection" },
|
|
59
|
+
];
|
|
60
|
+
exports.ALL_PERMISSION_KEYS = exports.PERMISSION_CATALOGUE.map((entry) => entry.key);
|
|
61
|
+
const DATA_PLANE_PERMISSIONS = [
|
|
62
|
+
exports.PERMISSIONS.DB_VIEW,
|
|
63
|
+
exports.PERMISSIONS.DB_CREATE,
|
|
64
|
+
exports.PERMISSIONS.DB_DELETE,
|
|
65
|
+
exports.PERMISSIONS.DB_EXPORT,
|
|
66
|
+
exports.PERMISSIONS.DB_IMPORT,
|
|
67
|
+
exports.PERMISSIONS.COLLECTION_VIEW,
|
|
68
|
+
exports.PERMISSIONS.COLLECTION_CREATE,
|
|
69
|
+
exports.PERMISSIONS.COLLECTION_DELETE,
|
|
70
|
+
exports.PERMISSIONS.DOCUMENT_VIEW,
|
|
71
|
+
exports.PERMISSIONS.DOCUMENT_QUERY,
|
|
72
|
+
exports.PERMISSIONS.DOCUMENT_CREATE,
|
|
73
|
+
exports.PERMISSIONS.DOCUMENT_UPDATE,
|
|
74
|
+
exports.PERMISSIONS.DOCUMENT_DELETE,
|
|
75
|
+
exports.PERMISSIONS.DOCUMENT_AGGREGATE,
|
|
76
|
+
exports.PERMISSIONS.DASHBOARD_VIEW,
|
|
77
|
+
exports.PERMISSIONS.INDEX_VIEW,
|
|
78
|
+
exports.PERMISSIONS.INDEX_CREATE,
|
|
79
|
+
exports.PERMISSIONS.INDEX_DELETE,
|
|
80
|
+
];
|
|
81
|
+
const VIEW_ONLY_PERMISSIONS = [
|
|
82
|
+
exports.PERMISSIONS.DB_VIEW,
|
|
83
|
+
exports.PERMISSIONS.COLLECTION_VIEW,
|
|
84
|
+
exports.PERMISSIONS.DOCUMENT_VIEW,
|
|
85
|
+
exports.PERMISSIONS.DOCUMENT_QUERY,
|
|
86
|
+
exports.PERMISSIONS.DOCUMENT_AGGREGATE,
|
|
87
|
+
exports.PERMISSIONS.DASHBOARD_VIEW,
|
|
88
|
+
exports.PERMISSIONS.INDEX_VIEW,
|
|
89
|
+
];
|
|
90
|
+
exports.SUPER_ADMIN_ROLE = "Super Admin";
|
|
91
|
+
exports.ADMIN_ROLE = "Admin";
|
|
92
|
+
exports.VIEW_ROLE = "View";
|
|
93
|
+
exports.PREDEFINED_ROLES = [
|
|
94
|
+
{ roleName: exports.SUPER_ADMIN_ROLE, permissions: exports.ALL_PERMISSION_KEYS },
|
|
95
|
+
{ roleName: exports.ADMIN_ROLE, permissions: DATA_PLANE_PERMISSIONS },
|
|
96
|
+
{ roleName: exports.VIEW_ROLE, permissions: VIEW_ONLY_PERMISSIONS },
|
|
97
|
+
];
|
|
98
|
+
exports.RESERVED_DB_NAME = "config";
|
|
99
|
+
/** The `config` database backs the RBAC system and must never be reachable through the generic Database/Collection/Operation routes. */
|
|
100
|
+
function isReservedDatabaseName(name) {
|
|
101
|
+
return typeof name === "string" && name.toLowerCase() === exports.RESERVED_DB_NAME;
|
|
102
|
+
}
|
|
103
|
+
exports.CONFIG_USERS_COLLECTION = "users";
|
|
104
|
+
exports.CONFIG_ROLES_COLLECTION = "roles";
|
|
105
|
+
exports.CONFIG_PERMISSIONS_COLLECTION = "permissions";
|
|
106
|
+
exports.DEFAULT_ADMIN_USERNAME = "admin";
|
|
107
|
+
exports.DEFAULT_ADMIN_PASSWORD = "admin";
|
|
108
|
+
exports.SESSION_COOKIE_NAME = "axiodb_session";
|
|
109
|
+
exports.SESSION_TTL_MS = 24 * 60 * 60 * 1000; // 24 hours
|
|
110
|
+
exports.SESSION_SWEEP_INTERVAL_MS = 5 * 60 * 1000; // 5 minutes
|
|
111
|
+
/**
|
|
112
|
+
* Login rate limiting - shared by the GUI's /auth/login route and the TCP AUTHENTICATE
|
|
113
|
+
* command (see LoginRateLimiter.service.ts). Tracked per client IP: after
|
|
114
|
+
* LOGIN_RATE_LIMIT_MAX_ATTEMPTS failures within LOGIN_RATE_LIMIT_WINDOW_MS, that IP is
|
|
115
|
+
* locked out for LOGIN_RATE_LIMIT_COOLDOWN_MS.
|
|
116
|
+
*/
|
|
117
|
+
exports.LOGIN_RATE_LIMIT_MAX_ATTEMPTS = 5;
|
|
118
|
+
exports.LOGIN_RATE_LIMIT_WINDOW_MS = 15 * 60 * 1000; // 15 minutes
|
|
119
|
+
exports.LOGIN_RATE_LIMIT_COOLDOWN_MS = 15 * 60 * 1000; // 15 minutes
|
|
120
|
+
exports.LOGIN_RATE_LIMIT_SWEEP_INTERVAL_MS = 5 * 60 * 1000; // 5 minutes
|
|
121
|
+
//# sourceMappingURL=Permissions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Permissions.js","sourceRoot":"","sources":["../../../source/config/Keys/Permissions.ts"],"names":[],"mappings":"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"}
|