@intlayer/backend 3.0.3 → 3.2.0
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/cjs/controllers/dictionary.controller.cjs +91 -18
- package/dist/cjs/controllers/dictionary.controller.cjs.map +1 -1
- package/dist/cjs/controllers/organization.controller.cjs +140 -12
- package/dist/cjs/controllers/organization.controller.cjs.map +1 -1
- package/dist/cjs/controllers/project.controller.cjs +181 -31
- package/dist/cjs/controllers/project.controller.cjs.map +1 -1
- package/dist/cjs/controllers/projectAccessKey.controller.cjs +61 -10
- package/dist/cjs/controllers/projectAccessKey.controller.cjs.map +1 -1
- package/dist/cjs/controllers/sessionAuth.controller.cjs +291 -62
- package/dist/cjs/controllers/sessionAuth.controller.cjs.map +1 -1
- package/dist/cjs/controllers/stripe.controller.cjs +84 -0
- package/dist/cjs/controllers/stripe.controller.cjs.map +1 -0
- package/dist/cjs/controllers/user.controller.cjs +49 -20
- package/dist/cjs/controllers/user.controller.cjs.map +1 -1
- package/dist/cjs/emails/SubscriptionPaymentCancellation.cjs +182 -0
- package/dist/cjs/emails/SubscriptionPaymentCancellation.cjs.map +1 -0
- package/dist/cjs/emails/SubscriptionPaymentError.cjs +182 -0
- package/dist/cjs/emails/SubscriptionPaymentError.cjs.map +1 -0
- package/dist/cjs/emails/SubscriptionPaymentSuccess.cjs +188 -0
- package/dist/cjs/emails/SubscriptionPaymentSuccess.cjs.map +1 -0
- package/dist/cjs/export.cjs.map +1 -1
- package/dist/cjs/index.cjs +16 -5
- package/dist/cjs/index.cjs.map +1 -1
- package/dist/cjs/middlewares/oAuth2.middleware.cjs +10 -0
- package/dist/cjs/middlewares/oAuth2.middleware.cjs.map +1 -1
- package/dist/cjs/middlewares/sessionAuth.middleware.cjs +50 -10
- package/dist/cjs/middlewares/sessionAuth.middleware.cjs.map +1 -1
- package/dist/cjs/routes/dictionary.routes.cjs +2 -62
- package/dist/cjs/routes/dictionary.routes.cjs.map +1 -1
- package/dist/cjs/routes/organization.routes.cjs +1 -25
- package/dist/cjs/routes/organization.routes.cjs.map +1 -1
- package/dist/cjs/routes/project.routes.cjs +10 -85
- package/dist/cjs/routes/project.routes.cjs.map +1 -1
- package/dist/cjs/routes/sessionAuth.routes.cjs +26 -25
- package/dist/cjs/routes/sessionAuth.routes.cjs.map +1 -1
- package/dist/cjs/routes/stripe.routes.cjs +42 -0
- package/dist/cjs/routes/stripe.routes.cjs.map +1 -0
- package/dist/cjs/routes/user.routes.cjs +6 -27
- package/dist/cjs/routes/user.routes.cjs.map +1 -1
- package/dist/cjs/schemas/organization.schema.cjs +5 -0
- package/dist/cjs/schemas/organization.schema.cjs.map +1 -1
- package/dist/cjs/{middlewares/admin.middleware.cjs → schemas/plans.schema.cjs} +32 -20
- package/dist/cjs/schemas/plans.schema.cjs.map +1 -0
- package/dist/cjs/schemas/project.schema.cjs +14 -1
- package/dist/cjs/schemas/project.schema.cjs.map +1 -1
- package/dist/cjs/schemas/user.schema.cjs +5 -1
- package/dist/cjs/schemas/user.schema.cjs.map +1 -1
- package/dist/cjs/services/dictionary.service.cjs.map +1 -1
- package/dist/cjs/services/email.service.cjs +113 -43
- package/dist/cjs/services/email.service.cjs.map +1 -1
- package/dist/cjs/services/oAuth2.service.cjs +16 -8
- package/dist/cjs/services/oAuth2.service.cjs.map +1 -1
- package/dist/cjs/services/organization.service.cjs +63 -8
- package/dist/cjs/services/organization.service.cjs.map +1 -1
- package/dist/cjs/services/project.service.cjs +9 -5
- package/dist/cjs/services/project.service.cjs.map +1 -1
- package/dist/cjs/services/projectAccessKey.service.cjs +42 -10
- package/dist/cjs/services/projectAccessKey.service.cjs.map +1 -1
- package/dist/cjs/services/sessionAuth.service.cjs +9 -11
- package/dist/cjs/services/sessionAuth.service.cjs.map +1 -1
- package/dist/cjs/services/subscription.service.cjs +201 -0
- package/dist/cjs/services/subscription.service.cjs.map +1 -0
- package/dist/cjs/services/user.service.cjs +1 -3
- package/dist/cjs/services/user.service.cjs.map +1 -1
- package/dist/cjs/types/dictionary.types.cjs.map +1 -1
- package/dist/cjs/types/organization.types.cjs.map +1 -1
- package/dist/cjs/types/plan.types.cjs +17 -0
- package/dist/cjs/types/plan.types.cjs.map +1 -0
- package/dist/cjs/types/project.types.cjs.map +1 -1
- package/dist/cjs/types/session.types.cjs.map +1 -1
- package/dist/cjs/types/user.types.cjs.map +1 -1
- package/dist/cjs/utils/errors/ErrorHandler.cjs +29 -9
- package/dist/cjs/utils/errors/ErrorHandler.cjs.map +1 -1
- package/dist/cjs/utils/errors/ErrorsClass.cjs +17 -3
- package/dist/cjs/utils/errors/ErrorsClass.cjs.map +1 -1
- package/dist/cjs/utils/errors/errorCodes.cjs +321 -9
- package/dist/cjs/utils/errors/errorCodes.cjs.map +1 -1
- package/dist/cjs/utils/mapper/organization.cjs.map +1 -1
- package/dist/cjs/utils/mapper/project.cjs +19 -3
- package/dist/cjs/utils/mapper/project.cjs.map +1 -1
- package/dist/cjs/utils/mapper/user.cjs.map +1 -1
- package/dist/cjs/utils/plan.cjs +75 -0
- package/dist/cjs/utils/plan.cjs.map +1 -0
- package/dist/cjs/utils/responseData.cjs +8 -0
- package/dist/cjs/utils/responseData.cjs.map +1 -1
- package/dist/cjs/webhooks/stripe.webhook.cjs +133 -0
- package/dist/cjs/webhooks/stripe.webhook.cjs.map +1 -0
- package/dist/esm/controllers/dictionary.controller.mjs +91 -18
- package/dist/esm/controllers/dictionary.controller.mjs.map +1 -1
- package/dist/esm/controllers/organization.controller.mjs +140 -12
- package/dist/esm/controllers/organization.controller.mjs.map +1 -1
- package/dist/esm/controllers/project.controller.mjs +181 -31
- package/dist/esm/controllers/project.controller.mjs.map +1 -1
- package/dist/esm/controllers/projectAccessKey.controller.mjs +61 -10
- package/dist/esm/controllers/projectAccessKey.controller.mjs.map +1 -1
- package/dist/esm/controllers/sessionAuth.controller.mjs +287 -61
- package/dist/esm/controllers/sessionAuth.controller.mjs.map +1 -1
- package/dist/esm/controllers/stripe.controller.mjs +60 -0
- package/dist/esm/controllers/stripe.controller.mjs.map +1 -0
- package/dist/esm/controllers/user.controller.mjs +49 -20
- package/dist/esm/controllers/user.controller.mjs.map +1 -1
- package/dist/esm/emails/SubscriptionPaymentCancellation.mjs +168 -0
- package/dist/esm/emails/SubscriptionPaymentCancellation.mjs.map +1 -0
- package/dist/esm/emails/SubscriptionPaymentError.mjs +168 -0
- package/dist/esm/emails/SubscriptionPaymentError.mjs.map +1 -0
- package/dist/esm/emails/SubscriptionPaymentSuccess.mjs +174 -0
- package/dist/esm/emails/SubscriptionPaymentSuccess.mjs.map +1 -0
- package/dist/esm/export.mjs.map +1 -1
- package/dist/esm/index.mjs +19 -7
- package/dist/esm/index.mjs.map +1 -1
- package/dist/esm/middlewares/oAuth2.middleware.mjs +10 -0
- package/dist/esm/middlewares/oAuth2.middleware.mjs.map +1 -1
- package/dist/esm/middlewares/sessionAuth.middleware.mjs +49 -9
- package/dist/esm/middlewares/sessionAuth.middleware.mjs.map +1 -1
- package/dist/esm/routes/dictionary.routes.mjs +2 -62
- package/dist/esm/routes/dictionary.routes.mjs.map +1 -1
- package/dist/esm/routes/organization.routes.mjs +1 -25
- package/dist/esm/routes/organization.routes.mjs.map +1 -1
- package/dist/esm/routes/project.routes.mjs +10 -85
- package/dist/esm/routes/project.routes.mjs.map +1 -1
- package/dist/esm/routes/sessionAuth.routes.mjs +29 -26
- package/dist/esm/routes/sessionAuth.routes.mjs.map +1 -1
- package/dist/esm/routes/stripe.routes.mjs +17 -0
- package/dist/esm/routes/stripe.routes.mjs.map +1 -0
- package/dist/esm/routes/user.routes.mjs +6 -27
- package/dist/esm/routes/user.routes.mjs.map +1 -1
- package/dist/esm/schemas/organization.schema.mjs +5 -0
- package/dist/esm/schemas/organization.schema.mjs.map +1 -1
- package/dist/esm/schemas/plans.schema.mjs +32 -0
- package/dist/esm/schemas/plans.schema.mjs.map +1 -0
- package/dist/esm/schemas/project.schema.mjs +13 -1
- package/dist/esm/schemas/project.schema.mjs.map +1 -1
- package/dist/esm/schemas/user.schema.mjs +5 -1
- package/dist/esm/schemas/user.schema.mjs.map +1 -1
- package/dist/esm/services/dictionary.service.mjs.map +1 -1
- package/dist/esm/services/email.service.mjs +125 -43
- package/dist/esm/services/email.service.mjs.map +1 -1
- package/dist/esm/services/oAuth2.service.mjs +16 -8
- package/dist/esm/services/oAuth2.service.mjs.map +1 -1
- package/dist/esm/services/organization.service.mjs +58 -7
- package/dist/esm/services/organization.service.mjs.map +1 -1
- package/dist/esm/services/project.service.mjs +9 -5
- package/dist/esm/services/project.service.mjs.map +1 -1
- package/dist/esm/services/projectAccessKey.service.mjs +42 -10
- package/dist/esm/services/projectAccessKey.service.mjs.map +1 -1
- package/dist/esm/services/sessionAuth.service.mjs +9 -10
- package/dist/esm/services/sessionAuth.service.mjs.map +1 -1
- package/dist/esm/services/subscription.service.mjs +178 -0
- package/dist/esm/services/subscription.service.mjs.map +1 -0
- package/dist/esm/services/user.service.mjs +1 -3
- package/dist/esm/services/user.service.mjs.map +1 -1
- package/dist/esm/types/plan.types.mjs +1 -0
- package/dist/esm/types/plan.types.mjs.map +1 -0
- package/dist/esm/utils/errors/ErrorHandler.mjs +29 -9
- package/dist/esm/utils/errors/ErrorHandler.mjs.map +1 -1
- package/dist/esm/utils/errors/ErrorsClass.mjs +17 -3
- package/dist/esm/utils/errors/ErrorsClass.mjs.map +1 -1
- package/dist/esm/utils/errors/errorCodes.mjs +321 -9
- package/dist/esm/utils/errors/errorCodes.mjs.map +1 -1
- package/dist/esm/utils/mapper/organization.mjs.map +1 -1
- package/dist/esm/utils/mapper/project.mjs +17 -2
- package/dist/esm/utils/mapper/project.mjs.map +1 -1
- package/dist/esm/utils/mapper/user.mjs.map +1 -1
- package/dist/esm/utils/plan.mjs +50 -0
- package/dist/esm/utils/plan.mjs.map +1 -0
- package/dist/esm/utils/responseData.mjs +8 -0
- package/dist/esm/utils/responseData.mjs.map +1 -1
- package/dist/esm/webhooks/stripe.webhook.mjs +113 -0
- package/dist/esm/webhooks/stripe.webhook.mjs.map +1 -0
- package/dist/types/controllers/dictionary.controller.d.ts.map +1 -1
- package/dist/types/controllers/organization.controller.d.ts.map +1 -1
- package/dist/types/controllers/project.controller.d.ts +9 -7
- package/dist/types/controllers/project.controller.d.ts.map +1 -1
- package/dist/types/controllers/projectAccessKey.controller.d.ts.map +1 -1
- package/dist/types/controllers/sessionAuth.controller.d.ts +28 -9
- package/dist/types/controllers/sessionAuth.controller.d.ts.map +1 -1
- package/dist/types/controllers/stripe.controller.d.ts +17 -0
- package/dist/types/controllers/stripe.controller.d.ts.map +1 -0
- package/dist/types/controllers/user.controller.d.ts.map +1 -1
- package/dist/types/emails/SubscriptionPaymentCancellation.d.ts +20 -0
- package/dist/types/emails/SubscriptionPaymentCancellation.d.ts.map +1 -0
- package/dist/types/emails/SubscriptionPaymentError.d.ts +20 -0
- package/dist/types/emails/SubscriptionPaymentError.d.ts.map +1 -0
- package/dist/types/emails/SubscriptionPaymentSuccess.d.ts +20 -0
- package/dist/types/emails/SubscriptionPaymentSuccess.d.ts.map +1 -0
- package/dist/types/export.d.ts +2 -0
- package/dist/types/export.d.ts.map +1 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/middlewares/oAuth2.middleware.d.ts.map +1 -1
- package/dist/types/middlewares/sessionAuth.middleware.d.ts +13 -7
- package/dist/types/middlewares/sessionAuth.middleware.d.ts.map +1 -1
- package/dist/types/models/dictionary.model.d.ts +1 -1
- package/dist/types/models/oAuth2.model.d.ts +1 -1
- package/dist/types/models/organization.model.d.ts +2 -1
- package/dist/types/models/organization.model.d.ts.map +1 -1
- package/dist/types/models/plan.moddel.d.ts +11 -0
- package/dist/types/models/plan.moddel.d.ts.map +1 -0
- package/dist/types/models/project.model.d.ts +1 -1
- package/dist/types/routes/dictionary.routes.d.ts.map +1 -1
- package/dist/types/routes/organization.routes.d.ts.map +1 -1
- package/dist/types/routes/project.routes.d.ts.map +1 -1
- package/dist/types/routes/sessionAuth.routes.d.ts +15 -2
- package/dist/types/routes/sessionAuth.routes.d.ts.map +1 -1
- package/dist/types/routes/stripe.routes.d.ts +10 -0
- package/dist/types/routes/stripe.routes.d.ts.map +1 -0
- package/dist/types/routes/user.routes.d.ts.map +1 -1
- package/dist/types/schemas/dictionary.schema.d.ts +2 -2
- package/dist/types/schemas/oAuth2.schema.d.ts +2 -2
- package/dist/types/schemas/organization.schema.d.ts +3 -2
- package/dist/types/schemas/organization.schema.d.ts.map +1 -1
- package/dist/types/schemas/plans.schema.d.ts +16 -0
- package/dist/types/schemas/plans.schema.d.ts.map +1 -0
- package/dist/types/schemas/project.schema.d.ts +12 -3
- package/dist/types/schemas/project.schema.d.ts.map +1 -1
- package/dist/types/schemas/user.schema.d.ts +2 -2
- package/dist/types/schemas/user.schema.d.ts.map +1 -1
- package/dist/types/services/dictionary.service.d.ts +9 -9
- package/dist/types/services/dictionary.service.d.ts.map +1 -1
- package/dist/types/services/email.service.d.ts +33 -4
- package/dist/types/services/email.service.d.ts.map +1 -1
- package/dist/types/services/oAuth2.service.d.ts +7 -5
- package/dist/types/services/oAuth2.service.d.ts.map +1 -1
- package/dist/types/services/organization.service.d.ts +27 -6
- package/dist/types/services/organization.service.d.ts.map +1 -1
- package/dist/types/services/plans.service.d.ts +35 -0
- package/dist/types/services/plans.service.d.ts.map +1 -0
- package/dist/types/services/project.service.d.ts +6 -6
- package/dist/types/services/project.service.d.ts.map +1 -1
- package/dist/types/services/projectAccessKey.service.d.ts +4 -4
- package/dist/types/services/projectAccessKey.service.d.ts.map +1 -1
- package/dist/types/services/sessionAuth.service.d.ts +9 -16
- package/dist/types/services/sessionAuth.service.d.ts.map +1 -1
- package/dist/types/services/subscription.service.d.ts +22 -0
- package/dist/types/services/subscription.service.d.ts.map +1 -0
- package/dist/types/services/user.service.d.ts +11 -19
- package/dist/types/services/user.service.d.ts.map +1 -1
- package/dist/types/types/dictionary.types.d.ts +2 -2
- package/dist/types/types/dictionary.types.d.ts.map +1 -1
- package/dist/types/types/organization.types.d.ts +4 -2
- package/dist/types/types/organization.types.d.ts.map +1 -1
- package/dist/types/types/plan.types.d.ts +18 -0
- package/dist/types/types/plan.types.d.ts.map +1 -0
- package/dist/types/types/project.types.d.ts +13 -2
- package/dist/types/types/project.types.d.ts.map +1 -1
- package/dist/types/types/session.types.d.ts +6 -6
- package/dist/types/types/session.types.d.ts.map +1 -1
- package/dist/types/types/user.types.d.ts +2 -1
- package/dist/types/types/user.types.d.ts.map +1 -1
- package/dist/types/utils/errors/ErrorHandler.d.ts +5 -3
- package/dist/types/utils/errors/ErrorHandler.d.ts.map +1 -1
- package/dist/types/utils/errors/ErrorsClass.d.ts +4 -1
- package/dist/types/utils/errors/ErrorsClass.d.ts.map +1 -1
- package/dist/types/utils/errors/errorCodes.d.ts +313 -1
- package/dist/types/utils/errors/errorCodes.d.ts.map +1 -1
- package/dist/types/utils/mapper/organization.d.ts +1 -1
- package/dist/types/utils/mapper/organization.d.ts.map +1 -1
- package/dist/types/utils/mapper/project.d.ts +10 -1
- package/dist/types/utils/mapper/project.d.ts.map +1 -1
- package/dist/types/utils/mapper/user.d.ts +1 -1
- package/dist/types/utils/mapper/user.d.ts.map +1 -1
- package/dist/types/utils/plan.d.ts +17 -0
- package/dist/types/utils/plan.d.ts.map +1 -0
- package/dist/types/utils/responseData.d.ts +13 -2
- package/dist/types/utils/responseData.d.ts.map +1 -1
- package/dist/types/webhooks/stripe.d.ts +3 -0
- package/dist/types/webhooks/stripe.d.ts.map +1 -0
- package/dist/types/webhooks/stripe.webhook.d.ts +3 -0
- package/dist/types/webhooks/stripe.webhook.d.ts.map +1 -0
- package/package.json +27 -24
- package/dist/cjs/middlewares/admin.middleware.cjs.map +0 -1
- package/dist/esm/middlewares/admin.middleware.mjs +0 -20
- package/dist/esm/middlewares/admin.middleware.mjs.map +0 -1
package/dist/cjs/index.cjs
CHANGED
|
@@ -37,7 +37,7 @@ var import_cors = __toESM(require("cors"), 1);
|
|
|
37
37
|
var import_dotenv = __toESM(require("dotenv"), 1);
|
|
38
38
|
var import_express = __toESM(require("express"), 1);
|
|
39
39
|
var import_express_intlayer = require("express-intlayer");
|
|
40
|
-
var
|
|
40
|
+
var import_helmet = __toESM(require("helmet"), 1);
|
|
41
41
|
var import_oAuth2 = require('./middlewares/oAuth2.middleware.cjs');
|
|
42
42
|
var import_request = require('./middlewares/request.middleware.cjs');
|
|
43
43
|
var import_sessionAuth = require('./middlewares/sessionAuth.middleware.cjs');
|
|
@@ -46,6 +46,8 @@ var import_organization = require('./routes/organization.routes.cjs');
|
|
|
46
46
|
var import_project = require('./routes/project.routes.cjs');
|
|
47
47
|
var import_sessionAuth2 = require('./routes/sessionAuth.routes.cjs');
|
|
48
48
|
var import_user = require('./routes/user.routes.cjs');
|
|
49
|
+
var import_stripe = require('./routes/stripe.routes.cjs');
|
|
50
|
+
var import_stripe2 = require('./webhooks/stripe.webhook.cjs');
|
|
49
51
|
var import_oAuth22 = require('./controllers/oAuth2.controller.cjs');
|
|
50
52
|
var import_sessionAuth3 = require('./controllers/sessionAuth.controller.cjs');
|
|
51
53
|
var import_CSRF = require('./utils/CSRF.cjs');
|
|
@@ -53,21 +55,29 @@ var import_connectDB = require('./utils/mongoDB/connectDB.cjs');
|
|
|
53
55
|
var import_logger = require('./logger/index.cjs');
|
|
54
56
|
const app = (0, import_express.default)();
|
|
55
57
|
app.disable("x-powered-by");
|
|
58
|
+
app.use((0, import_helmet.default)());
|
|
56
59
|
const env = app.get("env");
|
|
57
60
|
import_logger.logger.info(`run as ${env}`);
|
|
58
61
|
import_dotenv.default.config({ path: [".env", `.env.${env}`] });
|
|
62
|
+
app.use((0, import_cookie_parser.default)());
|
|
63
|
+
app.use((0, import_express_intlayer.intlayer)());
|
|
59
64
|
const isDev = env === "development";
|
|
60
65
|
(0, import_connectDB.connectDB)();
|
|
66
|
+
app.post("/webhook/stripe", (0, import_express.raw)({ type: "application/json" }), import_stripe2.stripeWebhook);
|
|
61
67
|
app.use((0, import_compression.default)());
|
|
62
68
|
app.use(import_express.default.json({ limit: "50mb" }));
|
|
63
69
|
app.use(import_express.default.urlencoded({ extended: true }));
|
|
64
|
-
app.use((0, import_cookie_parser.default)());
|
|
65
|
-
app.use((0, import_express_intlayer.intlayer)());
|
|
66
70
|
const whitelist = [process.env.CLIENT_URL];
|
|
67
71
|
const corsOptions = {
|
|
68
72
|
origin: whitelist,
|
|
69
73
|
credentials: true,
|
|
70
|
-
allowedHeaders: [
|
|
74
|
+
allowedHeaders: [
|
|
75
|
+
"authorization",
|
|
76
|
+
"Content-Type",
|
|
77
|
+
"credentials",
|
|
78
|
+
"cache-control",
|
|
79
|
+
"Access-Control-Allow-Origin"
|
|
80
|
+
],
|
|
71
81
|
exposedHeaders: [""],
|
|
72
82
|
preflightContinue: false,
|
|
73
83
|
methods: "GET,HEAD,PUT,PATCH,POST,DELETE"
|
|
@@ -86,6 +96,7 @@ app.get("/", (_req, res) => {
|
|
|
86
96
|
app.use(/(.*)/, import_sessionAuth.checkUser);
|
|
87
97
|
app.use(/(.*)/, import_sessionAuth.checkOrganization);
|
|
88
98
|
app.use(/(.*)/, import_sessionAuth.checkProject);
|
|
99
|
+
app.use(/(.*)/, import_sessionAuth.checkAdmin);
|
|
89
100
|
if (isDev) {
|
|
90
101
|
app.use(import_request.logAPIRequestURL);
|
|
91
102
|
}
|
|
@@ -110,11 +121,11 @@ app.use(/(.*)/, (req, res, next) => {
|
|
|
110
121
|
}
|
|
111
122
|
next();
|
|
112
123
|
});
|
|
113
|
-
app.use(/(.*)/, import_admin.checkAdmin);
|
|
114
124
|
app.use("/api/user", import_user.userRouter);
|
|
115
125
|
app.use("/api/organization", import_organization.organizationRouter);
|
|
116
126
|
app.use("/api/project", import_project.projectRouter);
|
|
117
127
|
app.use("/api/dictionary", import_dictionary.dictionaryRouter);
|
|
128
|
+
app.use("/api/stripe", import_stripe.stripeRouter);
|
|
118
129
|
app.listen(process.env.PORT, () => {
|
|
119
130
|
import_logger.logger.info(`Listening on port ${process.env.PORT}`);
|
|
120
131
|
});
|
package/dist/cjs/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/index.ts"],"sourcesContent":["/* eslint-disable import/order */\n\n// Libraries\nimport compression from 'compression';\nimport cookieParser from 'cookie-parser';\nimport cors, { type CorsOptions } from 'cors';\nimport dotenv from 'dotenv';\nimport express, { type Express } from 'express';\nimport { intlayer, t } from 'express-intlayer';\
|
|
1
|
+
{"version":3,"sources":["../../src/index.ts"],"sourcesContent":["/* eslint-disable import/order */\n\n// Libraries\nimport compression from 'compression';\nimport cookieParser from 'cookie-parser';\nimport cors, { type CorsOptions } from 'cors';\nimport dotenv from 'dotenv';\nimport express, { raw, type Express } from 'express';\nimport { intlayer, t } from 'express-intlayer';\nimport helmet from 'helmet';\n\n// Middlewares\nimport {\n attachOAuthInstance,\n authenticateOAuth2,\n RequestWithOAuth2Information,\n} from '@middlewares/oAuth2.middleware';\nimport { logAPIRequestURL } from '@middlewares/request.middleware';\nimport {\n checkUser,\n checkOrganization,\n checkProject,\n checkAdmin,\n ResponseWithInformation,\n} from '@middlewares/sessionAuth.middleware';\n\n// Routes\nimport { dictionaryRouter } from '@routes/dictionary.routes';\nimport { organizationRouter } from '@routes/organization.routes';\nimport { projectRouter } from '@routes/project.routes';\nimport { sessionAuthRouter } from '@routes/sessionAuth.routes';\nimport { userRouter } from '@routes/user.routes';\nimport { stripeRouter } from '@routes/stripe.routes';\n\n// Webhooks\nimport { stripeWebhook } from '@webhooks/stripe.webhook';\n\n// Controllers\nimport { getOAuth2Token } from '@controllers/oAuth2.controller';\nimport {\n getSessionInformation,\n setCSRFToken,\n} from '@controllers/sessionAuth.controller';\n\n// Utils\nimport { doubleCsrfProtection } from '@utils/CSRF';\nimport { connectDB } from '@utils/mongoDB/connectDB';\n\n// Logger\nimport { logger } from './logger';\n\nconst app: Express = express();\n\napp.disable('x-powered-by'); // Disabled to prevent attackers from knowing that the app is running Express\napp.use(helmet());\n\n// Environment variables\nconst env = app.get('env');\n\nlogger.info(`run as ${env}`);\n\ndotenv.config({ path: ['.env', `.env.${env}`] });\n\n// Parse incoming requests with cookies\napp.use(cookieParser());\n\n// Load internationalization request handler\napp.use(intlayer());\n\nconst isDev = env === 'development';\n\n// Connect to MongoDB\nconnectDB();\n\n// Stripe\napp.post('/webhook/stripe', raw({ type: 'application/json' }), stripeWebhook);\n\n// Compress all HTTP responses\napp.use(compression());\n\n// Parse incoming requests with JSON payloads\napp.use(express.json({ limit: '50mb' }));\n\n// Parse incoming requests with urlencoded payloads\napp.use(express.urlencoded({ extended: true }));\n\n// CORS\nconst whitelist: string[] = [process.env.CLIENT_URL!];\nconst corsOptions: CorsOptions = {\n origin: whitelist,\n credentials: true,\n allowedHeaders: [\n 'authorization',\n 'Content-Type',\n 'credentials',\n 'cache-control',\n 'Access-Control-Allow-Origin',\n ],\n exposedHeaders: [''],\n preflightContinue: false,\n methods: 'GET,HEAD,PUT,PATCH,POST,DELETE',\n};\napp.use(cors(corsOptions));\nlogger.info('url whitelist : ', whitelist.join(', '));\n\n// Liveness check\napp.get('/', (_req, res) => {\n res.send(\n t({\n en: 'Ok - locale: en',\n fr: 'Ok - locale: fr',\n es: 'Ok - locale: es',\n })\n );\n});\n\n// middleware - jwt & session auth\napp.use(/(.*)/, checkUser);\napp.use(/(.*)/, checkOrganization);\napp.use(/(.*)/, checkProject);\napp.use(/(.*)/, checkAdmin);\n\n// debug\nif (isDev) {\n app.use(logAPIRequestURL);\n}\n\n// Sessions\napp.get('/session', getSessionInformation);\napp.use('/api/auth', sessionAuthRouter);\n\n// CSRF\napp.get('/csrf-token', setCSRFToken);\n\n// oAuth2\napp.use(/(.*)/, attachOAuthInstance);\napp.post('/oauth2/token', getOAuth2Token); // Route to get the token\napp.use(/(.*)/, (req, res, next) => {\n // If the request is not already authenticated check the oAuth2 token\n if (!res.locals.authType) {\n return authenticateOAuth2(\n req as RequestWithOAuth2Information,\n res as ResponseWithInformation,\n next\n );\n }\n next();\n});\n\n// CSRF protection\napp.use(/(.*)/, (req, res, next) => {\n // If the request is authenticated using the session auth check the CSRF token\n if (res.locals.authType === 'session') {\n return doubleCsrfProtection(req, res, next);\n }\n next();\n});\n\n// Routes\napp.use('/api/user', userRouter);\napp.use('/api/organization', organizationRouter);\napp.use('/api/project', projectRouter);\napp.use('/api/dictionary', dictionaryRouter);\napp.use('/api/stripe', stripeRouter);\n\n// Server\napp.listen(process.env.PORT, () => {\n logger.info(`Listening on port ${process.env.PORT}`);\n});\n\n// Export tu use as serverless function\nexport default app;\n"],"mappings":"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","names":["import_sessionAuth","import_stripe","import_oAuth2","express","helmet","dotenv","cookieParser","compression","cors"]}
|
|
@@ -61,6 +61,16 @@ const authenticateOAuth2 = async (req, res, next) => {
|
|
|
61
61
|
oauthResponse,
|
|
62
62
|
import_oAuth2.authenticateOptions
|
|
63
63
|
);
|
|
64
|
+
const {
|
|
65
|
+
organization: organizationRights,
|
|
66
|
+
project: projectRights,
|
|
67
|
+
dictionary: dictionaryRights
|
|
68
|
+
} = oAuthToken.rights;
|
|
69
|
+
res.locals.organizationRights = organizationRights;
|
|
70
|
+
res.locals.isOrganizationAdmin = organizationRights?.admin ?? false;
|
|
71
|
+
res.locals.projectRights = projectRights;
|
|
72
|
+
res.locals.isProjectAdmin = projectRights?.admin ?? false;
|
|
73
|
+
res.locals.dictionaryRights = dictionaryRights;
|
|
64
74
|
const user = await import_user.UserModel.findById(oAuthToken.user._id);
|
|
65
75
|
if (user) {
|
|
66
76
|
res.locals.user = user;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/middlewares/oAuth2.middleware.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { logger } from '@logger';\nimport { OrganizationModel } from '@models/organization.model';\nimport { ProjectModel } from '@models/project.model';\nimport { UserModel } from '@models/user.model';\nimport { getAuthModel, authenticateOptions } from '@utils/oAuth2';\nimport { NextFunction, Request, Response } from 'express';\nimport OAuth2Server, {\n Request as OAuthRequest,\n Response as OAuthResponse,\n} from 'oauth2-server';\nimport { ResponseWithInformation } from './sessionAuth.middleware';\n\n// Configuration of the OAuth server\nconst oauth = new OAuth2Server({\n model: getAuthModel(),\n accessTokenLifetime: 60 * 60, // 1 hour\n allowBearerTokensInQueryString: true,\n});\n\nexport type RequestWithOAuth2Information<\n P = any,\n ResBody = any,\n ReqBody = any,\n ReqQuery = qs.ParsedQs,\n> = Request<P, ResBody, ReqBody, ReqQuery> & {\n oauth: OAuth2Server;\n};\n\nexport const attachOAuthInstance = async (\n req: Request,\n _res: Response,\n next: NextFunction\n) => {\n // Attach the instance OAuth to the requests\n (req as RequestWithOAuth2Information).oauth = oauth;\n\n next();\n};\n\n// Middleware to authenticate requests\nexport const authenticateOAuth2 = async (\n req: RequestWithOAuth2Information,\n res: ResponseWithInformation,\n next: NextFunction\n): Promise<void> => {\n try {\n const hasToken = !!req.headers.authorization;\n\n if (!hasToken) {\n // If the request does not have a token, skip the oAuth2 authentication\n // Necessary because the oAuth2 library will throw an error if the token is not present\n return next();\n }\n\n // Authenticate the request using OAuth2\n const oauthRequest = new OAuthRequest(req);\n\n const oauthResponse = new OAuthResponse(res);\n\n const oAuthToken = await req.oauth.authenticate(\n oauthRequest,\n oauthResponse,\n authenticateOptions\n );\n\n const user = await UserModel.findById(oAuthToken.user._id);\n\n if (user) {\n res.locals.user = user;\n res.locals.authType = 'oauth2';\n }\n\n const organization = await OrganizationModel.findById(\n oAuthToken.organization._id\n );\n\n if (organization) {\n res.locals.organization = organization;\n }\n
|
|
1
|
+
{"version":3,"sources":["../../../src/middlewares/oAuth2.middleware.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { logger } from '@logger';\nimport { OrganizationModel } from '@models/organization.model';\nimport { ProjectModel } from '@models/project.model';\nimport { UserModel } from '@models/user.model';\nimport { getAuthModel, authenticateOptions } from '@utils/oAuth2';\nimport { NextFunction, Request, Response } from 'express';\nimport OAuth2Server, {\n Request as OAuthRequest,\n Response as OAuthResponse,\n} from 'oauth2-server';\nimport { ResponseWithInformation } from './sessionAuth.middleware';\n\n// Configuration of the OAuth server\nconst oauth = new OAuth2Server({\n model: getAuthModel(),\n accessTokenLifetime: 60 * 60, // 1 hour\n allowBearerTokensInQueryString: true,\n});\n\nexport type RequestWithOAuth2Information<\n P = any,\n ResBody = any,\n ReqBody = any,\n ReqQuery = qs.ParsedQs,\n> = Request<P, ResBody, ReqBody, ReqQuery> & {\n oauth: OAuth2Server;\n};\n\nexport const attachOAuthInstance = async (\n req: Request,\n _res: Response,\n next: NextFunction\n) => {\n // Attach the instance OAuth to the requests\n (req as RequestWithOAuth2Information).oauth = oauth;\n\n next();\n};\n\n// Middleware to authenticate requests\nexport const authenticateOAuth2 = async (\n req: RequestWithOAuth2Information,\n res: ResponseWithInformation,\n next: NextFunction\n): Promise<void> => {\n try {\n const hasToken = !!req.headers.authorization;\n\n if (!hasToken) {\n // If the request does not have a token, skip the oAuth2 authentication\n // Necessary because the oAuth2 library will throw an error if the token is not present\n return next();\n }\n\n // Authenticate the request using OAuth2\n const oauthRequest = new OAuthRequest(req);\n\n const oauthResponse = new OAuthResponse(res);\n\n const oAuthToken = await req.oauth.authenticate(\n oauthRequest,\n oauthResponse,\n authenticateOptions\n );\n\n const {\n organization: organizationRights,\n project: projectRights,\n dictionary: dictionaryRights,\n } = oAuthToken.rights;\n\n res.locals.organizationRights = organizationRights;\n res.locals.isOrganizationAdmin = organizationRights?.admin ?? false;\n res.locals.projectRights = projectRights;\n res.locals.isProjectAdmin = projectRights?.admin ?? false;\n res.locals.dictionaryRights = dictionaryRights;\n\n const user = await UserModel.findById(oAuthToken.user._id);\n\n if (user) {\n res.locals.user = user;\n res.locals.authType = 'oauth2';\n }\n\n const organization = await OrganizationModel.findById(\n oAuthToken.organization._id\n );\n\n if (organization) {\n res.locals.organization = organization;\n }\n const project = await ProjectModel.findById(oAuthToken.project._id);\n\n if (project) {\n res.locals.project = project;\n }\n } catch (err) {\n logger.info(err);\n }\n next();\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,oBAAuB;AACvB,0BAAkC;AAClC,qBAA6B;AAC7B,kBAA0B;AAC1B,oBAAkD;AAElD,2BAGO;AAIP,MAAM,QAAQ,IAAI,qBAAAA,QAAa;AAAA,EAC7B,WAAO,4BAAa;AAAA,EACpB,qBAAqB,KAAK;AAAA;AAAA,EAC1B,gCAAgC;AAClC,CAAC;AAWM,MAAM,sBAAsB,OACjC,KACA,MACA,SACG;AAEH,EAAC,IAAqC,QAAQ;AAE9C,OAAK;AACP;AAGO,MAAM,qBAAqB,OAChC,KACA,KACA,SACkB;AAClB,MAAI;AACF,UAAM,WAAW,CAAC,CAAC,IAAI,QAAQ;AAE/B,QAAI,CAAC,UAAU;AAGb,aAAO,KAAK;AAAA,IACd;AAGA,UAAM,eAAe,IAAI,qBAAAC,QAAa,GAAG;AAEzC,UAAM,gBAAgB,IAAI,qBAAAC,SAAc,GAAG;AAE3C,UAAM,aAAa,MAAM,IAAI,MAAM;AAAA,MACjC;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAEA,UAAM;AAAA,MACJ,cAAc;AAAA,MACd,SAAS;AAAA,MACT,YAAY;AAAA,IACd,IAAI,WAAW;AAEf,QAAI,OAAO,qBAAqB;AAChC,QAAI,OAAO,sBAAsB,oBAAoB,SAAS;AAC9D,QAAI,OAAO,gBAAgB;AAC3B,QAAI,OAAO,iBAAiB,eAAe,SAAS;AACpD,QAAI,OAAO,mBAAmB;AAE9B,UAAM,OAAO,MAAM,sBAAU,SAAS,WAAW,KAAK,GAAG;AAEzD,QAAI,MAAM;AACR,UAAI,OAAO,OAAO;AAClB,UAAI,OAAO,WAAW;AAAA,IACxB;AAEA,UAAM,eAAe,MAAM,sCAAkB;AAAA,MAC3C,WAAW,aAAa;AAAA,IAC1B;AAEA,QAAI,cAAc;AAChB,UAAI,OAAO,eAAe;AAAA,IAC5B;AACA,UAAM,UAAU,MAAM,4BAAa,SAAS,WAAW,QAAQ,GAAG;AAElE,QAAI,SAAS;AACX,UAAI,OAAO,UAAU;AAAA,IACvB;AAAA,EACF,SAAS,KAAK;AACZ,yBAAO,KAAK,GAAG;AAAA,EACjB;AACA,OAAK;AACP;","names":["OAuth2Server","OAuthRequest","OAuthResponse"]}
|
|
@@ -28,7 +28,7 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
|
|
|
28
28
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
29
|
var sessionAuth_middleware_exports = {};
|
|
30
30
|
__export(sessionAuth_middleware_exports, {
|
|
31
|
-
|
|
31
|
+
checkAdmin: () => checkAdmin,
|
|
32
32
|
checkOrganization: () => checkOrganization,
|
|
33
33
|
checkProject: () => checkProject,
|
|
34
34
|
checkUser: () => checkUser
|
|
@@ -40,20 +40,13 @@ var import_sessionAuth = require('./../services/sessionAuth.service.cjs');
|
|
|
40
40
|
var import_user = require('./../services/user.service.cjs');
|
|
41
41
|
var import_cookies = require('./../utils/cookies.cjs');
|
|
42
42
|
var import_jsonwebtoken = __toESM(require("jsonwebtoken"), 1);
|
|
43
|
-
var AuthInformationType = /* @__PURE__ */ ((AuthInformationType2) => {
|
|
44
|
-
AuthInformationType2[AuthInformationType2["IsNull"] = 0] = "IsNull";
|
|
45
|
-
AuthInformationType2[AuthInformationType2["IsDefined"] = 1] = "IsDefined";
|
|
46
|
-
return AuthInformationType2;
|
|
47
|
-
})(AuthInformationType || {});
|
|
48
43
|
const checkUser = async (req, res, next) => {
|
|
49
44
|
const { [import_cookies.Cookies.JWT_AUTH]: sessionToken } = req.cookies;
|
|
50
45
|
res.locals.user = null;
|
|
51
46
|
res.locals.authType = null;
|
|
52
47
|
try {
|
|
53
48
|
if (sessionToken) {
|
|
54
|
-
const user = await (0, import_user.getUserBySession)(
|
|
55
|
-
sessionToken
|
|
56
|
-
);
|
|
49
|
+
const user = await (0, import_user.getUserBySession)(sessionToken);
|
|
57
50
|
if (user) {
|
|
58
51
|
res.locals.user = user.toObject();
|
|
59
52
|
res.locals.authType = "session";
|
|
@@ -120,9 +113,56 @@ const checkProject = async (req, res, next) => {
|
|
|
120
113
|
}
|
|
121
114
|
return next();
|
|
122
115
|
};
|
|
116
|
+
const checkAdmin = async (_req, res, next) => {
|
|
117
|
+
const { organization, project, user, authType } = res.locals;
|
|
118
|
+
if (authType !== "session") {
|
|
119
|
+
return next();
|
|
120
|
+
}
|
|
121
|
+
res.locals.organizationRights = {
|
|
122
|
+
read: true,
|
|
123
|
+
write: false,
|
|
124
|
+
admin: false
|
|
125
|
+
};
|
|
126
|
+
res.locals.projectRights = {
|
|
127
|
+
read: true,
|
|
128
|
+
write: false,
|
|
129
|
+
admin: false
|
|
130
|
+
};
|
|
131
|
+
res.locals.projectRights = {
|
|
132
|
+
read: true,
|
|
133
|
+
write: false,
|
|
134
|
+
admin: false
|
|
135
|
+
};
|
|
136
|
+
if (user) {
|
|
137
|
+
if (organization) {
|
|
138
|
+
const isOrganizationAdmin = organization.adminsIds.map((id) => String(id)).includes(String(user._id)) ?? false;
|
|
139
|
+
res.locals.isOrganizationAdmin = isOrganizationAdmin;
|
|
140
|
+
res.locals.organizationRights = {
|
|
141
|
+
read: true,
|
|
142
|
+
write: isOrganizationAdmin,
|
|
143
|
+
admin: isOrganizationAdmin
|
|
144
|
+
};
|
|
145
|
+
}
|
|
146
|
+
if (project) {
|
|
147
|
+
const isProjectAdmin = project.adminsIds.map((id) => String(id)).includes(String(user._id)) ?? false;
|
|
148
|
+
res.locals.isProjectAdmin = isProjectAdmin;
|
|
149
|
+
res.locals.projectRights = {
|
|
150
|
+
read: true,
|
|
151
|
+
write: isProjectAdmin,
|
|
152
|
+
admin: isProjectAdmin
|
|
153
|
+
};
|
|
154
|
+
res.locals.dictionaryRights = {
|
|
155
|
+
read: true,
|
|
156
|
+
write: true,
|
|
157
|
+
admin: true
|
|
158
|
+
};
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
return next();
|
|
162
|
+
};
|
|
123
163
|
// Annotate the CommonJS export names for ESM import in node:
|
|
124
164
|
0 && (module.exports = {
|
|
125
|
-
|
|
165
|
+
checkAdmin,
|
|
126
166
|
checkOrganization,
|
|
127
167
|
checkProject,
|
|
128
168
|
checkUser
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/middlewares/sessionAuth.middleware.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\n\nimport { OrganizationModel } from '@models/organization.model';\nimport { ProjectModel } from '@models/project.model';\nimport {\n clearOrganizationAuth,\n clearProjectAuth,\n} from '@services/sessionAuth.service';\nimport { getUserBySession as getUserBySessionService } from '@services/user.service';\nimport { Cookies } from '@utils/cookies';\nimport type { Request, Response, NextFunction } from 'express';\nimport jwt from 'jsonwebtoken';\nimport type {\n Organization,\n OrganizationDocument,\n} from '@/types/organization.types';\nimport type { Project, ProjectDocument } from '@/types/project.types';\nimport type { User
|
|
1
|
+
{"version":3,"sources":["../../../src/middlewares/sessionAuth.middleware.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\n\nimport { OrganizationModel } from '@models/organization.model';\nimport { ProjectModel } from '@models/project.model';\nimport {\n clearOrganizationAuth,\n clearProjectAuth,\n} from '@services/sessionAuth.service';\nimport { getUserBySession as getUserBySessionService } from '@services/user.service';\nimport { Cookies } from '@utils/cookies';\nimport type { Request, Response, NextFunction } from 'express';\nimport jwt from 'jsonwebtoken';\nimport type {\n Organization,\n OrganizationDocument,\n} from '@/types/organization.types';\nimport type { Project, ProjectDocument, Rights } from '@/types/project.types';\nimport type { User } from '@/types/user.types';\n\nexport type ResponseWithInformation<ResBody = any> = Response<\n ResBody,\n {\n user: User | null;\n // Auth Context\n organization: Organization | null;\n project: Project | null;\n authType: 'session' | 'oauth2' | null;\n // Auth Rights - oAuth2 Auth\n organizationRights: Rights | null;\n projectRights: Rights | null;\n dictionaryRights: Rights | null;\n // Auth Rights - Session Auth\n isOrganizationAdmin: boolean | null;\n isProjectAdmin: boolean | null;\n }\n>;\n\nexport const checkUser = async (\n req: Request,\n res: ResponseWithInformation,\n next: NextFunction\n): Promise<void> => {\n const { [Cookies.JWT_AUTH]: sessionToken } = req.cookies;\n\n res.locals.user = null;\n res.locals.authType = null;\n\n try {\n if (sessionToken) {\n const user = await getUserBySessionService(sessionToken);\n\n if (user) {\n res.locals.user = user.toObject();\n res.locals.authType = 'session';\n }\n }\n } catch (error) {\n console.error('Error fetching session:', error);\n }\n\n return next();\n};\n\nexport const checkOrganization = async (\n req: Request,\n res: ResponseWithInformation,\n next: NextFunction\n): Promise<void> => {\n const jwtTokenOrganization = req.cookies[Cookies.JWT_ORGANIZATION];\n\n res.locals.organization = null;\n\n try {\n if (!jwtTokenOrganization || jwtTokenOrganization === 'undefined') {\n clearOrganizationAuth(res);\n return next();\n }\n\n const organizationData = jwt.verify(\n jwtTokenOrganization,\n process.env.JWT_TOKEN_SECRET!\n ) as Organization;\n\n if (!organizationData) {\n clearOrganizationAuth(res);\n return next();\n }\n\n const organization: OrganizationDocument | null =\n await OrganizationModel.findById(organizationData._id);\n\n if (!organization) {\n clearOrganizationAuth(res);\n return next();\n }\n\n res.locals.organization = organization.toObject();\n } catch (error) {\n console.error('Error fetching organization:', error);\n }\n\n return next();\n};\n\nexport const checkProject = async (\n req: Request,\n res: ResponseWithInformation,\n next: NextFunction\n): Promise<void> => {\n const jwtTokenProject = req.cookies[Cookies.JWT_PROJECT];\n res.locals.project = null;\n\n try {\n if (!jwtTokenProject || jwtTokenProject === 'undefined') {\n clearProjectAuth(res);\n return next();\n }\n\n const decodedTokenProject = jwt.verify(\n jwtTokenProject,\n process.env.JWT_TOKEN_SECRET!\n ) as Project;\n\n if (!decodedTokenProject) {\n clearProjectAuth(res);\n return next();\n }\n\n const project: ProjectDocument | null = await ProjectModel.findById(\n decodedTokenProject._id\n );\n\n if (\n !project ||\n !res.locals.organization ||\n String(project.organizationId) !== String(res.locals.organization._id)\n ) {\n clearProjectAuth(res);\n return next();\n }\n\n res.locals.project = project.toObject();\n } catch (error) {\n console.error('Error fetching project:', error);\n }\n\n return next();\n};\n\n/**\n * Middleware to check if the user is an admin of the organization or project\n * Sets the following properties in res.locals:\n * - isOrganizationAdmin: boolean\n * - isProjectAdmin: boolean\n */\nexport const checkAdmin = async (\n _req: Request,\n res: ResponseWithInformation,\n next: NextFunction\n): Promise<void> => {\n const { organization, project, user, authType } = res.locals;\n\n if (authType !== 'session') {\n return next();\n }\n\n res.locals.organizationRights = {\n read: true,\n write: false,\n admin: false,\n };\n res.locals.projectRights = {\n read: true,\n write: false,\n admin: false,\n };\n res.locals.projectRights = {\n read: true,\n write: false,\n admin: false,\n };\n\n if (user) {\n if (organization) {\n const isOrganizationAdmin: boolean =\n organization.adminsIds\n .map((id) => String(id))\n .includes(String(user._id)) ?? false;\n\n res.locals.isOrganizationAdmin = isOrganizationAdmin;\n\n res.locals.organizationRights = {\n read: true,\n write: isOrganizationAdmin,\n admin: isOrganizationAdmin,\n };\n }\n\n if (project) {\n const isProjectAdmin: boolean =\n project.adminsIds.map((id) => String(id)).includes(String(user._id)) ??\n false;\n\n res.locals.isProjectAdmin = isProjectAdmin;\n\n res.locals.projectRights = {\n read: true,\n write: isProjectAdmin,\n admin: isProjectAdmin,\n };\n\n res.locals.dictionaryRights = {\n read: true,\n write: true,\n admin: true,\n };\n }\n }\n\n return next();\n};\n"],"mappings":"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","names":["getUserBySessionService","jwt"]}
|
|
@@ -23,10 +23,9 @@ __export(dictionary_routes_exports, {
|
|
|
23
23
|
});
|
|
24
24
|
module.exports = __toCommonJS(dictionary_routes_exports);
|
|
25
25
|
var import_dictionary = require('./../controllers/dictionary.controller.cjs');
|
|
26
|
-
var import_accessControl = require('./../utils/accessControl.cjs');
|
|
27
26
|
var import_express = require("express");
|
|
28
27
|
const dictionaryRouter = (0, import_express.Router)();
|
|
29
|
-
const baseURL = `${process.env.
|
|
28
|
+
const baseURL = `${process.env.BACKEND_URL}/api/dictionary`;
|
|
30
29
|
const dictionaryRoutes = {
|
|
31
30
|
getDictionaries: {
|
|
32
31
|
urlModel: "/",
|
|
@@ -66,86 +65,27 @@ const dictionaryRoutes = {
|
|
|
66
65
|
};
|
|
67
66
|
dictionaryRouter.get(
|
|
68
67
|
dictionaryRoutes.getDictionaries.urlModel,
|
|
69
|
-
(0, import_accessControl.accessControlMiddleWare)(
|
|
70
|
-
[
|
|
71
|
-
import_accessControl.AccessRule.authenticated,
|
|
72
|
-
import_accessControl.AccessRule.hasOrganization,
|
|
73
|
-
import_accessControl.AccessRule.hasProject
|
|
74
|
-
],
|
|
75
|
-
import_accessControl.AccessRule.admin
|
|
76
|
-
),
|
|
77
68
|
import_dictionary.getDictionaries
|
|
78
69
|
);
|
|
79
70
|
dictionaryRouter.get(
|
|
80
71
|
dictionaryRoutes.getDictionariesKeys.urlModel,
|
|
81
|
-
(0, import_accessControl.accessControlMiddleWare)(
|
|
82
|
-
[
|
|
83
|
-
import_accessControl.AccessRule.authenticated,
|
|
84
|
-
import_accessControl.AccessRule.hasOrganization,
|
|
85
|
-
import_accessControl.AccessRule.hasProject
|
|
86
|
-
],
|
|
87
|
-
import_accessControl.AccessRule.admin
|
|
88
|
-
),
|
|
89
72
|
import_dictionary.getDictionariesKeys
|
|
90
73
|
);
|
|
91
74
|
dictionaryRouter.get(
|
|
92
75
|
dictionaryRoutes.getDictionary.urlModel,
|
|
93
|
-
(0, import_accessControl.accessControlMiddleWare)(
|
|
94
|
-
[
|
|
95
|
-
import_accessControl.AccessRule.authenticated,
|
|
96
|
-
import_accessControl.AccessRule.hasOrganization,
|
|
97
|
-
import_accessControl.AccessRule.hasProject
|
|
98
|
-
],
|
|
99
|
-
import_accessControl.AccessRule.admin
|
|
100
|
-
),
|
|
101
76
|
import_dictionary.getDictionaryByKey
|
|
102
77
|
);
|
|
103
|
-
dictionaryRouter.post(
|
|
104
|
-
dictionaryRoutes.addDictionary.urlModel,
|
|
105
|
-
(0, import_accessControl.accessControlMiddleWare)(
|
|
106
|
-
[
|
|
107
|
-
import_accessControl.AccessRule.authenticated,
|
|
108
|
-
import_accessControl.AccessRule.hasOrganization,
|
|
109
|
-
import_accessControl.AccessRule.hasProject
|
|
110
|
-
],
|
|
111
|
-
import_accessControl.AccessRule.admin
|
|
112
|
-
),
|
|
113
|
-
import_dictionary.addDictionary
|
|
114
|
-
);
|
|
78
|
+
dictionaryRouter.post(dictionaryRoutes.addDictionary.urlModel, import_dictionary.addDictionary);
|
|
115
79
|
dictionaryRouter.patch(
|
|
116
80
|
dictionaryRoutes.pushDictionaries.urlModel,
|
|
117
|
-
(0, import_accessControl.accessControlMiddleWare)(
|
|
118
|
-
[
|
|
119
|
-
import_accessControl.AccessRule.authenticated,
|
|
120
|
-
import_accessControl.AccessRule.hasOrganization,
|
|
121
|
-
import_accessControl.AccessRule.hasProject
|
|
122
|
-
],
|
|
123
|
-
import_accessControl.AccessRule.admin
|
|
124
|
-
),
|
|
125
81
|
import_dictionary.pushDictionaries
|
|
126
82
|
);
|
|
127
83
|
dictionaryRouter.put(
|
|
128
84
|
dictionaryRoutes.updateDictionary.urlModel,
|
|
129
|
-
(0, import_accessControl.accessControlMiddleWare)(
|
|
130
|
-
[
|
|
131
|
-
import_accessControl.AccessRule.authenticated,
|
|
132
|
-
import_accessControl.AccessRule.hasOrganization,
|
|
133
|
-
import_accessControl.AccessRule.hasProject
|
|
134
|
-
],
|
|
135
|
-
import_accessControl.AccessRule.admin
|
|
136
|
-
),
|
|
137
85
|
import_dictionary.updateDictionary
|
|
138
86
|
);
|
|
139
87
|
dictionaryRouter.delete(
|
|
140
88
|
dictionaryRoutes.deleteDictionary.urlModel,
|
|
141
|
-
(0, import_accessControl.accessControlMiddleWare)(
|
|
142
|
-
[
|
|
143
|
-
import_accessControl.AccessRule.authenticated,
|
|
144
|
-
import_accessControl.AccessRule.hasOrganization,
|
|
145
|
-
import_accessControl.AccessRule.hasProject
|
|
146
|
-
],
|
|
147
|
-
import_accessControl.AccessRule.admin
|
|
148
|
-
),
|
|
149
89
|
import_dictionary.deleteDictionary
|
|
150
90
|
);
|
|
151
91
|
// Annotate the CommonJS export names for ESM import in node:
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/routes/dictionary.routes.ts"],"sourcesContent":["import {\n pushDictionaries,\n addDictionary,\n deleteDictionary,\n getDictionaries,\n updateDictionary,\n getDictionaryByKey,\n getDictionariesKeys,\n} from '@controllers/dictionary.controller';\nimport {
|
|
1
|
+
{"version":3,"sources":["../../../src/routes/dictionary.routes.ts"],"sourcesContent":["import {\n pushDictionaries,\n addDictionary,\n deleteDictionary,\n getDictionaries,\n updateDictionary,\n getDictionaryByKey,\n getDictionariesKeys,\n} from '@controllers/dictionary.controller';\nimport { Router } from 'express';\nimport { Routes } from '@/types/Routes';\n\nexport const dictionaryRouter: Router = Router();\n\nconst baseURL = `${process.env.BACKEND_URL}/api/dictionary`;\n\nexport const dictionaryRoutes = {\n getDictionaries: {\n urlModel: '/',\n url: baseURL,\n method: 'GET',\n },\n getDictionariesKeys: {\n urlModel: '/keys',\n url: `${baseURL}/keys`,\n method: 'GET',\n },\n getDictionary: {\n urlModel: '/:dictionaryKey',\n url: ({ dictionaryKey }: { dictionaryKey: string }) =>\n `${baseURL}/${dictionaryKey}`,\n method: 'GET',\n },\n addDictionary: {\n urlModel: '/',\n url: baseURL,\n method: 'POST',\n },\n pushDictionaries: {\n urlModel: '/',\n url: baseURL,\n method: 'PATCH',\n },\n updateDictionary: {\n urlModel: '/',\n url: baseURL,\n method: 'PUT',\n },\n deleteDictionary: {\n urlModel: '/',\n url: baseURL,\n method: 'DELETE',\n },\n} satisfies Routes;\n\ndictionaryRouter.get(\n dictionaryRoutes.getDictionaries.urlModel,\n getDictionaries\n);\n\ndictionaryRouter.get(\n dictionaryRoutes.getDictionariesKeys.urlModel,\n getDictionariesKeys\n);\n\ndictionaryRouter.get(\n dictionaryRoutes.getDictionary.urlModel,\n getDictionaryByKey\n);\n\ndictionaryRouter.post(dictionaryRoutes.addDictionary.urlModel, addDictionary);\ndictionaryRouter.patch(\n dictionaryRoutes.pushDictionaries.urlModel,\n pushDictionaries\n);\ndictionaryRouter.put(\n dictionaryRoutes.updateDictionary.urlModel,\n updateDictionary\n);\ndictionaryRouter.delete(\n dictionaryRoutes.deleteDictionary.urlModel,\n deleteDictionary\n);\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,wBAQO;AACP,qBAAuB;AAGhB,MAAM,uBAA2B,uBAAO;AAE/C,MAAM,UAAU,GAAG,QAAQ,IAAI,WAAW;AAEnC,MAAM,mBAAmB;AAAA,EAC9B,iBAAiB;AAAA,IACf,UAAU;AAAA,IACV,KAAK;AAAA,IACL,QAAQ;AAAA,EACV;AAAA,EACA,qBAAqB;AAAA,IACnB,UAAU;AAAA,IACV,KAAK,GAAG,OAAO;AAAA,IACf,QAAQ;AAAA,EACV;AAAA,EACA,eAAe;AAAA,IACb,UAAU;AAAA,IACV,KAAK,CAAC,EAAE,cAAc,MACpB,GAAG,OAAO,IAAI,aAAa;AAAA,IAC7B,QAAQ;AAAA,EACV;AAAA,EACA,eAAe;AAAA,IACb,UAAU;AAAA,IACV,KAAK;AAAA,IACL,QAAQ;AAAA,EACV;AAAA,EACA,kBAAkB;AAAA,IAChB,UAAU;AAAA,IACV,KAAK;AAAA,IACL,QAAQ;AAAA,EACV;AAAA,EACA,kBAAkB;AAAA,IAChB,UAAU;AAAA,IACV,KAAK;AAAA,IACL,QAAQ;AAAA,EACV;AAAA,EACA,kBAAkB;AAAA,IAChB,UAAU;AAAA,IACV,KAAK;AAAA,IACL,QAAQ;AAAA,EACV;AACF;AAEA,iBAAiB;AAAA,EACf,iBAAiB,gBAAgB;AAAA,EACjC;AACF;AAEA,iBAAiB;AAAA,EACf,iBAAiB,oBAAoB;AAAA,EACrC;AACF;AAEA,iBAAiB;AAAA,EACf,iBAAiB,cAAc;AAAA,EAC/B;AACF;AAEA,iBAAiB,KAAK,iBAAiB,cAAc,UAAU,+BAAa;AAC5E,iBAAiB;AAAA,EACf,iBAAiB,iBAAiB;AAAA,EAClC;AACF;AACA,iBAAiB;AAAA,EACf,iBAAiB,iBAAiB;AAAA,EAClC;AACF;AACA,iBAAiB;AAAA,EACf,iBAAiB,iBAAiB;AAAA,EAClC;AACF;","names":[]}
|
|
@@ -23,10 +23,9 @@ __export(organization_routes_exports, {
|
|
|
23
23
|
});
|
|
24
24
|
module.exports = __toCommonJS(organization_routes_exports);
|
|
25
25
|
var import_organization = require('./../controllers/organization.controller.cjs');
|
|
26
|
-
var import_accessControl = require('./../utils/accessControl.cjs');
|
|
27
26
|
var import_express = require("express");
|
|
28
27
|
const organizationRouter = (0, import_express.Router)();
|
|
29
|
-
const baseURL = `${process.env.
|
|
28
|
+
const baseURL = `${process.env.BACKEND_URL}/api/organization`;
|
|
30
29
|
const organizationRoutes = {
|
|
31
30
|
getOrganizations: {
|
|
32
31
|
urlModel: "/",
|
|
@@ -71,57 +70,34 @@ const organizationRoutes = {
|
|
|
71
70
|
};
|
|
72
71
|
organizationRouter.get(
|
|
73
72
|
organizationRoutes.getOrganizations.urlModel,
|
|
74
|
-
(0, import_accessControl.accessControlMiddleWare)(import_accessControl.AccessRule.authenticated),
|
|
75
73
|
import_organization.getOrganizations
|
|
76
74
|
);
|
|
77
75
|
organizationRouter.post(
|
|
78
76
|
organizationRoutes.addOrganization.urlModel,
|
|
79
|
-
(0, import_accessControl.accessControlMiddleWare)(import_accessControl.AccessRule.authenticated),
|
|
80
77
|
import_organization.addOrganization
|
|
81
78
|
);
|
|
82
79
|
organizationRouter.put(
|
|
83
80
|
organizationRoutes.updateOrganization.urlModel,
|
|
84
|
-
(0, import_accessControl.accessControlMiddleWare)([
|
|
85
|
-
import_accessControl.AccessRule.authenticated,
|
|
86
|
-
import_accessControl.AccessRule.hasOrganization
|
|
87
|
-
]),
|
|
88
81
|
import_organization.updateOrganization
|
|
89
82
|
);
|
|
90
83
|
organizationRouter.put(
|
|
91
84
|
organizationRoutes.updateOrganizationMembers.urlModel,
|
|
92
|
-
(0, import_accessControl.accessControlMiddleWare)([
|
|
93
|
-
import_accessControl.AccessRule.authenticated,
|
|
94
|
-
import_accessControl.AccessRule.hasOrganization
|
|
95
|
-
]),
|
|
96
85
|
import_organization.updateOrganizationMembers
|
|
97
86
|
);
|
|
98
87
|
organizationRouter.post(
|
|
99
88
|
organizationRoutes.addOrganizationMember.urlModel,
|
|
100
|
-
(0, import_accessControl.accessControlMiddleWare)([
|
|
101
|
-
import_accessControl.AccessRule.authenticated,
|
|
102
|
-
import_accessControl.AccessRule.hasOrganization
|
|
103
|
-
]),
|
|
104
89
|
import_organization.addOrganizationMember
|
|
105
90
|
);
|
|
106
91
|
organizationRouter.delete(
|
|
107
92
|
organizationRoutes.deleteOrganization.urlModel,
|
|
108
|
-
(0, import_accessControl.accessControlMiddleWare)([
|
|
109
|
-
import_accessControl.AccessRule.authenticated,
|
|
110
|
-
import_accessControl.AccessRule.hasOrganization
|
|
111
|
-
]),
|
|
112
93
|
import_organization.deleteOrganization
|
|
113
94
|
);
|
|
114
95
|
organizationRouter.put(
|
|
115
96
|
organizationRoutes.selectOrganization.urlModel,
|
|
116
|
-
(0, import_accessControl.accessControlMiddleWare)([import_accessControl.AccessRule.authenticated]),
|
|
117
97
|
import_organization.selectOrganization
|
|
118
98
|
);
|
|
119
99
|
organizationRouter.post(
|
|
120
100
|
organizationRoutes.unselectOrganization.urlModel,
|
|
121
|
-
(0, import_accessControl.accessControlMiddleWare)([
|
|
122
|
-
import_accessControl.AccessRule.authenticated,
|
|
123
|
-
import_accessControl.AccessRule.hasOrganization
|
|
124
|
-
]),
|
|
125
101
|
import_organization.unselectOrganization
|
|
126
102
|
);
|
|
127
103
|
// Annotate the CommonJS export names for ESM import in node:
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/routes/organization.routes.ts"],"sourcesContent":["import {\n addOrganization,\n deleteOrganization,\n selectOrganization,\n getOrganizations,\n updateOrganization,\n updateOrganizationMembers,\n unselectOrganization,\n addOrganizationMember,\n} from '@controllers/organization.controller';\nimport {
|
|
1
|
+
{"version":3,"sources":["../../../src/routes/organization.routes.ts"],"sourcesContent":["import {\n addOrganization,\n deleteOrganization,\n selectOrganization,\n getOrganizations,\n updateOrganization,\n updateOrganizationMembers,\n unselectOrganization,\n addOrganizationMember,\n} from '@controllers/organization.controller';\nimport { Router } from 'express';\nimport { Routes } from '@/types/Routes';\n\nexport const organizationRouter: Router = Router();\n\nconst baseURL = `${process.env.BACKEND_URL}/api/organization`;\n\nexport const organizationRoutes = {\n getOrganizations: {\n urlModel: '/',\n url: baseURL,\n method: 'GET',\n },\n addOrganization: {\n urlModel: '/',\n url: baseURL,\n method: 'POST',\n },\n updateOrganization: {\n urlModel: '/',\n url: baseURL,\n\n method: 'PUT',\n },\n updateOrganizationMembers: {\n urlModel: '/members',\n url: `${baseURL}/members`,\n method: 'PUT',\n },\n addOrganizationMember: {\n urlModel: '/member',\n url: `${baseURL}/member`,\n method: 'POST',\n },\n deleteOrganization: {\n urlModel: '/',\n url: baseURL,\n method: 'DELETE',\n },\n selectOrganization: {\n urlModel: '/:organizationId',\n url: ({ organizationId }: { organizationId: string }) =>\n `${baseURL}/${organizationId}`,\n method: 'PUT',\n },\n unselectOrganization: {\n urlModel: '/logout',\n url: `${baseURL}/logout`,\n method: 'POST',\n },\n} satisfies Routes;\n\norganizationRouter.get(\n organizationRoutes.getOrganizations.urlModel,\n getOrganizations\n);\n\norganizationRouter.post(\n organizationRoutes.addOrganization.urlModel,\n addOrganization\n);\norganizationRouter.put(\n organizationRoutes.updateOrganization.urlModel,\n updateOrganization\n);\norganizationRouter.put(\n organizationRoutes.updateOrganizationMembers.urlModel,\n updateOrganizationMembers\n);\norganizationRouter.post(\n organizationRoutes.addOrganizationMember.urlModel,\n addOrganizationMember\n);\norganizationRouter.delete(\n organizationRoutes.deleteOrganization.urlModel,\n deleteOrganization\n);\norganizationRouter.put(\n organizationRoutes.selectOrganization.urlModel,\n selectOrganization\n);\n\norganizationRouter.post(\n organizationRoutes.unselectOrganization.urlModel,\n unselectOrganization\n);\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,0BASO;AACP,qBAAuB;AAGhB,MAAM,yBAA6B,uBAAO;AAEjD,MAAM,UAAU,GAAG,QAAQ,IAAI,WAAW;AAEnC,MAAM,qBAAqB;AAAA,EAChC,kBAAkB;AAAA,IAChB,UAAU;AAAA,IACV,KAAK;AAAA,IACL,QAAQ;AAAA,EACV;AAAA,EACA,iBAAiB;AAAA,IACf,UAAU;AAAA,IACV,KAAK;AAAA,IACL,QAAQ;AAAA,EACV;AAAA,EACA,oBAAoB;AAAA,IAClB,UAAU;AAAA,IACV,KAAK;AAAA,IAEL,QAAQ;AAAA,EACV;AAAA,EACA,2BAA2B;AAAA,IACzB,UAAU;AAAA,IACV,KAAK,GAAG,OAAO;AAAA,IACf,QAAQ;AAAA,EACV;AAAA,EACA,uBAAuB;AAAA,IACrB,UAAU;AAAA,IACV,KAAK,GAAG,OAAO;AAAA,IACf,QAAQ;AAAA,EACV;AAAA,EACA,oBAAoB;AAAA,IAClB,UAAU;AAAA,IACV,KAAK;AAAA,IACL,QAAQ;AAAA,EACV;AAAA,EACA,oBAAoB;AAAA,IAClB,UAAU;AAAA,IACV,KAAK,CAAC,EAAE,eAAe,MACrB,GAAG,OAAO,IAAI,cAAc;AAAA,IAC9B,QAAQ;AAAA,EACV;AAAA,EACA,sBAAsB;AAAA,IACpB,UAAU;AAAA,IACV,KAAK,GAAG,OAAO;AAAA,IACf,QAAQ;AAAA,EACV;AACF;AAEA,mBAAmB;AAAA,EACjB,mBAAmB,iBAAiB;AAAA,EACpC;AACF;AAEA,mBAAmB;AAAA,EACjB,mBAAmB,gBAAgB;AAAA,EACnC;AACF;AACA,mBAAmB;AAAA,EACjB,mBAAmB,mBAAmB;AAAA,EACtC;AACF;AACA,mBAAmB;AAAA,EACjB,mBAAmB,0BAA0B;AAAA,EAC7C;AACF;AACA,mBAAmB;AAAA,EACjB,mBAAmB,sBAAsB;AAAA,EACzC;AACF;AACA,mBAAmB;AAAA,EACjB,mBAAmB,mBAAmB;AAAA,EACtC;AACF;AACA,mBAAmB;AAAA,EACjB,mBAAmB,mBAAmB;AAAA,EACtC;AACF;AAEA,mBAAmB;AAAA,EACjB,mBAAmB,qBAAqB;AAAA,EACxC;AACF;","names":[]}
|
|
@@ -24,10 +24,9 @@ __export(project_routes_exports, {
|
|
|
24
24
|
module.exports = __toCommonJS(project_routes_exports);
|
|
25
25
|
var import_project = require('./../controllers/project.controller.cjs');
|
|
26
26
|
var import_projectAccessKey = require('./../controllers/projectAccessKey.controller.cjs');
|
|
27
|
-
var import_accessControl = require('./../utils/accessControl.cjs');
|
|
28
27
|
var import_express = require("express");
|
|
29
28
|
const projectRouter = (0, import_express.Router)();
|
|
30
|
-
const baseURL = `${process.env.
|
|
29
|
+
const baseURL = `${process.env.BACKEND_URL}/api/project`;
|
|
31
30
|
const projectRoutes = {
|
|
32
31
|
getProjects: {
|
|
33
32
|
urlModel: "/",
|
|
@@ -80,93 +79,19 @@ const projectRoutes = {
|
|
|
80
79
|
method: "DELETE"
|
|
81
80
|
}
|
|
82
81
|
};
|
|
83
|
-
projectRouter.get(
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
import_accessControl.AccessRule.authenticated,
|
|
87
|
-
import_accessControl.AccessRule.hasOrganization
|
|
88
|
-
]),
|
|
89
|
-
import_project.getProjects
|
|
90
|
-
);
|
|
91
|
-
projectRouter.post(
|
|
92
|
-
projectRoutes.addProject.urlModel,
|
|
93
|
-
(0, import_accessControl.accessControlMiddleWare)([
|
|
94
|
-
import_accessControl.AccessRule.authenticated,
|
|
95
|
-
import_accessControl.AccessRule.hasOrganization
|
|
96
|
-
]),
|
|
97
|
-
import_project.addProject
|
|
98
|
-
);
|
|
99
|
-
projectRouter.put(
|
|
100
|
-
projectRoutes.updateProject.urlModel,
|
|
101
|
-
(0, import_accessControl.accessControlMiddleWare)([
|
|
102
|
-
import_accessControl.AccessRule.authenticated,
|
|
103
|
-
import_accessControl.AccessRule.hasOrganization,
|
|
104
|
-
import_accessControl.AccessRule.hasProject
|
|
105
|
-
]),
|
|
106
|
-
import_project.updateProject
|
|
107
|
-
);
|
|
82
|
+
projectRouter.get(projectRoutes.getProjects.urlModel, import_project.getProjects);
|
|
83
|
+
projectRouter.post(projectRoutes.addProject.urlModel, import_project.addProject);
|
|
84
|
+
projectRouter.put(projectRoutes.updateProject.urlModel, import_project.updateProject);
|
|
108
85
|
projectRouter.put(
|
|
109
86
|
projectRoutes.updateProjectMembers.urlModel,
|
|
110
|
-
(0, import_accessControl.accessControlMiddleWare)([
|
|
111
|
-
import_accessControl.AccessRule.authenticated,
|
|
112
|
-
import_accessControl.AccessRule.hasOrganization,
|
|
113
|
-
import_accessControl.AccessRule.hasProject
|
|
114
|
-
]),
|
|
115
87
|
import_project.updateProjectMembers
|
|
116
88
|
);
|
|
117
|
-
projectRouter.delete(
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
]),
|
|
124
|
-
import_project.deleteProject
|
|
125
|
-
);
|
|
126
|
-
projectRouter.post(
|
|
127
|
-
projectRoutes.addNewAccessKey.urlModel,
|
|
128
|
-
(0, import_accessControl.accessControlMiddleWare)([
|
|
129
|
-
import_accessControl.AccessRule.authenticated,
|
|
130
|
-
import_accessControl.AccessRule.hasOrganization,
|
|
131
|
-
import_accessControl.AccessRule.hasProject
|
|
132
|
-
]),
|
|
133
|
-
import_projectAccessKey.addNewAccessKey
|
|
134
|
-
);
|
|
135
|
-
projectRouter.patch(
|
|
136
|
-
projectRoutes.refreshAccessKey.urlModel,
|
|
137
|
-
(0, import_accessControl.accessControlMiddleWare)([
|
|
138
|
-
import_accessControl.AccessRule.authenticated,
|
|
139
|
-
import_accessControl.AccessRule.hasOrganization,
|
|
140
|
-
import_accessControl.AccessRule.hasProject
|
|
141
|
-
]),
|
|
142
|
-
import_projectAccessKey.refreshAccessKey
|
|
143
|
-
);
|
|
144
|
-
projectRouter.delete(
|
|
145
|
-
projectRoutes.deleteAccessKey.urlModel,
|
|
146
|
-
(0, import_accessControl.accessControlMiddleWare)([
|
|
147
|
-
import_accessControl.AccessRule.authenticated,
|
|
148
|
-
import_accessControl.AccessRule.hasOrganization,
|
|
149
|
-
import_accessControl.AccessRule.hasProject
|
|
150
|
-
]),
|
|
151
|
-
import_projectAccessKey.deleteAccessKey
|
|
152
|
-
);
|
|
153
|
-
projectRouter.post(
|
|
154
|
-
projectRoutes.unselectProject.urlModel,
|
|
155
|
-
(0, import_accessControl.accessControlMiddleWare)([
|
|
156
|
-
import_accessControl.AccessRule.authenticated,
|
|
157
|
-
import_accessControl.AccessRule.hasOrganization,
|
|
158
|
-
import_accessControl.AccessRule.hasProject
|
|
159
|
-
]),
|
|
160
|
-
import_project.unselectProject
|
|
161
|
-
);
|
|
162
|
-
projectRouter.put(
|
|
163
|
-
projectRoutes.selectProject.urlModel,
|
|
164
|
-
(0, import_accessControl.accessControlMiddleWare)([
|
|
165
|
-
import_accessControl.AccessRule.authenticated,
|
|
166
|
-
import_accessControl.AccessRule.hasOrganization
|
|
167
|
-
]),
|
|
168
|
-
import_project.selectProject
|
|
169
|
-
);
|
|
89
|
+
projectRouter.delete(projectRoutes.deleteProject.urlModel, import_project.deleteProject);
|
|
90
|
+
projectRouter.post(projectRoutes.addNewAccessKey.urlModel, import_projectAccessKey.addNewAccessKey);
|
|
91
|
+
projectRouter.patch(projectRoutes.refreshAccessKey.urlModel, import_projectAccessKey.refreshAccessKey);
|
|
92
|
+
projectRouter.delete(projectRoutes.deleteAccessKey.urlModel, import_projectAccessKey.deleteAccessKey);
|
|
93
|
+
projectRouter.post(projectRoutes.unselectProject.urlModel, import_project.unselectProject);
|
|
94
|
+
projectRouter.put(projectRoutes.selectProject.urlModel, import_project.selectProject);
|
|
170
95
|
// Annotate the CommonJS export names for ESM import in node:
|
|
171
96
|
0 && (module.exports = {
|
|
172
97
|
projectRouter,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/routes/project.routes.ts"],"sourcesContent":["import {\n addProject,\n deleteProject,\n getProjects,\n updateProject,\n selectProject,\n unselectProject,\n updateProjectMembers,\n} from '@controllers/project.controller';\nimport {\n addNewAccessKey,\n deleteAccessKey,\n refreshAccessKey,\n} from '@controllers/projectAccessKey.controller';\nimport {
|
|
1
|
+
{"version":3,"sources":["../../../src/routes/project.routes.ts"],"sourcesContent":["import {\n addProject,\n deleteProject,\n getProjects,\n updateProject,\n selectProject,\n unselectProject,\n updateProjectMembers,\n} from '@controllers/project.controller';\nimport {\n addNewAccessKey,\n deleteAccessKey,\n refreshAccessKey,\n} from '@controllers/projectAccessKey.controller';\nimport { Router } from 'express';\nimport { Routes } from '@/types/Routes';\n\nexport const projectRouter: Router = Router();\n\nconst baseURL = `${process.env.BACKEND_URL}/api/project`;\n\nexport const projectRoutes = {\n getProjects: {\n urlModel: '/',\n url: baseURL,\n method: 'GET',\n },\n addProject: {\n urlModel: '/',\n url: baseURL,\n method: 'POST',\n },\n updateProject: {\n urlModel: '/',\n url: baseURL,\n method: 'PUT',\n },\n updateProjectMembers: {\n urlModel: '/members',\n url: `${process.env.CLIENT_URL}/api/members`,\n method: 'PUT',\n },\n deleteProject: {\n urlModel: '/',\n url: baseURL,\n method: 'DELETE',\n },\n selectProject: {\n urlModel: '/:projectId',\n url: ({ projectId }: { projectId: string }) => `${baseURL}/${projectId}`,\n method: 'PUT',\n },\n unselectProject: {\n urlModel: '/logout',\n url: `${baseURL}/logout`,\n method: 'POST',\n },\n addNewAccessKey: {\n urlModel: '/access_key',\n url: `${baseURL}/access_key`,\n method: 'POST',\n },\n refreshAccessKey: {\n urlModel: '/access_key',\n url: `${baseURL}/access_key`,\n method: 'PATCH',\n },\n deleteAccessKey: {\n urlModel: '/access_key',\n url: `${baseURL}/access_key`,\n method: 'DELETE',\n },\n} satisfies Routes;\n\nprojectRouter.get(projectRoutes.getProjects.urlModel, getProjects);\n\nprojectRouter.post(projectRoutes.addProject.urlModel, addProject);\nprojectRouter.put(projectRoutes.updateProject.urlModel, updateProject);\nprojectRouter.put(\n projectRoutes.updateProjectMembers.urlModel,\n updateProjectMembers\n);\nprojectRouter.delete(projectRoutes.deleteProject.urlModel, deleteProject);\n\nprojectRouter.post(projectRoutes.addNewAccessKey.urlModel, addNewAccessKey);\n\nprojectRouter.patch(projectRoutes.refreshAccessKey.urlModel, refreshAccessKey);\n\nprojectRouter.delete(projectRoutes.deleteAccessKey.urlModel, deleteAccessKey);\n\nprojectRouter.post(projectRoutes.unselectProject.urlModel, unselectProject);\n\nprojectRouter.put(projectRoutes.selectProject.urlModel, selectProject);\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qBAQO;AACP,8BAIO;AACP,qBAAuB;AAGhB,MAAM,oBAAwB,uBAAO;AAE5C,MAAM,UAAU,GAAG,QAAQ,IAAI,WAAW;AAEnC,MAAM,gBAAgB;AAAA,EAC3B,aAAa;AAAA,IACX,UAAU;AAAA,IACV,KAAK;AAAA,IACL,QAAQ;AAAA,EACV;AAAA,EACA,YAAY;AAAA,IACV,UAAU;AAAA,IACV,KAAK;AAAA,IACL,QAAQ;AAAA,EACV;AAAA,EACA,eAAe;AAAA,IACb,UAAU;AAAA,IACV,KAAK;AAAA,IACL,QAAQ;AAAA,EACV;AAAA,EACA,sBAAsB;AAAA,IACpB,UAAU;AAAA,IACV,KAAK,GAAG,QAAQ,IAAI,UAAU;AAAA,IAC9B,QAAQ;AAAA,EACV;AAAA,EACA,eAAe;AAAA,IACb,UAAU;AAAA,IACV,KAAK;AAAA,IACL,QAAQ;AAAA,EACV;AAAA,EACA,eAAe;AAAA,IACb,UAAU;AAAA,IACV,KAAK,CAAC,EAAE,UAAU,MAA6B,GAAG,OAAO,IAAI,SAAS;AAAA,IACtE,QAAQ;AAAA,EACV;AAAA,EACA,iBAAiB;AAAA,IACf,UAAU;AAAA,IACV,KAAK,GAAG,OAAO;AAAA,IACf,QAAQ;AAAA,EACV;AAAA,EACA,iBAAiB;AAAA,IACf,UAAU;AAAA,IACV,KAAK,GAAG,OAAO;AAAA,IACf,QAAQ;AAAA,EACV;AAAA,EACA,kBAAkB;AAAA,IAChB,UAAU;AAAA,IACV,KAAK,GAAG,OAAO;AAAA,IACf,QAAQ;AAAA,EACV;AAAA,EACA,iBAAiB;AAAA,IACf,UAAU;AAAA,IACV,KAAK,GAAG,OAAO;AAAA,IACf,QAAQ;AAAA,EACV;AACF;AAEA,cAAc,IAAI,cAAc,YAAY,UAAU,0BAAW;AAEjE,cAAc,KAAK,cAAc,WAAW,UAAU,yBAAU;AAChE,cAAc,IAAI,cAAc,cAAc,UAAU,4BAAa;AACrE,cAAc;AAAA,EACZ,cAAc,qBAAqB;AAAA,EACnC;AACF;AACA,cAAc,OAAO,cAAc,cAAc,UAAU,4BAAa;AAExE,cAAc,KAAK,cAAc,gBAAgB,UAAU,uCAAe;AAE1E,cAAc,MAAM,cAAc,iBAAiB,UAAU,wCAAgB;AAE7E,cAAc,OAAO,cAAc,gBAAgB,UAAU,uCAAe;AAE5E,cAAc,KAAK,cAAc,gBAAgB,UAAU,8BAAe;AAE1E,cAAc,IAAI,cAAc,cAAc,UAAU,4BAAa;","names":[]}
|