Skip to content

Commit 0ddaa0a

Browse files
hyerichungHa-Young
authored andcommitted
[ADD] authenticate middleware, interviewer router, [REFACTOR] overall folder structures
1 parent f871724 commit 0ddaa0a

25 files changed

+296
-172
lines changed

app.js

+2-28
Original file line numberDiff line numberDiff line change
@@ -1,34 +1,8 @@
1-
require("dotenv").config();
2-
3-
require("./loader/db");
4-
5-
const createError = require("http-errors");
61
const express = require("express");
7-
const cookieParser = require("cookie-parser");
8-
const logger = require("morgan");
9-
const cors = require("cors");
10-
11-
const indexRouter = require("./routes/index");
2+
const loaders = require("./src/loaders");
123

134
const app = express();
145

15-
app.use(logger("dev"));
16-
app.use(express.json());
17-
app.use(express.urlencoded({ extended: false }));
18-
app.use(cookieParser());
19-
app.use(cors());
20-
21-
app.use("/", indexRouter);
22-
23-
app.use(function (req, res, next) {
24-
next(createError(404));
25-
});
26-
27-
app.use(function (err, req, res, next) {
28-
res.locals.message = err.message;
29-
res.locals.error = req.app.get("env") === "development" ? err : {};
30-
31-
res.status(err.status || 500).json({ result: "error", "errMessage": err.message });
32-
});
6+
loaders({ app });
337

348
module.exports = app;

bin/www bin/www.js

+14-30
Original file line numberDiff line numberDiff line change
@@ -6,51 +6,35 @@
66
const app = require("../app");
77
const debug = require("debug")("memoterview-backend:server");
88
const http = require("http");
9+
const { port } = require("../src/config");
910

1011
/**
11-
* Get port from environment and store in Express.
12-
*/
12+
* Get port from environment and store in Express.
13+
*/
1314

14-
const port = normalizePort(process.env.PORT || "5000");
1515
app.set("port", port);
1616

1717
/**
18-
* Create HTTP server.
19-
*/
18+
* Create HTTP server.
19+
*/
2020

2121
const server = http.createServer(app);
2222

2323
/**
24-
* Listen on provided port, on all network interfaces.
25-
*/
24+
* Listen on provided port, on all network interfaces.
25+
*/
2626

2727
server.listen(port, () => console.log(`server is listening ${port}`));
2828
server.on("error", onError);
2929
server.on("listening", onListening);
3030

3131
/**
32-
* Normalize a port into a number, string, or false.
33-
*/
34-
35-
function normalizePort(val) {
36-
const port = parseInt(val, 10);
37-
38-
if (isNaN(port)) {
39-
// named pipe
40-
return val;
41-
}
42-
43-
if (port >= 0) {
44-
// port number
45-
return port;
46-
}
47-
48-
return false;
49-
}
32+
* Normalize a port into a number, string, or false.
33+
*/
5034

5135
/**
52-
* Event listener for HTTP server "error" event.
53-
*/
36+
* Event listener for HTTP server "error" event.
37+
*/
5438

5539
function onError(error) {
5640
if (error.syscall !== "listen") {
@@ -67,16 +51,16 @@ function onError(error) {
6751
console.error(bind + " requires elevated privileges");
6852
process.exit(1);
6953
case "EADDRINUSE":
70-
console.error(bind + " is already in use");
7154
process.exit(1);
7255
default:
7356
throw error;
7457
}
7558
}
7659

60+
7761
/**
78-
* Event listener for HTTP server "listening" event.
79-
*/
62+
* Event listener for HTTP server "listening" event.
63+
*/
8064

8165
function onListening() {
8266
const addr = server.address();

controllers/authController.js

-63
This file was deleted.

loader/db.js

-21
This file was deleted.

routes/auth/login.js

-8
This file was deleted.

routes/index.js

-7
This file was deleted.

src/config/index.js

+29
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
require("dotenv").config();
2+
3+
// Set the NODE_ENV to "development" by default
4+
process.env.NODE_ENV = process.env.NODE_ENV || "development";
5+
6+
module.exports = {
7+
port: normalizePort(process.env.PORT || "5000"),
8+
databaseURL: process.env.MONGO_DB_URL,
9+
accessToken: {
10+
accessTokenSecret: process.env.ACCESS_TOKEN_SECRET,
11+
accessTokenExpiresIn: process.env.ACCESS_TOKEN_EXPIRES_IN,
12+
},
13+
};
14+
15+
function normalizePort(val) {
16+
const port = parseInt(val, 10);
17+
18+
if (isNaN(port)) {
19+
// named pipe
20+
return val;
21+
}
22+
23+
if (port >= 0) {
24+
// port number
25+
return port;
26+
}
27+
28+
return false;
29+
}

src/loaders/express.js

+24
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
const cors = require("cors");
2+
const cookieParser = require("cookie-parser");
3+
const createError = require("http-errors");
4+
const express = require("express");
5+
6+
module.exports = function ({ app, routerLoader }) {
7+
app.use(express.json());
8+
app.use(express.urlencoded({ extended: false }));
9+
app.use(cookieParser());
10+
app.use(cors());
11+
12+
routerLoader({ app });
13+
14+
app.use(function (req, res, next) {
15+
next(createError(404));
16+
});
17+
18+
app.use(function (err, req, res, next) {
19+
res.locals.message = err.message;
20+
res.locals.error = req.app.get("env") === "development" ? err : {};
21+
22+
res.status(err.status || 500).json({ result: "error", "errMessage": err.message });
23+
});
24+
};

src/loaders/index.js

+13
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
const morgan = require("morgan");
2+
3+
const mongooseLoader = require("./mongoose");
4+
const expressLoader = require("./express");
5+
const routerLoader = require("./router");
6+
7+
module.exports = function ({ app }) {
8+
mongooseLoader();
9+
10+
app.use(morgan("dev"));
11+
12+
expressLoader({ app, routerLoader });
13+
};

src/loaders/mongoose.js

+34
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
const mongoose = require("mongoose");
2+
const config = require("../config");
3+
4+
module.exports = async function () {
5+
mongoose.Promise = global.Promise;
6+
7+
const dbConnection = await mongoose.connect(config.databaseURL, {
8+
useNewUrlParser: true,
9+
useFindAndModify: false,
10+
useCreateIndex: true,
11+
useUnifiedTopology: true,
12+
dbName: "memoterview",
13+
});
14+
15+
const dbConnectionState = mongoose.connection.readyState;
16+
17+
switch (dbConnectionState) {
18+
case 0:
19+
console.log("mongoDB disconnected..");
20+
break;
21+
case 1:
22+
console.log("mongoDB connected..");
23+
break;
24+
case 2:
25+
console.log("mongoDB connecting..");
26+
break;
27+
case 3:
28+
console.log("mongoDB disconnecting..");
29+
break;
30+
default: return null;
31+
}
32+
33+
return dbConnection.connection.db;
34+
};

src/loaders/router.js

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
const routes = require("../routes");
2+
3+
module.exports = function ({ app }) {
4+
routes(app);
5+
};
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.

src/routes/api/index.js

+9
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
const express = require("express");
2+
const router = express.Router();
3+
const interviewerRouter = require("./interviewer");
4+
const authentication = require("../middlewares/authenticate");
5+
6+
router.use(authentication);
7+
router.use("/api/interviewer", interviewerRouter);
8+
9+
module.exports = router;

src/routes/api/interviewer.js

+13
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
const express = require("express");
2+
const router = express.Router();
3+
4+
router.get("/:id/my_projects", async (req, res, next) => {
5+
try {
6+
// console below is for checking authenticate router to proceed next task on 17th Apr
7+
console.log(req.user);
8+
} catch (error) {
9+
next(error);
10+
}
11+
});
12+
13+
module.exports = router;

0 commit comments

Comments
 (0)