Skip to content

Commit 1b37871

Browse files
committed
Add middlewares
1 parent fe7b7fd commit 1b37871

18 files changed

+108
-50
lines changed

server/controllers/InvitationController.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ class InvitationController extends CrudController {
55
invite = async (req, res, next) => {
66
try {
77
if (!("organisationId" in req.body && "emailList" in req.body)) {
8-
throw "Missing parameters";
8+
throw FliptaskError.missingParams();
99
}
1010
req.body.createdBy = req.user.id;
1111
const data = await this.service.inviteMany(req.body);
@@ -18,7 +18,7 @@ class InvitationController extends CrudController {
1818
details = async (req, res, next) => {
1919
try {
2020
if (!("link" in req.query)) {
21-
throw "Missing parameters";
21+
throw FliptaskError.missingParams();
2222
}
2323
const data = await this.service.details(req.query.link);
2424
Response.success(res, data);
@@ -32,7 +32,7 @@ class InvitationController extends CrudController {
3232
const { user, body } = req;
3333
const { link, accept } = body;
3434
if (!(link && accept)) {
35-
throw "Missing parameters";
35+
throw FliptaskError.missingParams();
3636
}
3737
const data = await this.service.resolve({ user, link, accept });
3838
Response.success(res, data);
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
const CrudController = require("./base/CrudController");
22

3-
global.WorkspaceController = new CrudController(WorkspaceService);
3+
global.workspaceController = new CrudController(workspaceService);

server/controllers/base/Response.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@ class Response {
88

99
let messages = {};
1010

11-
if (typeof error === "string") {
12-
messages["error"] = error;
11+
if (error instanceof Error) {
12+
messages["error"] = error.message;
1313
} else if ("errors" in error && error["errors"].length) {
1414
messages = error["errors"].reduce((acc, item) => {
1515
if (item.path && item.message) {

server/errors/FliptaskError.js

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
class FliptaskError extends Error {
2+
static permissionDenied(message = "Permission Denied") {
3+
return new FliptaskError(message);
4+
}
5+
6+
static missingParams(message = "Missing Parameters") {
7+
return new FliptaskError(message);
8+
}
9+
}
10+
11+
global.FliptaskError = FliptaskError;

server/errors/index.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
require("./FliptaskError");

server/index.js

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,10 @@ const configuration = {
1919
bootstrap: [
2020
"Multer",
2121
"Mailer",
22-
"Logger",
22+
// "Logger",
2323
// "DB",
2424
// "Model",
25-
"Middleware",
25+
// "Middleware",
2626
// "Controller",
2727
// "Route",
2828
"Express"
@@ -65,10 +65,12 @@ const loadApp = async () => {
6565

6666

6767
require("./database");
68+
require("./errors");
6869
require("./models");
6970
require("./services");
7071
require("./controllers");
7172
require("./auth");
73+
require("./middlewares");
7274
require("./routes");
7375

7476
const { PORT } = process.env;

server/middlewares/Auth.js

Lines changed: 0 additions & 29 deletions
This file was deleted.

server/middlewares/Modifier.js

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
class Modifier {
2+
static paramIdIsOrgId(req, res, next) {
3+
res.locals.orgId = req.params.id;
4+
next();
5+
}
6+
7+
static createdByUser(req, res, next) {
8+
req.query.createdBy = req.user.id;
9+
next();
10+
}
11+
}
12+
13+
global.Modifier = Modifier;

server/middlewares/Permission.js

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
const Response = require("../controllers/base/Response");
2+
3+
class Permission {
4+
static async userIsOrgMember(req, res, next) {
5+
try {
6+
let orgId;
7+
if ("orgId" in res.locals) {
8+
orgId = res.locals.orgId;
9+
} else if (req.query && "organisationId" in req.query) {
10+
orgId = req.query.organisationId;
11+
} else if (req.body && "organisationId" in req.body) {
12+
orgId = req.body.organisationId;
13+
}
14+
const userOrgs = await req.user.getOrganisations();
15+
const orgIds = userOrgs.map((org) => org.id);
16+
if (orgIds.indexOf(parseInt(orgId, 10)) < 0) {
17+
throw FliptaskError.permissionDenied();
18+
}
19+
next();
20+
} catch (error) {
21+
console.log(error instanceof Error);
22+
Response.error(res, error);
23+
}
24+
}
25+
}
26+
27+
global.Permission = Permission;

server/middlewares/index.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
require("./Permission");
2+
require("./Modifier");

0 commit comments

Comments
 (0)