Skip to content

Commit 2c9f7a3

Browse files
committed
updated
1 parent 54c840e commit 2c9f7a3

File tree

6 files changed

+30
-130
lines changed

6 files changed

+30
-130
lines changed
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
-- CreateEnum
2+
CREATE TYPE "RoleEnumType" AS ENUM ('user', 'admin');
3+
4+
-- CreateTable
5+
CREATE TABLE "users" (
6+
"id" TEXT NOT NULL,
7+
"name" VARCHAR(255) NOT NULL,
8+
"email" TEXT NOT NULL,
9+
"photo" TEXT DEFAULT E'default.png',
10+
"verified" BOOLEAN DEFAULT false,
11+
"password" TEXT NOT NULL,
12+
"role" "RoleEnumType" DEFAULT E'user',
13+
"verificationCode" TEXT,
14+
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
15+
"updatedAt" TIMESTAMP(3) NOT NULL,
16+
17+
CONSTRAINT "users_pkey" PRIMARY KEY ("id")
18+
);
19+
20+
-- CreateIndex
21+
CREATE UNIQUE INDEX "users_email_key" ON "users"("email");
22+
23+
-- CreateIndex
24+
CREATE UNIQUE INDEX "users_verificationCode_key" ON "users"("verificationCode");
25+
26+
-- CreateIndex
27+
CREATE INDEX "users_email_verificationCode_idx" ON "users"("email", "verificationCode");
28+
29+
-- CreateIndex
30+
CREATE UNIQUE INDEX "users_email_verificationCode_key" ON "users"("email", "verificationCode");

src/controllers/auth.controller.ts

Lines changed: 0 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import crypto from 'crypto';
22
import { CookieOptions, NextFunction, Request, Response } from 'express';
3-
import crypto from 'crypto';
43
import bcrypt from 'bcryptjs';
54
import {
65
LoginUserInput,
@@ -9,24 +8,16 @@ import {
98
} from '../schemas/user.schema';
109
import {
1110
createUser,
12-
<<<<<<< HEAD
13-
findUser,
14-
findUserByEmail,
15-
=======
1611
findUniqueUser,
1712
findUser,
18-
>>>>>>> jwt_auth_verify_email
1913
signTokens,
2014
updateUser,
2115
} from '../services/user.service';
2216
import { Prisma } from '@prisma/client';
2317
import config from 'config';
2418
import AppError from '../utils/appError';
25-
<<<<<<< HEAD
26-
=======
2719
import redisClient from '../utils/connectRedis';
2820
import { signJwt, verifyJwt } from '../utils/jwt';
29-
>>>>>>> jwt_auth_verify_email
3021
import Email from '../utils/email';
3122

3223
const cookiesOptions: CookieOptions = {
@@ -73,33 +64,6 @@ export const registerUserHandler = async (
7364
verificationCode,
7465
});
7566

76-
<<<<<<< HEAD
77-
const hashedCode = crypto.randomBytes(32).toString('hex');
78-
const verificationCode = crypto
79-
.createHash('sha256')
80-
.update(hashedCode)
81-
.digest('hex');
82-
83-
// Send Verification Email
84-
const redirectUrl = `${config.get<string>(
85-
'origin'
86-
)}/verifyemail/${hashedCode}`;
87-
88-
try {
89-
await new Email(user, redirectUrl).sendVerificationCode();
90-
91-
await updateUser({ email: user.email }, { verificationCode });
92-
93-
res.status(201).json({
94-
status: 'success',
95-
message: 'Verification token has been sent to your email',
96-
});
97-
} catch (error) {
98-
await updateUser({ email: user.email }, { verificationCode: null });
99-
return res.status(500).json({
100-
status: 'error',
101-
message: 'There was a problem sending email, please try again',
102-
=======
10367
const redirectUrl = `${config.get<string>(
10468
'origin'
10569
)}/verifyemail/${verifyCode}`;
@@ -117,7 +81,6 @@ export const registerUserHandler = async (
11781
return res.status(500).json({
11882
status: 'error',
11983
message: 'There was an error sending email, please try again',
120-
>>>>>>> jwt_auth_verify_email
12184
});
12285
}
12386
} catch (err: any) {
@@ -182,8 +145,6 @@ export const loginUserHandler = async (
182145
}
183146
};
184147

185-
<<<<<<< HEAD
186-
=======
187148
export const refreshAccessTokenHandler = async (
188149
req: Request,
189150
res: Response,
@@ -267,7 +228,6 @@ export const logoutUserHandler = async (
267228
}
268229
};
269230

270-
>>>>>>> jwt_auth_verify_email
271231
export const verifyEmailHandler = async (
272232
req: Request<VerifyEmailInput>,
273233
res: Response,
@@ -279,12 +239,6 @@ export const verifyEmailHandler = async (
279239
.update(req.params.verificationCode)
280240
.digest('hex');
281241

282-
<<<<<<< HEAD
283-
const user = await updateUser({ verificationCode }, { verified: true });
284-
285-
if (!user) {
286-
return next(new AppError(400, 'Could not verify email'));
287-
=======
288242
const user = await updateUser(
289243
{ verificationCode },
290244
{ verified: true, verificationCode: null },
@@ -293,23 +247,19 @@ export const verifyEmailHandler = async (
293247

294248
if (!user) {
295249
return next(new AppError(401, 'Could not verify email'));
296-
>>>>>>> jwt_auth_verify_email
297250
}
298251

299252
res.status(200).json({
300253
status: 'success',
301254
message: 'Email verified successfully',
302255
});
303256
} catch (err: any) {
304-
<<<<<<< HEAD
305-
=======
306257
if (err.code === 'P2025') {
307258
return res.status(403).json({
308259
status: 'fail',
309260
message: `Verification code is invalid or user doesn't exist`,
310261
});
311262
}
312-
>>>>>>> jwt_auth_verify_email
313263
next(err);
314264
}
315265
};

src/routes/auth.routes.ts

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -21,20 +21,14 @@ router.post('/register', validate(registerUserSchema), registerUserHandler);
2121

2222
router.post('/login', validate(loginUserSchema), loginUserHandler);
2323

24-
<<<<<<< HEAD
25-
=======
2624
router.get('/refresh', refreshAccessTokenHandler);
2725

28-
>>>>>>> jwt_auth_verify_email
2926
router.get(
3027
'/verifyemail/:verificationCode',
3128
validate(verifyEmailSchema),
3229
verifyEmailHandler
3330
);
3431

35-
<<<<<<< HEAD
36-
=======
3732
router.get('/logout', deserializeUser, requireUser, logoutUserHandler);
3833

39-
>>>>>>> jwt_auth_verify_email
4034
export default router;

src/services/user.service.ts

Lines changed: 0 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import { PrismaClient, Prisma, User } from '@prisma/client';
2-
import { omit } from 'lodash';
32
import config from 'config';
43
import redisClient from '../utils/connectRedis';
54
import { signJwt } from '../utils/jwt';
@@ -9,31 +8,9 @@ export const excludedFields = ['password', 'verified', 'verificationCode'];
98
const prisma = new PrismaClient();
109

1110
export const createUser = async (input: Prisma.UserCreateInput) => {
12-
<<<<<<< HEAD
13-
return await prisma.user.create({
14-
data: input,
15-
});
16-
};
17-
18-
export const updateUser = async (
19-
where: Prisma.UserWhereUniqueInput,
20-
data: Prisma.UserUpdateInput,
21-
select?: Prisma.UserSelect
22-
) => {
23-
return await prisma.user.update({
24-
where,
25-
select,
26-
data,
27-
});
28-
};
29-
30-
export const findUser = async (where?: Prisma.UserWhereInput) => {
31-
return await prisma.user.findFirst({ where });
32-
=======
3311
return (await prisma.user.create({
3412
data: input,
3513
})) as User;
36-
>>>>>>> jwt_auth_verify_email
3714
};
3815

3916
export const findUser = async (

src/utils/email.ts

Lines changed: 0 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -12,31 +12,17 @@ const smtp = config.get<{
1212
}>('smtp');
1313

1414
export default class Email {
15-
<<<<<<< HEAD
16-
firstName: string;
17-
to: string;
18-
from: string;
19-
constructor(public user: Prisma.UserCreateInput, public url: string) {
20-
this.firstName = user.name.split(' ')[0];
21-
this.to = user.email;
22-
this.from = `Codevo ${config.get<string>('emailFrom')}`;
23-
=======
2415
#firstName: string;
2516
#to: string;
2617
#from: string;
2718
constructor(private user: Prisma.UserCreateInput, private url: string) {
2819
this.#firstName = user.name.split(' ')[0];
2920
this.#to = user.email;
3021
this.#from = `Codevo <admin@admin.com>`;
31-
>>>>>>> jwt_auth_verify_email
3222
}
3323

3424
private newTransport() {
3525
// if (process.env.NODE_ENV === 'production') {
36-
<<<<<<< HEAD
37-
// console.log('Hello')
38-
=======
39-
>>>>>>> jwt_auth_verify_email
4026
// }
4127

4228
return nodemailer.createTransport({
@@ -51,23 +37,14 @@ export default class Email {
5137
private async send(template: string, subject: string) {
5238
// Generate HTML template based on the template string
5339
const html = pug.renderFile(`${__dirname}/../views/${template}.pug`, {
54-
<<<<<<< HEAD
55-
firstName: this.firstName,
56-
=======
5740
firstName: this.#firstName,
58-
>>>>>>> jwt_auth_verify_email
5941
subject,
6042
url: this.url,
6143
});
6244
// Create mailOptions
6345
const mailOptions = {
64-
<<<<<<< HEAD
65-
from: this.from,
66-
to: this.to,
67-
=======
6846
from: this.#from,
6947
to: this.#to,
70-
>>>>>>> jwt_auth_verify_email
7148
subject,
7249
text: convert(html),
7350
html,

yarn.lock

Lines changed: 0 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -16,17 +16,6 @@
1616
version "7.17.10"
1717
resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.17.10.tgz#d35d7b4467e439fcf06d195f8100e0fea7fc82c4"
1818
integrity sha512-9O26jG0mBYfGkUYCYZRnBwbVLd1UZOICEr2Em6InB6jVfsAv1GKgwXHmrSg+WFWDmeKTA6vyTZiN8tCSM5Oo3A==
19-
<<<<<<< HEAD
20-
dependencies:
21-
"@babel/helper-validator-identifier" "^7.16.7"
22-
to-fast-properties "^2.0.0"
23-
24-
"@prisma/client@^3.13.0":
25-
version "3.13.0"
26-
resolved "https://registry.yarnpkg.com/@prisma/client/-/client-3.13.0.tgz#84511ebdf6ba75f77ca08495b9f73f22c4255654"
27-
integrity sha512-lnEA2tTyVbO5mS1ehmHJQKBDiKB8shaR6s3azwj3Azfi5XHIfnqmkolLCvUeFYnkDCNVzGXJpUgKwQt/UOOYVQ==
28-
=======
29-
>>>>>>> jwt_auth_verify_email
3019
dependencies:
3120
"@babel/helper-validator-identifier" "^7.16.7"
3221
to-fast-properties "^2.0.0"
@@ -115,16 +104,13 @@
115104
dependencies:
116105
"@types/node" "*"
117106

118-
<<<<<<< HEAD
119-
=======
120107
"@types/cookie-parser@^1.4.3":
121108
version "1.4.3"
122109
resolved "https://registry.yarnpkg.com/@types/cookie-parser/-/cookie-parser-1.4.3.tgz#3a01df117c5705cf89a84c876b50c5a1fd427a21"
123110
integrity sha512-CqSKwFwefj4PzZ5n/iwad/bow2hTCh0FlNAeWLtQM3JA/NX/iYagIpWG2cf1bQKQ2c9gU2log5VUCrn7LDOs0w==
124111
dependencies:
125112
"@types/express" "*"
126113

127-
>>>>>>> jwt_auth_verify_email
128114
"@types/cors@^2.8.12":
129115
version "2.8.12"
130116
resolved "https://registry.yarnpkg.com/@types/cors/-/cors-2.8.12.tgz#6b2c510a7ad7039e98e7b8d3d6598f4359e5c080"
@@ -461,11 +447,7 @@ deepmerge@^4.2.2:
461447
resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955"
462448
integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==
463449

464-
<<<<<<< HEAD
465-
depd@2.0.0:
466-
=======
467450
depd@2.0.0, depd@~2.0.0:
468-
>>>>>>> jwt_auth_verify_email
469451
version "2.0.0"
470452
resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df"
471453
integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==
@@ -970,8 +952,6 @@ moo@^0.5.0, moo@^0.5.1:
970952
resolved "https://registry.yarnpkg.com/moo/-/moo-0.5.1.tgz#7aae7f384b9b09f620b6abf6f74ebbcd1b65dbc4"
971953
integrity sha512-I1mnb5xn4fO80BH9BLcF0yLypy2UKl+Cb01Fu0hJRkJjlCRtxZMWkTdAtDd5ZqCOxtCkhmRwyI57vWT+1iZ67w==
972954

973-
<<<<<<< HEAD
974-
=======
975955
morgan@^1.10.0:
976956
version "1.10.0"
977957
resolved "https://registry.yarnpkg.com/morgan/-/morgan-1.10.0.tgz#091778abc1fc47cd3509824653dae1faab6b17d7"
@@ -983,7 +963,6 @@ morgan@^1.10.0:
983963
on-finished "~2.3.0"
984964
on-headers "~1.0.2"
985965

986-
>>>>>>> jwt_auth_verify_email
987966
ms@2.0.0:
988967
version "2.0.0"
989968
resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
@@ -1102,13 +1081,6 @@ promise@^7.0.1:
11021081
dependencies:
11031082
asap "~2.0.3"
11041083

1105-
promise@^7.0.1:
1106-
version "7.3.1"
1107-
resolved "https://registry.yarnpkg.com/promise/-/promise-7.3.1.tgz#064b72602b18f90f29192b8b1bc418ffd1ebd3bf"
1108-
integrity sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==
1109-
dependencies:
1110-
asap "~2.0.3"
1111-
11121084
proxy-addr@~2.0.7:
11131085
version "2.0.7"
11141086
resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025"

0 commit comments

Comments
 (0)