diff --git a/package-lock.json b/package-lock.json index 3183772..d385a23 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14,11 +14,15 @@ "@types/express": "^4.17.13", "@types/jsonwebtoken": "^8.5.8", "@types/nodemailer": "^6.4.4", + "@types/redis": "^4.0.11", "argon2": "^0.28.5", "dotenv": "^16.0.0", "express": "^4.17.3", "jsonwebtoken": "^8.5.1", + "nodemailer": "^6.7.2", "prisma": "^3.10.0", + "promisify": "^0.0.3", + "redis": "^4.0.4", "ts-node": "^10.5.0", "typescript": "^4.5.5" }, @@ -131,6 +135,65 @@ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" }, + "node_modules/@node-redis/bloom": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@node-redis/bloom/-/bloom-1.0.1.tgz", + "integrity": "sha512-mXEBvEIgF4tUzdIN89LiYsbi6//EdpFA7L8M+DHCvePXg+bfHWi+ct5VI6nHUFQE5+ohm/9wmgihCH3HSkeKsw==", + "peerDependencies": { + "@node-redis/client": "^1.0.0" + } + }, + "node_modules/@node-redis/client": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@node-redis/client/-/client-1.0.4.tgz", + "integrity": "sha512-IM/NRAqg7MvNC3bIRQipXGrEarunrdgvrbAzsd3ty93LSHi/M+ybQulOERQi8a3M+P5BL8HenwXjiIoKm6ml2g==", + "dependencies": { + "cluster-key-slot": "1.1.0", + "generic-pool": "3.8.2", + "redis-parser": "3.0.0", + "yallist": "4.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@node-redis/client/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "node_modules/@node-redis/graph": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@node-redis/graph/-/graph-1.0.0.tgz", + "integrity": "sha512-mRSo8jEGC0cf+Rm7q8mWMKKKqkn6EAnA9IA2S3JvUv/gaWW/73vil7GLNwion2ihTptAm05I9LkepzfIXUKX5g==", + "peerDependencies": { + "@node-redis/client": "^1.0.0" + } + }, + "node_modules/@node-redis/json": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@node-redis/json/-/json-1.0.2.tgz", + "integrity": "sha512-qVRgn8WfG46QQ08CghSbY4VhHFgaTY71WjpwRBGEuqGPfWwfRcIf3OqSpR7Q/45X+v3xd8mvYjywqh0wqJ8T+g==", + "peerDependencies": { + "@node-redis/client": "^1.0.0" + } + }, + "node_modules/@node-redis/search": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@node-redis/search/-/search-1.0.3.tgz", + "integrity": "sha512-rsrzkGWI84di/uYtEctS/4qLusWt0DESx/psjfB0TFpORDhe7JfC0h8ary+eHulTksumor244bXLRSqQXbFJmw==", + "peerDependencies": { + "@node-redis/client": "^1.0.0" + } + }, + "node_modules/@node-redis/time-series": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@node-redis/time-series/-/time-series-1.0.2.tgz", + "integrity": "sha512-HGQ8YooJ8Mx7l28tD7XjtB3ImLEjlUxG1wC1PAjxu6hPJqjPshUZxAICzDqDjtIbhDTf48WXXUcx8TQJB1XTKA==", + "peerDependencies": { + "@node-redis/client": "^1.0.0" + } + }, "node_modules/@phc/format": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/@phc/format/-/format-1.0.0.tgz", @@ -273,6 +336,15 @@ "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==" }, + "node_modules/@types/redis": { + "version": "4.0.11", + "resolved": "https://registry.npmjs.org/@types/redis/-/redis-4.0.11.tgz", + "integrity": "sha512-bI+gth8La8Wg/QCR1+V1fhrL9+LZUSWfcqpOj2Kc80ZQ4ffbdL173vQd5wovmoV9i071FU9oP2g6etLuEwb6Rg==", + "deprecated": "This is a stub types definition. redis provides its own type definitions, so you do not need this installed.", + "dependencies": { + "redis": "*" + } + }, "node_modules/@types/serve-static": { "version": "1.13.10", "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.10.tgz", @@ -825,6 +897,14 @@ "node": ">=0.10.0" } }, + "node_modules/cluster-key-slot": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/cluster-key-slot/-/cluster-key-slot-1.1.0.tgz", + "integrity": "sha512-2Nii8p3RwAPiFwsnZvukotvow2rIHM+yQ6ZcBXGHdniadkYGZYiGmkHJIbZPIV9nfv7m/U1IPMVVcAhoWFeklw==", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/collection-visit": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", @@ -1476,6 +1556,14 @@ "node": ">=8" } }, + "node_modules/generic-pool": { + "version": "3.8.2", + "resolved": "https://registry.npmjs.org/generic-pool/-/generic-pool-3.8.2.tgz", + "integrity": "sha512-nGToKy6p3PAbYQ7p1UlWl6vSPwfwU6TMSWK7TTu+WUY4ZjyZQGniGGt2oNVvyNSpyZYSB43zMXVLcBm08MTMkg==", + "engines": { + "node": ">= 4" + } + }, "node_modules/get-stream": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", @@ -2452,6 +2540,14 @@ } } }, + "node_modules/nodemailer": { + "version": "6.7.3", + "resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-6.7.3.tgz", + "integrity": "sha512-KUdDsspqx89sD4UUyUKzdlUOper3hRkDVkrKh/89G+d9WKsU5ox51NWS4tB1XR5dPUdR4SP0E3molyEfOvSa3g==", + "engines": { + "node": ">=6.0.0" + } + }, "node_modules/nodemon": { "version": "1.19.4", "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-1.19.4.tgz", @@ -2787,6 +2883,14 @@ "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", "dev": true }, + "node_modules/promisify": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/promisify/-/promisify-0.0.3.tgz", + "integrity": "sha1-dU22HynuZHarVDxFtGTSH171VoY=", + "dependencies": { + "when": "" + } + }, "node_modules/proxy-addr": { "version": "2.0.7", "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", @@ -2894,6 +2998,38 @@ "node": ">=0.10" } }, + "node_modules/redis": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/redis/-/redis-4.0.4.tgz", + "integrity": "sha512-KaM1OAj/nGrSeybmmOWSMY0LXTGT6FVWgUZZrd2MYzXKJ+VGtqVaciGQeNMfZiQX+kDM8Ke4uttb54m2rm6V0A==", + "dependencies": { + "@node-redis/bloom": "1.0.1", + "@node-redis/client": "1.0.4", + "@node-redis/graph": "1.0.0", + "@node-redis/json": "1.0.2", + "@node-redis/search": "1.0.3", + "@node-redis/time-series": "1.0.2" + } + }, + "node_modules/redis-errors": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/redis-errors/-/redis-errors-1.2.0.tgz", + "integrity": "sha1-62LSrbFeTq9GEMBK/hUpOEJQq60=", + "engines": { + "node": ">=4" + } + }, + "node_modules/redis-parser": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/redis-parser/-/redis-parser-3.0.0.tgz", + "integrity": "sha1-tm2CjNyv5rS4pCin3vTGvKwxyLQ=", + "dependencies": { + "redis-errors": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/regex-not": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", @@ -3877,6 +4013,11 @@ "webidl-conversions": "^3.0.0" } }, + "node_modules/when": { + "version": "3.7.8", + "resolved": "https://registry.npmjs.org/when/-/when-3.7.8.tgz", + "integrity": "sha1-xxMLan6gRpPoQs3J56Hyqjmjn4I=" + }, "node_modules/which": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", @@ -4025,6 +4166,54 @@ } } }, + "@node-redis/bloom": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@node-redis/bloom/-/bloom-1.0.1.tgz", + "integrity": "sha512-mXEBvEIgF4tUzdIN89LiYsbi6//EdpFA7L8M+DHCvePXg+bfHWi+ct5VI6nHUFQE5+ohm/9wmgihCH3HSkeKsw==", + "requires": {} + }, + "@node-redis/client": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@node-redis/client/-/client-1.0.4.tgz", + "integrity": "sha512-IM/NRAqg7MvNC3bIRQipXGrEarunrdgvrbAzsd3ty93LSHi/M+ybQulOERQi8a3M+P5BL8HenwXjiIoKm6ml2g==", + "requires": { + "cluster-key-slot": "1.1.0", + "generic-pool": "3.8.2", + "redis-parser": "3.0.0", + "yallist": "4.0.0" + }, + "dependencies": { + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + } + } + }, + "@node-redis/graph": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@node-redis/graph/-/graph-1.0.0.tgz", + "integrity": "sha512-mRSo8jEGC0cf+Rm7q8mWMKKKqkn6EAnA9IA2S3JvUv/gaWW/73vil7GLNwion2ihTptAm05I9LkepzfIXUKX5g==", + "requires": {} + }, + "@node-redis/json": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@node-redis/json/-/json-1.0.2.tgz", + "integrity": "sha512-qVRgn8WfG46QQ08CghSbY4VhHFgaTY71WjpwRBGEuqGPfWwfRcIf3OqSpR7Q/45X+v3xd8mvYjywqh0wqJ8T+g==", + "requires": {} + }, + "@node-redis/search": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@node-redis/search/-/search-1.0.3.tgz", + "integrity": "sha512-rsrzkGWI84di/uYtEctS/4qLusWt0DESx/psjfB0TFpORDhe7JfC0h8ary+eHulTksumor244bXLRSqQXbFJmw==", + "requires": {} + }, + "@node-redis/time-series": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@node-redis/time-series/-/time-series-1.0.2.tgz", + "integrity": "sha512-HGQ8YooJ8Mx7l28tD7XjtB3ImLEjlUxG1wC1PAjxu6hPJqjPshUZxAICzDqDjtIbhDTf48WXXUcx8TQJB1XTKA==", + "requires": {} + }, "@phc/format": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/@phc/format/-/format-1.0.0.tgz", @@ -4150,6 +4339,14 @@ "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==" }, + "@types/redis": { + "version": "4.0.11", + "resolved": "https://registry.npmjs.org/@types/redis/-/redis-4.0.11.tgz", + "integrity": "sha512-bI+gth8La8Wg/QCR1+V1fhrL9+LZUSWfcqpOj2Kc80ZQ4ffbdL173vQd5wovmoV9i071FU9oP2g6etLuEwb6Rg==", + "requires": { + "redis": "*" + } + }, "@types/serve-static": { "version": "1.13.10", "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.10.tgz", @@ -4591,6 +4788,11 @@ "integrity": "sha1-T6kXw+WclKAEzWH47lCdplFocUM=", "dev": true }, + "cluster-key-slot": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/cluster-key-slot/-/cluster-key-slot-1.1.0.tgz", + "integrity": "sha512-2Nii8p3RwAPiFwsnZvukotvow2rIHM+yQ6ZcBXGHdniadkYGZYiGmkHJIbZPIV9nfv7m/U1IPMVVcAhoWFeklw==" + }, "collection-visit": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", @@ -5110,6 +5312,11 @@ } } }, + "generic-pool": { + "version": "3.8.2", + "resolved": "https://registry.npmjs.org/generic-pool/-/generic-pool-3.8.2.tgz", + "integrity": "sha512-nGToKy6p3PAbYQ7p1UlWl6vSPwfwU6TMSWK7TTu+WUY4ZjyZQGniGGt2oNVvyNSpyZYSB43zMXVLcBm08MTMkg==" + }, "get-stream": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", @@ -5883,6 +6090,11 @@ "whatwg-url": "^5.0.0" } }, + "nodemailer": { + "version": "6.7.3", + "resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-6.7.3.tgz", + "integrity": "sha512-KUdDsspqx89sD4UUyUKzdlUOper3hRkDVkrKh/89G+d9WKsU5ox51NWS4tB1XR5dPUdR4SP0E3molyEfOvSa3g==" + }, "nodemon": { "version": "1.19.4", "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-1.19.4.tgz", @@ -6140,6 +6352,14 @@ "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", "dev": true }, + "promisify": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/promisify/-/promisify-0.0.3.tgz", + "integrity": "sha1-dU22HynuZHarVDxFtGTSH171VoY=", + "requires": { + "when": "" + } + }, "proxy-addr": { "version": "2.0.7", "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", @@ -6228,6 +6448,32 @@ "readable-stream": "^2.0.2" } }, + "redis": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/redis/-/redis-4.0.4.tgz", + "integrity": "sha512-KaM1OAj/nGrSeybmmOWSMY0LXTGT6FVWgUZZrd2MYzXKJ+VGtqVaciGQeNMfZiQX+kDM8Ke4uttb54m2rm6V0A==", + "requires": { + "@node-redis/bloom": "1.0.1", + "@node-redis/client": "1.0.4", + "@node-redis/graph": "1.0.0", + "@node-redis/json": "1.0.2", + "@node-redis/search": "1.0.3", + "@node-redis/time-series": "1.0.2" + } + }, + "redis-errors": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/redis-errors/-/redis-errors-1.2.0.tgz", + "integrity": "sha1-62LSrbFeTq9GEMBK/hUpOEJQq60=" + }, + "redis-parser": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/redis-parser/-/redis-parser-3.0.0.tgz", + "integrity": "sha1-tm2CjNyv5rS4pCin3vTGvKwxyLQ=", + "requires": { + "redis-errors": "^1.0.0" + } + }, "regex-not": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", @@ -6992,6 +7238,11 @@ "webidl-conversions": "^3.0.0" } }, + "when": { + "version": "3.7.8", + "resolved": "https://registry.npmjs.org/when/-/when-3.7.8.tgz", + "integrity": "sha1-xxMLan6gRpPoQs3J56Hyqjmjn4I=" + }, "which": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", diff --git a/prisma/schema.prisma b/prisma/schema.prisma index e197618..80808c2 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -16,6 +16,7 @@ model User { passwordHash String passwordSalt String role Role @default(USER) + status Status @default(UNVERIFIED) organization Organization @relation(fields: [organizationId], references: [id]) organizationId Int orders Order[] @@ -64,3 +65,8 @@ enum Role { USER ADMIN } +enum Status { + UNVERIFIED + VERIFIED + ENABLED +} \ No newline at end of file diff --git a/src/controller/auth.controller.ts b/src/controller/auth.controller.ts index e8f3b14..c200ac4 100644 --- a/src/controller/auth.controller.ts +++ b/src/controller/auth.controller.ts @@ -1,9 +1,13 @@ import express from "express"; import { Request, Response } from "express"; import prisma from "../lib/prisma.lib"; -import { Role } from "@prisma/client"; +import { Role, Status } from "@prisma/client"; import { createDefaultError, createDefaultSucces } from "../lib/standardResponse"; import argon2 from "argon2"; +import jwt from "jsonwebtoken"; +import { emailClient } from "../lib/redis.lib"; + +const JWT_SECRET = process.env.jwtsecret || "secret"; interface registerBody { name: string; @@ -22,8 +26,6 @@ const ROLES: readonly string[] = [Role.ADMIN, Role.USER]; export const register = async (req: Request, res: Response) => { const { name, password, role, organization } = req.body || {}; - console.log(name); - if ( !( typeof name === "string" && @@ -36,7 +38,6 @@ export const register = async (req: Request, res: Response) => { createDefaultError("Request body does not match required parameters", { name: "string", password: "string", - role: "USER | ADMIN", organization: "int", }) ); @@ -48,12 +49,19 @@ export const register = async (req: Request, res: Response) => { return res.status(404).json(createDefaultError(`Could not find organization with id ${organization}`, {})); } + if (role ? ("USER" as Role) === Role.ADMIN : Role) { + if (req.auth?.role !== Role.ADMIN) { + return res.status(401).json(createDefaultError(`Unauthorized`, {})); + } + } + const user = await prisma.user.create({ data: { email: name, passwordSalt: "salty", passwordHash: hash, role: role as Role, + status: role === Role.ADMIN ? Status.UNVERIFIED : Status.ENABLED, organization: { connect: { id: organization } || undefined }, }, select: { @@ -63,5 +71,39 @@ export const register = async (req: Request, res: Response) => { }, }); + (await emailClient).set(name, "salty"); + res.status(201).json(createDefaultSucces("User created succesfully", user)); }; + +export const authenthicate = async (req: Request, res: Response) => { + const { name, password } = req.body || {}; + + if (!(typeof name === "string" && typeof password === "string")) { + return res.status(400).json( + createDefaultError("Request body does not match required parameters", { + name: "string", + password: "string", + }) + ); + } + + const hash = await argon2.hash("salty" + password + "salty"); + + const user = await prisma.user.findUnique({ where: { email: name } }); + + if (!user) { + return res.status(403).json(createDefaultError("Username or Password wrong", {})); + } + + if (user.passwordHash !== hash) { + return res.status(403).json(createDefaultError("Username or Password wrong", {})); + } + + const userjwt: authJwt = { + id: user.id, + role: user.role, + }; + + req.headers.authorization = jwt.sign(userjwt, JWT_SECRET); +}; diff --git a/src/controller/testcontroller.controller.ts b/src/controller/testcontroller.controller.ts deleted file mode 100644 index e69de29..0000000 diff --git a/src/lib/redis.lib.ts b/src/lib/redis.lib.ts new file mode 100644 index 0000000..45901d7 --- /dev/null +++ b/src/lib/redis.lib.ts @@ -0,0 +1,17 @@ +import redis, { createClient } from "redis"; +import { promisify } from "util"; + +function createAsyncClient(client: redis.RedisClientType) { + return { + get: promisify(client.get).bind(client), + set: promisify(client.set).bind(client), + }; +} + +/*----E-mail verify----*/ + +const email: redis.RedisClientType = createClient({ + url: "redis://localhost:6379", +}); + +export const emailClient = createAsyncClient(email); diff --git a/src/middleware/auth.middle.ts b/src/middleware/auth.middle.ts index 6b871b7..d3ca6b5 100644 --- a/src/middleware/auth.middle.ts +++ b/src/middleware/auth.middle.ts @@ -1,8 +1,11 @@ +/// + import { NextFunction, Request, Response } from "express"; import { createDefaultError } from "../lib/standardResponse"; import jwt, { JwtPayload } from "jsonwebtoken"; import { authJwt } from "../controller/auth.controller"; import prisma from "../lib/prisma.lib"; +import { emailClient } from "../lib/redis.lib"; const verifyAuthorizationFormat = (authorization: string) => /^Bearer .+$/.test(authorization); @@ -10,6 +13,46 @@ const getBearerToken = (authorization: string) => authorization.slice(7); const JWT_SECRET = process.env.jwtsecret || "secret"; +export const getAuthenthication = async (req: Request, res: Response, next: NextFunction) => { + const { authorization } = req.headers; + + if (!authorization) { + next(); + return; + } + + if (!verifyAuthorizationFormat(authorization)) { + return res.status(400).json(createDefaultError("Malformed Bearer Token", { format: "Bearer " })); + } + + let payload_: string | JwtPayload; + + try { + payload_ = jwt.verify(getBearerToken(authorization), JWT_SECRET); + } catch (e) { + return res.status(403).json(createDefaultError("The Token could not be verified, it might be expiered", null)); + } + + const payload = payload_ as authJwt; + + const { id } = payload; + + const user = await prisma.user.findUnique({ + where: { id }, + select: { + role: true, + }, + }); + + req.auth = { + isAuthenthicated: true, + id, + role: user?.role || "user", + }; + + next(); +}; + export const requireAuthentication = async (req: Request, res: Response, next: NextFunction) => { const { authorization } = req.headers; @@ -43,7 +86,7 @@ export const requireAuthentication = async (req: Request, res: Response, next: N req.auth = { isAuthenthicated: true, id, - role: user?.role || "user", + role: user?.role || "USER", }; next(); diff --git a/src/middleware/testmiddleware.middle.ts b/src/middleware/testmiddleware.middle.ts deleted file mode 100644 index e69de29..0000000 diff --git a/src/routes/auth.route.ts b/src/routes/auth.route.ts index 2aed2db..efa7ad2 100644 --- a/src/routes/auth.route.ts +++ b/src/routes/auth.route.ts @@ -1,8 +1,9 @@ import { Router } from "express"; import { register } from "../controller/auth.controller"; +import { getAuthenthication } from "../middleware/auth.middle"; const router = Router(); -router.post("/register", register); +router.post("/register", getAuthenthication, register); export default router; diff --git a/src/routes/testrouter.route.ts b/src/routes/testrouter.route.ts deleted file mode 100644 index e69de29..0000000