@estopia/shared 1.0.20 → 1.0.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/helpers/middlware/admin.d.ts +16 -0
- package/dist/helpers/middlware/admin.d.ts.map +1 -0
- package/dist/helpers/middlware/admin.js +40 -0
- package/dist/helpers/middlware/admin.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { NextFunction, Response } from "express";
|
|
2
|
+
import { EstopiaRequest } from "../../types/request";
|
|
3
|
+
/**
|
|
4
|
+
* Middleware to require authentication for a route.
|
|
5
|
+
* @param req - The request object
|
|
6
|
+
* @param res - The response object
|
|
7
|
+
* @param next - The next function
|
|
8
|
+
*
|
|
9
|
+
* @throws {401} If the user is not authenticated
|
|
10
|
+
* @throws {403} If the user is not an admin
|
|
11
|
+
* @throws {500} If an error occurs
|
|
12
|
+
*
|
|
13
|
+
* @returns {void}
|
|
14
|
+
*/
|
|
15
|
+
export declare function requireAdmin(req: EstopiaRequest, res: Response, next: NextFunction): Promise<Response<any, Record<string, any>> | undefined>;
|
|
16
|
+
//# sourceMappingURL=admin.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"admin.d.ts","sourceRoot":"","sources":["../../../src/helpers/middlware/admin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD;;;;;;;;;;;GAWG;AACH,wBAAsB,YAAY,CAAC,GAAG,EAAE,cAAc,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,2DA2BxF"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.requireAdmin = requireAdmin;
|
|
4
|
+
/**
|
|
5
|
+
* Middleware to require authentication for a route.
|
|
6
|
+
* @param req - The request object
|
|
7
|
+
* @param res - The response object
|
|
8
|
+
* @param next - The next function
|
|
9
|
+
*
|
|
10
|
+
* @throws {401} If the user is not authenticated
|
|
11
|
+
* @throws {403} If the user is not an admin
|
|
12
|
+
* @throws {500} If an error occurs
|
|
13
|
+
*
|
|
14
|
+
* @returns {void}
|
|
15
|
+
*/
|
|
16
|
+
async function requireAdmin(req, res, next) {
|
|
17
|
+
try {
|
|
18
|
+
if (!req.auth?.userId) {
|
|
19
|
+
return res.status(401).json({ error: 'Unauthorized' });
|
|
20
|
+
}
|
|
21
|
+
const cockroachPool = req.cockroachPool;
|
|
22
|
+
if (!cockroachPool) {
|
|
23
|
+
return res.status(500).json({ error: 'Internal server error' });
|
|
24
|
+
}
|
|
25
|
+
const user = await cockroachPool
|
|
26
|
+
.selectFrom('users')
|
|
27
|
+
.select('is_admin')
|
|
28
|
+
.where('id', '=', req.auth.userId)
|
|
29
|
+
.executeTakeFirst();
|
|
30
|
+
if (!user || user.is_admin !== true) {
|
|
31
|
+
return res.status(403).json({ error: 'Unauthorized: Admin access required' });
|
|
32
|
+
}
|
|
33
|
+
next();
|
|
34
|
+
}
|
|
35
|
+
catch (error) {
|
|
36
|
+
req.logger?.error('Error checking admin status', { error });
|
|
37
|
+
res.status(500).json({ error: 'Internal server error' });
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=admin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"admin.js","sourceRoot":"","sources":["../../../src/helpers/middlware/admin.ts"],"names":[],"mappings":";;AAeA,oCA2BC;AAvCD;;;;;;;;;;;GAWG;AACI,KAAK,UAAU,YAAY,CAAC,GAAmB,EAAE,GAAa,EAAE,IAAkB;IACrF,IAAI,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC;YACpB,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE,CAAC,CAAC;QAC3D,CAAC;QAED,MAAM,aAAa,GAAG,GAAG,CAAC,aAAa,CAAC;QAExC,IAAI,CAAC,aAAa,EAAE,CAAC;YACjB,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,uBAAuB,EAAE,CAAC,CAAC;QACpE,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,aAAa;aAC3B,UAAU,CAAC,OAAO,CAAC;aACnB,MAAM,CAAC,UAAU,CAAC;aAClB,KAAK,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC;aACjC,gBAAgB,EAAE,CAAC;QAExB,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,EAAE,CAAC;YAClC,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,qCAAqC,EAAE,CAAC,CAAC;QAClF,CAAC;QAED,IAAI,EAAE,CAAC;IACX,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,6BAA6B,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;QAC5D,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,uBAAuB,EAAE,CAAC,CAAC;IAC7D,CAAC;AACL,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -13,4 +13,5 @@ export type { DB } from './database/dataTypes';
|
|
|
13
13
|
export type { EstopiaRequest } from './types/request';
|
|
14
14
|
export { requireAuth } from './helpers/middlware/auth';
|
|
15
15
|
export { requireSecure } from './helpers/middlware/secure';
|
|
16
|
+
export { requireAdmin } from './helpers/middlware/admin';
|
|
16
17
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,YAAY,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAE/D,OAAO,EAAE,2BAA2B,EAAE,MAAM,sBAAsB,CAAC;AAGnE,YAAY,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAGxD,OAAO,EAAE,IAAI,IAAI,iBAAiB,EAAE,MAAM,IAAI,CAAC;AAC/C,OAAO,EAAE,MAAM,IAAI,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAE5D,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,YAAY,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEzD,YAAY,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAEnF,YAAY,EAAE,EAAE,EAAE,MAAM,sBAAsB,CAAC;AAE/C,YAAY,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,YAAY,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAE/D,OAAO,EAAE,2BAA2B,EAAE,MAAM,sBAAsB,CAAC;AAGnE,YAAY,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAGxD,OAAO,EAAE,IAAI,IAAI,iBAAiB,EAAE,MAAM,IAAI,CAAC;AAC/C,OAAO,EAAE,MAAM,IAAI,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAE5D,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,YAAY,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEzD,YAAY,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAEnF,YAAY,EAAE,EAAE,EAAE,MAAM,sBAAsB,CAAC;AAE/C,YAAY,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.requireSecure = exports.requireAuth = exports.tryValidateJWTToken = exports.validateJWTToken = exports.EventSubscriber = exports.EventPublisher = exports.ScyllaDBClient = exports.CockroachDBClient = exports.createCockroachDBConnection = exports.createLogger = void 0;
|
|
3
|
+
exports.requireAdmin = exports.requireSecure = exports.requireAuth = exports.tryValidateJWTToken = exports.validateJWTToken = exports.EventSubscriber = exports.EventPublisher = exports.ScyllaDBClient = exports.CockroachDBClient = exports.createCockroachDBConnection = exports.createLogger = void 0;
|
|
4
4
|
var logger_1 = require("./logging/logger");
|
|
5
5
|
Object.defineProperty(exports, "createLogger", { enumerable: true, get: function () { return logger_1.createLogger; } });
|
|
6
6
|
var cockroach_1 = require("./database/cockroach");
|
|
@@ -21,4 +21,6 @@ var auth_1 = require("./helpers/middlware/auth");
|
|
|
21
21
|
Object.defineProperty(exports, "requireAuth", { enumerable: true, get: function () { return auth_1.requireAuth; } });
|
|
22
22
|
var secure_1 = require("./helpers/middlware/secure");
|
|
23
23
|
Object.defineProperty(exports, "requireSecure", { enumerable: true, get: function () { return secure_1.requireSecure; } });
|
|
24
|
+
var admin_1 = require("./helpers/middlware/admin");
|
|
25
|
+
Object.defineProperty(exports, "requireAdmin", { enumerable: true, get: function () { return admin_1.requireAdmin; } });
|
|
24
26
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,2CAAgD;AAAvC,sGAAA,YAAY,OAAA;AAGrB,kDAAmE;AAA1D,wHAAA,2BAA2B,OAAA;AAKpC,iEAAiE;AACjE,yBAA+C;AAAtC,uGAAA,IAAI,OAAqB;AAClC,qDAA4D;AAAnD,kHAAA,MAAM,OAAkB;AAEjC,gDAAoD;AAA3C,2GAAA,cAAc,OAAA;AACvB,kDAAsD;AAA7C,6GAAA,eAAe,OAAA;AAIxB,+DAAmF;AAA1E,oHAAA,gBAAgB,OAAA;AAAE,uHAAA,mBAAmB,OAAA;AAK9C,iDAAuD;AAA9C,mGAAA,WAAW,OAAA;AACpB,qDAA2D;AAAlD,uGAAA,aAAa,OAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,2CAAgD;AAAvC,sGAAA,YAAY,OAAA;AAGrB,kDAAmE;AAA1D,wHAAA,2BAA2B,OAAA;AAKpC,iEAAiE;AACjE,yBAA+C;AAAtC,uGAAA,IAAI,OAAqB;AAClC,qDAA4D;AAAnD,kHAAA,MAAM,OAAkB;AAEjC,gDAAoD;AAA3C,2GAAA,cAAc,OAAA;AACvB,kDAAsD;AAA7C,6GAAA,eAAe,OAAA;AAIxB,+DAAmF;AAA1E,oHAAA,gBAAgB,OAAA;AAAE,uHAAA,mBAAmB,OAAA;AAK9C,iDAAuD;AAA9C,mGAAA,WAAW,OAAA;AACpB,qDAA2D;AAAlD,uGAAA,aAAa,OAAA;AACtB,mDAAyD;AAAhD,qGAAA,YAAY,OAAA"}
|