From bff9ba25417d48b242af34b4ded77b3392f72728 Mon Sep 17 00:00:00 2001
From: DewanaGustavus <76590469+DewanaGustavus@users.noreply.github.com>
Date: Wed, 15 Nov 2023 00:00:14 +0700
Subject: [PATCH] feat: CORS and endpoint naming fix

---
 package-lock.json                | 31 +++++++++++++++++++++++++++++++
 package.json                     |  2 ++
 src/handler/user/user.router.ts  | 14 +++++++-------
 src/handler/user/user.service.ts |  5 +++--
 src/index.ts                     | 18 +++++++-----------
 5 files changed, 50 insertions(+), 20 deletions(-)

diff --git a/package-lock.json b/package-lock.json
index 0f188a0..de6b3c1 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -11,9 +11,11 @@
       "dependencies": {
         "@prisma/client": "^5.5.2",
         "@types/express": "^4.17.20",
+        "cors": "^2.8.5",
         "express": "^4.18.2"
       },
       "devDependencies": {
+        "@types/cors": "^2.8.16",
         "@types/node": "^20.8.10",
         "nodemon": "^3.0.1",
         "prisma": "^5.5.2",
@@ -131,6 +133,15 @@
         "@types/node": "*"
       }
     },
+    "node_modules/@types/cors": {
+      "version": "2.8.16",
+      "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.16.tgz",
+      "integrity": "sha512-Trx5or1Nyg1Fq138PCuWqoApzvoSLWzZ25ORBiHMbbUT42g578lH1GT4TwYDbiUOLFuDsCkfLneT2105fsFWGg==",
+      "dev": true,
+      "dependencies": {
+        "@types/node": "*"
+      }
+    },
     "node_modules/@types/express": {
       "version": "4.17.21",
       "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.21.tgz",
@@ -409,6 +420,18 @@
       "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
       "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ=="
     },
+    "node_modules/cors": {
+      "version": "2.8.5",
+      "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz",
+      "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==",
+      "dependencies": {
+        "object-assign": "^4",
+        "vary": "^1"
+      },
+      "engines": {
+        "node": ">= 0.10"
+      }
+    },
     "node_modules/create-require": {
       "version": "1.1.1",
       "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz",
@@ -934,6 +957,14 @@
         "node": ">=0.10.0"
       }
     },
+    "node_modules/object-assign": {
+      "version": "4.1.1",
+      "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
+      "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
     "node_modules/object-inspect": {
       "version": "1.13.1",
       "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz",
diff --git a/package.json b/package.json
index 9cefdbf..0034c3d 100644
--- a/package.json
+++ b/package.json
@@ -23,9 +23,11 @@
   "dependencies": {
     "@prisma/client": "^5.5.2",
     "@types/express": "^4.17.20",
+    "cors": "^2.8.5",
     "express": "^4.18.2"
   },
   "devDependencies": {
+    "@types/cors": "^2.8.16",
     "@types/node": "^20.8.10",
     "nodemon": "^3.0.1",
     "prisma": "^5.5.2",
diff --git a/src/handler/user/user.router.ts b/src/handler/user/user.router.ts
index f452f3f..06eb191 100644
--- a/src/handler/user/user.router.ts
+++ b/src/handler/user/user.router.ts
@@ -6,18 +6,18 @@ import * as UserServices from './user.service'
 
 export const UserRouter = express.Router()
 
-UserRouter.post('/checkUsername', async (request: Request, response: Response) => {
+UserRouter.post('/check-username', async (request: Request, response: Response) => {
     try {
-        const responseString= await UserServices.checkUsername(request.body.username);
+        const responseString = await UserServices.checkUsername(request.body.username);
         return response.status(200).json(responseString);
     } catch (error: any) {
         return response.status(500).json(error.message);
     }
 })
 
-UserRouter.post('/checkEmail', async (request: Request, response: Response) => {
+UserRouter.post('/check-email', async (request: Request, response: Response) => {
     try {
-        const responseString= await UserServices.checkEmail(request.body.email);
+        const responseString = await UserServices.checkEmail(request.body.email);
         return response.status(200).json(responseString);
     } catch (error: any) {
         return response.status(500).json(error.message);
@@ -34,16 +34,16 @@ UserRouter.post('/register', async (request: Request, response: Response) => {
             password : request.body.password,
             saldo : 0,
         };
-        const responseString= await UserServices.register(user);
+        const responseString = await UserServices.register(user);
         return response.status(200).json(responseString);
     } catch (error: any) {
         return response.status(500).json(error.message);
     }
 })
 
-UserRouter.post('/validateLogin', async (request: Request, response: Response) => {
+UserRouter.post('/login', async (request: Request, response: Response) => {
     try {
-        const responseString= await UserServices.validateLogin(request.body.username, request.body.password);
+        const responseString = await UserServices.login(request.body.username, request.body.password);
         return response.status(200).json(responseString);
     } catch (error: any) {
         return response.status(500).json(error.message);
diff --git a/src/handler/user/user.service.ts b/src/handler/user/user.service.ts
index 0907573..d76009c 100644
--- a/src/handler/user/user.service.ts
+++ b/src/handler/user/user.service.ts
@@ -24,7 +24,7 @@ export async function checkEmail(email : string) {
 }
 
 export async function register(user : User) {
-    let responseString = "success";
+    let responseString = "";
     try {
         const result : User = await db.user.create({
             data : {
@@ -34,6 +34,7 @@ export async function register(user : User) {
                 password : user.password,
             }
         })
+        responseString = "success";
     }catch (err) {
         const usernameAvailable = await checkUsername(user.username);
         const emailAvailable = await checkEmail(user.email);
@@ -48,7 +49,7 @@ export async function register(user : User) {
     return responseString;
 }
 
-export async function validateLogin(username : string, password : string) {
+export async function login(username : string, password : string) {
     const result : queryResult = await db.user.findFirst({
         where: {
             username : username
diff --git a/src/index.ts b/src/index.ts
index b8d1840..bc78ca9 100644
--- a/src/index.ts
+++ b/src/index.ts
@@ -1,25 +1,21 @@
 import express, {Express, Request, Response} from "express";
 import { HistoryRouter } from "./handler/history/history.router";
 import { UserRouter } from "./handler/user/user.router";
+import cors from "cors";
 
 const app = express();
 const port = 5000;
 
 app.use(express.json());
+app.use(cors());
+// logger
+app.use((req, res, next) => {
+    console.log(`${req.method} ${req.url}`); 
+    next(); 
+});
 
 app.use('/history', HistoryRouter);
 app.use('/user', UserRouter);
-app.get("/", (req, res) => {
-    res.send("test get home");
-})
-
-app.get("/test", (req, res) => {
-    res.send("test get");
-})
-
-app.post("/test", (req, res) => {
-    res.send("ganti dong");
-})
 
 app.listen(port, () =>{
     console.log(`listening on port ${port}`);
-- 
GitLab