Skip to content

Commit 00d24c6

Browse files
fix: address code review feedback
1 parent 86e15d4 commit 00d24c6

5 files changed

Lines changed: 55 additions & 56 deletions

File tree

backend/controllers/auth.controller.js

Lines changed: 16 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,6 @@ const {
1313
onlyEmailSchema
1414
} = require("../utils/input.validation");
1515

16-
17-
1816
module.exports.register = async (req, res) => {
1917
try {
2018
const { email, password } = loginSchema.parse(req.body);
@@ -30,9 +28,9 @@ module.exports.register = async (req, res) => {
3028

3129
return successResponse(res, 201, { message: "Registered successfully" });
3230
} catch (err) {
33-
if (err instanceof z.ZodError) return errorResponse(res, 400, err.errors[0]?.message || "Validation failed");
31+
if (err instanceof z.ZodError) return errorResponse(res, 400, err.issues?.[0]?.message || "Validation failed");
3432
console.error(err);
35-
return errorResponse(res, 500, "Internal Server Error");
33+
return errorResponse(res, 500, "Internal server error");
3634
}
3735
}
3836

@@ -42,17 +40,17 @@ module.exports.login = async (req, res) => {
4240
const { email, password } = loginSchema.parse(req.body);
4341

4442
const dev = await Developer.findOne({ email });
45-
if (!dev) return errorResponse(res, 400, "User not found");
43+
if (!dev) return errorResponse(res, 400, "Invalid email or password");
4644

4745
const validPass = await bcrypt.compare(password, dev.password);
48-
if (!validPass) return errorResponse(res, 400, "Invalid password");
46+
if (!validPass) return errorResponse(res, 400, "Invalid email or password");
4947

5048
const token = jwt.sign({ _id: dev._id, isVerified: dev.isVerified }, process.env.JWT_SECRET);
5149
return successResponse(res, 200, { data: { token } });
5250
} catch (err) {
53-
if (err instanceof z.ZodError) return errorResponse(res, 400, err.issues[0]?.message || "Validation failed");
54-
console.error("Server Error:", err);
55-
return errorResponse(res, 500, "Internal Server Error");
51+
if (err instanceof z.ZodError) return errorResponse(res, 400, err.issues?.[0]?.message || "Validation failed");
52+
console.error(err);
53+
return errorResponse(res, 500, "Internal server error");
5654
}
5755
}
5856

@@ -74,9 +72,9 @@ module.exports.changePassword = async (req, res) => {
7472

7573
return successResponse(res, 200, { message: "Password updated successfully" });
7674
} catch (err) {
77-
if (err instanceof z.ZodError) return errorResponse(res, 400, err.errors[0]?.message || "Validation failed");
75+
if (err instanceof z.ZodError) return errorResponse(res, 400, err.issues?.[0]?.message || "Validation failed");
7876
console.error(err);
79-
return errorResponse(res, 500, "Internal Server Error");
77+
return errorResponse(res, 500, "Internal server error");
8078
}
8179
}
8280

@@ -95,9 +93,9 @@ module.exports.deleteAccount = async (req, res) => {
9593

9694
return successResponse(res, 200, { message: "Account and all projects deleted." });
9795
} catch (err) {
98-
if (err instanceof z.ZodError) return errorResponse(res, 400, err.errors[0]?.message || "Validation failed");
96+
if (err instanceof z.ZodError) return errorResponse(res, 400, err.issues?.[0]?.message || "Validation failed");
9997
console.error(err);
100-
return errorResponse(res, 500, "Internal Server Error");
98+
return errorResponse(res, 500, "Internal server error");
10199
}
102100
}
103101

@@ -123,9 +121,9 @@ module.exports.sendOtp = async (req, res) => {
123121

124122
return successResponse(res, 200, { message: "OTP sent successfully" });
125123
} catch (err) {
126-
if (err instanceof z.ZodError) return errorResponse(res, 400, err.errors[0]?.message || "Validation failed");
124+
if (err instanceof z.ZodError) return errorResponse(res, 400, err.issues?.[0]?.message || "Validation failed");
127125
console.error(err);
128-
return errorResponse(res, 500, "Internal Server Error");
126+
return errorResponse(res, 500, "Internal server error");
129127
}
130128
}
131129

@@ -141,7 +139,7 @@ module.exports.verifyOtp = async (req, res) => {
141139
const existingOtp = await otpSchema.findOne({ userId: existingUser._id });
142140
if (!existingOtp) return errorResponse(res, 400, "You haven't requested an OTP");
143141

144-
if (existingOtp.otp !== otp) return errorResponse(res, 400, "Incorrect OTP");
142+
if (String(existingOtp.otp) !== String(otp)) return errorResponse(res, 400, "Incorrect OTP");
145143

146144
await existingOtp.deleteOne();
147145
existingUser.isVerified = true;
@@ -151,8 +149,8 @@ module.exports.verifyOtp = async (req, res) => {
151149

152150
return successResponse(res, 200, { message: "OTP verified successfully", data: { token } });
153151
} catch (err) {
154-
if (err instanceof z.ZodError) return errorResponse(res, 400, err.errors[0]?.message || "Validation failed");
152+
if (err instanceof z.ZodError) return errorResponse(res, 400, err.issues?.[0]?.message || "Validation failed");
155153
console.error(err);
156-
return errorResponse(res, 500, "Internal Server Error");
154+
return errorResponse(res, 500, "Internal server error");
157155
}
158156
}

backend/controllers/data.controller.js

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ const { getConnection } = require("../utils/connection.manager");
55
const { getCompiledModel } = require("../utils/injectModel");
66
const { errorResponse, successResponse } = require("../utils/errorResponse");
77

8-
// Validate MongoDB ObjectId
98
const isValidId = (id) => mongoose.Types.ObjectId.isValid(id);
109

1110
// INSERT DATA
@@ -65,7 +64,7 @@ module.exports.insertData = async (req, res) => {
6564
return successResponse(res, 201, { data: result });
6665
} catch (err) {
6766
console.error(err);
68-
return errorResponse(res, 500, err.message);
67+
return errorResponse(res, 500, "Internal server error");
6968
}
7069
};
7170

@@ -87,7 +86,7 @@ module.exports.getAllData = async (req, res) => {
8786
return successResponse(res, 200, { data });
8887
} catch (err) {
8988
console.error(err);
90-
return errorResponse(res, 500, err.message);
89+
return errorResponse(res, 500, "Internal server error");
9190
}
9291
};
9392

@@ -111,7 +110,7 @@ module.exports.getSingleDoc = async (req, res) => {
111110
return successResponse(res, 200, { data: doc });
112111
} catch (err) {
113112
console.error(err);
114-
return errorResponse(res, 500, err.message);
113+
return errorResponse(res, 500, "Internal server error");
115114
}
116115
};
117116

@@ -140,6 +139,7 @@ module.exports.updateSingleData = async (req, res) => {
140139
if (fieldRule.type === 'Number' && typeof value !== 'number') return errorResponse(res, 400, `Field '${key}' must be a Number.`);
141140
if (fieldRule.type === 'Boolean' && typeof value !== 'boolean') return errorResponse(res, 400, `Field '${key}' must be a Boolean.`);
142141
if (fieldRule.type === 'String' && typeof value !== 'string') return errorResponse(res, 400, `Field '${key}' must be a String.`);
142+
if (fieldRule.type === 'Date' && isNaN(Date.parse(value))) return errorResponse(res, 400, `Field '${key}' must be a valid Date.`);
143143

144144
updateData[key] = value;
145145
}
@@ -152,7 +152,7 @@ module.exports.updateSingleData = async (req, res) => {
152152
return successResponse(res, 200, { message: "Updated", data: result });
153153
} catch (err) {
154154
console.error(err);
155-
return errorResponse(res, 500, err.message);
155+
return errorResponse(res, 500, "Internal server error");
156156
}
157157
};
158158

@@ -191,6 +191,6 @@ module.exports.deleteSingleDoc = async (req, res) => {
191191
return successResponse(res, 200, { message: "Document deleted", data: { id } });
192192
} catch (err) {
193193
console.error(err);
194-
return errorResponse(res, 500, err.message);
194+
return errorResponse(res, 500, "Internal server error");
195195
}
196196
};

backend/controllers/project.controller.js

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ module.exports.createProject = async (req, res) => {
4545

4646
return successResponse(res, 201, { data: projectObj });
4747
} catch (err) {
48-
if (err instanceof z.ZodError) return errorResponse(res, 400, err.errors[0]?.message || "Validation failed");
48+
if (err instanceof z.ZodError) return errorResponse(res, 400, err.issues?.[0]?.message || "Validation failed");
4949
return errorResponse(res, 500, err.message);
5050
}
5151
}
@@ -253,7 +253,7 @@ module.exports.createCollection = async (req, res) => {
253253

254254
return successResponse(res, 201, { data: projectObj });
255255
} catch (err) {
256-
if (err instanceof z.ZodError) return errorResponse(res, 400, err.errors[0]?.message || "Validation failed");
256+
if (err instanceof z.ZodError) return errorResponse(res, 400, err.issues?.[0]?.message || "Validation failed");
257257
return errorResponse(res, 500, err.message);
258258
}
259259
}
@@ -611,9 +611,14 @@ module.exports.updateProject = async (req, res) => {
611611
);
612612
if (!project) return errorResponse(res, 404, "Project not found.");
613613

614-
return successResponse(res, 200, { message: "Project updated successfully.", data: project });
614+
const projectObj = project.toObject();
615+
delete projectObj.apiKey;
616+
delete projectObj.jwtSecret;
617+
618+
return successResponse(res, 200, { message: "Project updated successfully.", data: projectObj });
615619
} catch (err) {
616-
return errorResponse(res, 500, err.message);
620+
console.error(err);
621+
return errorResponse(res, 500, "Internal server error");
617622
}
618623
}
619624

backend/controllers/storage.controller.js

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,7 @@ const getBucket = (project) =>
1111
const isExternal = (project) =>
1212
!!project.resources?.storage?.isExternal;
1313

14-
/**
15-
* Upload File
16-
*/
14+
// Upload File
1715
module.exports.uploadFile = async (req, res) => {
1816
try {
1917
const file = req.file;
@@ -46,8 +44,10 @@ module.exports.uploadFile = async (req, res) => {
4644
if (uploadError) throw uploadError;
4745

4846
if (!external) {
49-
project.storageUsed += file.size;
50-
await project.save();
47+
await Project.updateOne(
48+
{ _id: project._id },
49+
{ $inc: { storageUsed: file.size } }
50+
);
5151
}
5252

5353
const { data: publicUrlData } = supabase.storage
@@ -64,13 +64,11 @@ module.exports.uploadFile = async (req, res) => {
6464
});
6565
} catch (err) {
6666
console.error("Upload file error:", err);
67-
return errorResponse(res, 500, "File upload failed.");
67+
return errorResponse(res, 500, "Internal server error");
6868
}
6969
};
7070

71-
/**
72-
* Delete File
73-
*/
71+
// Delete File
7472
module.exports.deleteFile = async (req, res) => {
7573
try {
7674
const { path } = req.body;
@@ -107,20 +105,20 @@ module.exports.deleteFile = async (req, res) => {
107105
if (deleteError) throw deleteError;
108106

109107
if (!external && fileSize > 0) {
110-
project.storageUsed = Math.max(0, project.storageUsed - fileSize);
111-
await project.save();
108+
await Project.updateOne(
109+
{ _id: project._id },
110+
{ $inc: { storageUsed: -fileSize } }
111+
);
112112
}
113113

114114
return successResponse(res, 200, { message: "File deleted successfully." });
115115
} catch (err) {
116116
console.error("Delete file error:", err);
117-
return errorResponse(res, 500, "File deletion failed.");
117+
return errorResponse(res, 500, "Internal server error");
118118
}
119119
};
120120

121-
/**
122-
* Delete All Files
123-
*/
121+
// Delete All Files
124122
module.exports.deleteAllFiles = async (req, res) => {
125123
try {
126124
const project = req.project;
@@ -156,8 +154,10 @@ module.exports.deleteAllFiles = async (req, res) => {
156154
}
157155

158156
if (!isExternal(project)) {
159-
project.storageUsed = 0;
160-
await project.save();
157+
await Project.updateOne(
158+
{ _id: project._id },
159+
{ $set: { storageUsed: 0 } }
160+
);
161161
}
162162

163163
return successResponse(res, 200, {
@@ -169,6 +169,6 @@ module.exports.deleteAllFiles = async (req, res) => {
169169
});
170170
} catch (err) {
171171
console.error("Delete all files error:", err);
172-
return errorResponse(res, 500, "Failed to delete files.");
172+
return errorResponse(res, 500, "Internal server error");
173173
}
174174
};

backend/controllers/userAuth.controller.js

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ module.exports.signup = async (req, res) => {
99
try {
1010
const project = req.project;
1111

12-
// Zod Validation (Prevents NoSQL Injection too)
1312
const { email, password, username, ...otherData } = userSignupSchema.parse(req.body);
1413

1514
const collectionName = `${project._id}_users`;
@@ -38,16 +37,13 @@ module.exports.signup = async (req, res) => {
3837

3938
return successResponse(res, 201, {
4039
message: "User registered successfully.",
41-
data: {
42-
token,
43-
userId: result.insertedId
44-
}
40+
data: { token, userId: result.insertedId }
4541
});
4642

4743
} catch (err) {
48-
if (err instanceof z.ZodError) return errorResponse(res, 400, err.errors[0]?.message || "Validation failed");
44+
if (err instanceof z.ZodError) return errorResponse(res, 400, err.issues?.[0]?.message || "Validation failed");
4945
console.error(err);
50-
return errorResponse(res, 500, err.message);
46+
return errorResponse(res, 500, "Internal server error");
5147
}
5248
}
5349

@@ -74,9 +70,9 @@ module.exports.login = async (req, res) => {
7470
return successResponse(res, 200, { data: { token } });
7571

7672
} catch (err) {
77-
if (err instanceof z.ZodError) return errorResponse(res, 400, err.errors[0]?.message || "Validation failed");
73+
if (err instanceof z.ZodError) return errorResponse(res, 400, err.issues?.[0]?.message || "Validation failed");
7874
console.error(err);
79-
return errorResponse(res, 500, err.message);
75+
return errorResponse(res, 500, "Internal server error");
8076
}
8177
}
8278

@@ -110,6 +106,6 @@ module.exports.me = async (req, res) => {
110106

111107
} catch (err) {
112108
console.error(err);
113-
return errorResponse(res, 500, err.message);
109+
return errorResponse(res, 500, "Internal server error");
114110
}
115111
}

0 commit comments

Comments
 (0)