Skip to content

Commit 3ab1b9a

Browse files
committed
fix: fixed minor errors
1 parent 95e9ff9 commit 3ab1b9a

35 files changed

Lines changed: 6094 additions & 2393 deletions

backend/src/Services/authToken.ts

Lines changed: 21 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,28 @@
1-
import { appDataSouce } from "../data-source";
2-
import { RefreshTokenEntity } from "../entities/refreshToken";
3-
import { User } from "../entities/User";
4-
import { generateRefreshToken,hashRefreshToken } from "./refreshToken";
1+
import { appDataSouce } from '../data-source';
2+
import { RefreshTokenEntity } from '../entities/refreshToken';
3+
import { User } from '../entities/User';
4+
import { generateRefreshToken, hashRefreshToken } from './refreshToken';
55
const REFRESH_TOKEN_DAYS = 30;
66

7-
export const createRefreshTokenSession = async(user:User)=>{
8-
const refreshToken = generateRefreshToken();
9-
console.log("Raw refresh token generated");
7+
export const createRefreshTokenSession = async (user: User) => {
8+
const refreshToken = generateRefreshToken();
9+
console.log('Raw refresh token generated');
1010

11-
const tokenHash = hashRefreshToken(refreshToken);
12-
console.log("Token hashed");
11+
const tokenHash = hashRefreshToken(refreshToken);
12+
console.log('Token hashed');
1313

14-
14+
const expiresAt = new Date();
1515

16-
const expiresAt = new Date();
16+
expiresAt.setDate(expiresAt.getDate() + REFRESH_TOKEN_DAYS);
1717

18-
expiresAt.setDate(expiresAt.getDate()+REFRESH_TOKEN_DAYS);
18+
const repo = appDataSouce.getRepository(RefreshTokenEntity);
19+
console.log('Got refresh token repository');
1920

20-
const repo = appDataSouce.getRepository(RefreshTokenEntity)
21-
console.log("Got refresh token repository");
22-
23-
await repo.save({
24-
tokenHash,
25-
user,
26-
expiresAt
27-
})
28-
console.log("Refresh token saved");
29-
return refreshToken
30-
}
21+
await repo.save({
22+
tokenHash,
23+
user,
24+
expiresAt,
25+
});
26+
console.log('Refresh token saved');
27+
return refreshToken;
28+
};
Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
1-
import jwt from 'jsonwebtoken'
1+
import jwt from 'jsonwebtoken';
22

3-
4-
export const signAccessToken = (payload:{userId:string})=>{
5-
return jwt.sign(payload,process.env.ACCESS_TOKEN_SECRET!,{expiresIn:"15m"})
6-
}
7-
export const verifyAccessToken = (token:string)=>{
8-
return jwt.verify(token,process.env.ACCESS_TOKEN_SECRET!)
9-
}
3+
export const signAccessToken = (payload: { userId: string }) => {
4+
return jwt.sign(payload, process.env.ACCESS_TOKEN_SECRET!, {
5+
expiresIn: '15m',
6+
});
7+
};
8+
export const verifyAccessToken = (token: string) => {
9+
return jwt.verify(token, process.env.ACCESS_TOKEN_SECRET!);
10+
};
Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
import crypto from 'crypto'
2-
export const generateRefreshToken = ():string=>{
3-
return crypto.randomBytes(64).toString()
4-
}
5-
export const hashRefreshToken = (token:string)=>{
6-
return crypto.createHash("sha256").update(token).digest("hex")
7-
}
1+
import crypto from 'crypto';
2+
export const generateRefreshToken = (): string => {
3+
return crypto.randomBytes(64).toString();
4+
};
5+
export const hashRefreshToken = (token: string) => {
6+
return crypto.createHash('sha256').update(token).digest('hex');
7+
};
Lines changed: 14 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,18 @@
1-
import Twilio from 'twilio'
1+
import Twilio from 'twilio';
22
import { logger } from '../utils/logger';
33
const accountSid = process.env.TWILIO_ACCOUNT_SID!;
44
const authToken = process.env.TWILIO_AUTH_TOKEN!;
55
const fromNumber = process.env.TWILIO_FROM_NUMBER!;
6-
const client = Twilio(accountSid,authToken)
7-
export const sendOtpSms = async(phoneNumber:string,otp:string)=>{
8-
try{
9-
await client.messages.create({
10-
body:`otp is ${otp}`,
11-
from:fromNumber,
12-
to:phoneNumber
13-
})
14-
15-
}catch(err){
16-
logger.error({err},"failed to send otp")
17-
throw new Error('failed to send')
18-
}
19-
}
6+
const client = Twilio(accountSid, authToken);
7+
export const sendOtpSms = async (phoneNumber: string, otp: string) => {
8+
try {
9+
await client.messages.create({
10+
body: `otp is ${otp}`,
11+
from: fromNumber,
12+
to: phoneNumber,
13+
});
14+
} catch (err) {
15+
logger.error({ err }, 'failed to send otp');
16+
throw new Error('failed to send');
17+
}
18+
};

backend/src/app.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import express from 'express';
2-
import cors from "cors"
2+
import cors from 'cors';
33
import { pinoHttp } from 'pino-http';
44
import { logger } from './utils/logger';
55
import { notFound } from './middleware/notFound';
@@ -9,7 +9,7 @@ import authRouter from './modules/auth/auth.routes';
99
import userRouter from './modules/user/user.routes';
1010

1111
const app = express();
12-
app.use(cors())
12+
app.use(cors());
1313
app.use(express.json());
1414
app.use(
1515
pinoHttp({ logger, autoLogging: { ignore: (req) => req.url === 'health' } }),

backend/src/data-source.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,6 @@ export const appDataSouce = new DataSource({
1212
ssl: {
1313
rejectUnauthorized: false,
1414
},
15-
entities: [User, Otp,RefreshTokenEntity],
15+
entities: [User, Otp, RefreshTokenEntity],
1616
synchronize: true,
1717
});

backend/src/entities/User.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,11 @@ export class User {
1010
@PrimaryGeneratedColumn('uuid')
1111
id!: string;
1212

13-
@Column({ unique: true,nullable:true })
13+
@Column({ unique: true, nullable: true })
1414
email!: string;
1515

16-
@Column({unique:true,nullable:true})
17-
phoneNumber!:string
16+
@Column({ unique: true, nullable: true })
17+
phoneNumber!: string;
1818

1919
@Column()
2020
name!: string;
@@ -31,8 +31,8 @@ export class User {
3131
@Column({ nullable: true })
3232
profileImageUrl?: string;
3333

34-
@Column({nullable:true})
35-
password?:string;
34+
@Column({ nullable: true })
35+
password?: string;
3636

3737
@CreateDateColumn()
3838
createdAt!: Date;
Lines changed: 23 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,28 @@
1-
import { Entity,PrimaryGeneratedColumn,Column,CreateDateColumn,ManyToOne } from "typeorm";
2-
import { User } from "./User";
3-
@Entity()
4-
export class RefreshTokenEntity{
5-
@PrimaryGeneratedColumn("uuid")
6-
id!:string;
1+
import {
2+
Entity,
3+
PrimaryGeneratedColumn,
4+
Column,
5+
CreateDateColumn,
6+
ManyToOne,
7+
} from 'typeorm';
8+
import { User } from './User';
9+
@Entity()
10+
export class RefreshTokenEntity {
11+
@PrimaryGeneratedColumn('uuid')
12+
id!: string;
713

8-
@Column()
9-
tokenHash!:string;
14+
@Column()
15+
tokenHash!: string;
1016

11-
@Column()
12-
expiresAt!:Date;
17+
@Column()
18+
expiresAt!: Date;
1319

14-
@Column({default:false})
15-
revoked!:boolean
20+
@Column({ default: false })
21+
revoked!: boolean;
1622

17-
@ManyToOne(()=>User,{onDelete:"CASCADE"})
18-
user!:User;
23+
@ManyToOne(() => User, { onDelete: 'CASCADE' })
24+
user!: User;
1925

20-
@CreateDateColumn()
21-
createdAt!:Date
22-
23-
24-
}
25-
26+
@CreateDateColumn()
27+
createdAt!: Date;
28+
}

backend/src/modules/auth/auth.controller.ts

Lines changed: 44 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { Request, Response, NextFunction } from 'express';
22
import { logger } from '../../utils/logger';
3-
import { registerSchema,phoneSchema } from './auth.schema';
3+
import { registerSchema, phoneSchema } from './auth.schema';
44
import { sendOtpSms } from '../../Services/sms.service';
55
import { generateotp } from '../../utils/otp';
66
import { appDataSouce } from '../../data-source';
@@ -27,7 +27,7 @@ export const sendOtp = async (
2727
logger.debug({ otpcode }, 'otp is');
2828
const phoneNumber = result.data?.phoneNumber;
2929
await sendOtpSms(phoneNumber, otpcode.toString());
30-
await otpRep.delete({ phoneNumber })
30+
await otpRep.delete({ phoneNumber });
3131
await otpRep.save({
3232
phoneNumber,
3333
otp: otpcode.toString(),
@@ -46,16 +46,17 @@ export const verifyotp = async (
4646
next: NextFunction,
4747
) => {
4848
console.log(req.body);
49-
50-
49+
5150
try {
5251
const { phoneNumber, otp } = req.body;
5352
if (!otp || !phoneNumber) {
54-
return res.status(400).json({ message: ' otp and phoneNumber are required' });
53+
return res
54+
.status(400)
55+
.json({ message: ' otp and phoneNumber are required' });
5556
}
5657

5758
const otpRepo = appDataSouce.getRepository(Otp);
58-
const userRepo = appDataSouce.getRepository(User)
59+
const userRepo = appDataSouce.getRepository(User);
5960
const otpRecord = await otpRepo.findOne({
6061
where: {
6162
phoneNumber,
@@ -78,28 +79,28 @@ export const verifyotp = async (
7879
return res.status(400).json({ message: 'Invalid OTP' });
7980
}
8081
otpRecord.verified = true;
81-
const existingUser = await userRepo.findOne({
82-
where:{phoneNumber}
83-
})
82+
const existingUser = await userRepo.findOne({
83+
where: { phoneNumber },
84+
});
8485
await otpRepo.save(otpRecord);
85-
console.log("ACCESS_TOKEN_SECRET:", process.env.ACCESS_TOKEN_SECRET);
86+
console.log('ACCESS_TOKEN_SECRET:', process.env.ACCESS_TOKEN_SECRET);
8687

8788
if (existingUser) {
88-
const accessToken = signAccessToken({
89-
userId: existingUser.id,
90-
});
89+
const accessToken = signAccessToken({
90+
userId: existingUser.id,
91+
});
9192

92-
const refreshToken = await createRefreshTokenSession(existingUser);
93+
const refreshToken = await createRefreshTokenSession(existingUser);
9394

94-
return res.status(200).json({
95-
success: true,
96-
userExists: true,
97-
accessToken,
98-
refreshToken,
99-
});
100-
}
95+
return res.status(200).json({
96+
success: true,
97+
userExists: true,
98+
accessToken,
99+
refreshToken,
100+
});
101+
}
101102

102-
return res.status(200).json({
103+
return res.status(200).json({
103104
success: true,
104105
userExists: false,
105106
message: 'OTP verified, new user',
@@ -124,7 +125,7 @@ export const register = async (
124125
errors: result.error.format(),
125126
});
126127
}
127-
const { otpId, name, age, gender, interests,email } = result.data;
128+
const { otpId, name, age, gender, interests, email } = result.data;
128129
if (!otpId) {
129130
return res.status(400).json({ message: 'otpid requuired' });
130131
}
@@ -154,24 +155,30 @@ export const register = async (
154155
}
155156
// const hashedPassword = await bcrypt.hash(password,10)
156157

157-
const user = userRepo.create({ phoneNumber, name, age, gender, interests,email });
158-
159-
await userRepo.save(user);
160-
await otpRepo.delete({ id: otpId });
158+
const user = userRepo.create({
159+
phoneNumber,
160+
name,
161+
age,
162+
gender,
163+
interests,
164+
email,
165+
});
161166

162-
const accessToken = signAccessToken({
163-
userId: user.id,
164-
});
167+
await userRepo.save(user);
168+
await otpRepo.delete({ id: otpId });
165169

166-
const refreshToken = await createRefreshTokenSession(user);
170+
const accessToken = signAccessToken({
171+
userId: user.id,
172+
});
167173

168-
return res.status(201).json({
169-
success: true,
170-
message: 'User registered successfully',
171-
accessToken,
172-
refreshToken,
173-
});
174+
const refreshToken = await createRefreshTokenSession(user);
174175

176+
return res.status(201).json({
177+
success: true,
178+
message: 'User registered successfully',
179+
accessToken,
180+
refreshToken,
181+
});
175182
} catch (err) {
176183
logger.error({ err }, 'error in register');
177184
next(err);

backend/src/modules/auth/auth.schema.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ export const phoneSchema = z.object({
33
phoneNumber: z.string().min(10, 'Invalid phone number'),
44
});
55

6-
76
export const registerSchema = z.object({
87
otpId: z.string().uuid(),
98
name: z.string().min(1, 'name is required'),

0 commit comments

Comments
 (0)