Skip to content

Commit 279de88

Browse files
authored
Merge pull request #1 from CodeLab-Collaborators/main
MERGE
2 parents b8d0dd0 + 228dc89 commit 279de88

23 files changed

Lines changed: 658 additions & 168 deletions

controller/UserController.ts

Lines changed: 126 additions & 94 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import streamifier from "streamifier";
1313
//getting all user
1414
export const getUser = async (
1515
req: Request,
16-
res: Response
16+
res: Response,
1717
): Promise<Response> => {
1818
try {
1919
const users = await userModel.find();
@@ -37,9 +37,10 @@ export const getUser = async (
3737
}
3838
};
3939

40+
//getting a single user
4041
export const getOneUser = async (
4142
req: Request,
42-
res: Response
43+
res: Response,
4344
): Promise<Response> => {
4445
try {
4546
const { id } = req.params;
@@ -65,9 +66,10 @@ export const getOneUser = async (
6566
}
6667
};
6768

69+
//deleting a user
6870
export const deleteUser = async (
6971
req: Request,
70-
res: Response
72+
res: Response,
7173
): Promise<Response> => {
7274
try {
7375
const { id } = req.params;
@@ -76,7 +78,7 @@ export const deleteUser = async (
7678

7779
return res.status(HTTP.OK).json({
7880
message: "user has been delete",
79-
data: removeUser,
81+
8082
});
8183
} catch (err) {
8284
new mainAppErrorHandler({
@@ -93,18 +95,39 @@ export const deleteUser = async (
9395
}
9496
};
9597

98+
//editing the user profile
9699
export const updateUser = async (
97100
req: Request,
98-
res: Response
101+
res: Response,
99102
): Promise<Response> => {
100103
try {
101104
const { id } = req.params;
102-
const { userName } = req.body;
105+
const {
106+
userName,
107+
fullName,
108+
location,
109+
address,
110+
placeOfBirth,
111+
college,
112+
profession,
113+
secondarySchool,
114+
bio,
115+
} = req.body;
103116

104117
const user = await userModel.findByIdAndUpdate(
105118
id,
106-
{ userName },
107-
{ new: true }
119+
{
120+
userName,
121+
fullName,
122+
location,
123+
address,
124+
placeOfBirth,
125+
college,
126+
profession,
127+
secondarySchool,
128+
bio,
129+
},
130+
{ new: true },
108131
);
109132

110133
return res.status(HTTP.OK).json({
@@ -132,7 +155,9 @@ export const editProfile = async (req: Request, res: Response) => {
132155
const user = await userModel.findByIdAndUpdate(
133156
req.params.id,
134157
{
135-
$set: req.body,
158+
$set: {
159+
userName:req.body
160+
}
136161
},
137162
{
138163
new: true,
@@ -149,6 +174,7 @@ export const editProfile = async (req: Request, res: Response) => {
149174
}
150175
};
151176

177+
//updating the user image
152178
export const updateUserImage = async (req: Request, res: Response) => {
153179
try {
154180
const pixID: any = await userModel.findById(req.params.id);
@@ -166,7 +192,7 @@ export const updateUserImage = async (req: Request, res: Response) => {
166192
} else {
167193
return reject(error);
168194
}
169-
}
195+
},
170196
);
171197

172198
streamifier.createReadStream(req.file.buffer).pipe(stream);
@@ -181,7 +207,7 @@ export const updateUserImage = async (req: Request, res: Response) => {
181207
avatar: image.secure_url,
182208
avatarID: image.public_id,
183209
},
184-
{ new: true }
210+
{ new: true },
185211
);
186212
res.status(200).json({
187213
message: "user data updated",
@@ -197,7 +223,7 @@ export const updateUserImage = async (req: Request, res: Response) => {
197223
} else {
198224
return reject(error);
199225
}
200-
}
226+
},
201227
);
202228

203229
streamifier.createReadStream(req.file.buffer).pipe(stream);
@@ -212,7 +238,7 @@ export const updateUserImage = async (req: Request, res: Response) => {
212238
avatar: image.secure_url,
213239
avatarID: image.public_id,
214240
},
215-
{ new: true }
241+
{ new: true },
216242
);
217243
res.status(200).json({
218244
message: "user data updated",
@@ -224,9 +250,10 @@ export const updateUserImage = async (req: Request, res: Response) => {
224250
}
225251
};
226252

253+
//creating a new user
227254
export const createUser = async (
228255
req: Request,
229-
res: Response
256+
res: Response,
230257
): Promise<Response> => {
231258
try {
232259
const { fullName, userName, email, password } = req.body;
@@ -290,9 +317,81 @@ export const createUser = async (
290317
}
291318
};
292319

320+
//sign In
321+
export const signin = async (
322+
req: Request,
323+
res: Response,
324+
): Promise<Response> => {
325+
try {
326+
const { email, password } = req.body;
327+
328+
const findUser = await userModel.findOne({ email });
329+
330+
if (!findUser) {
331+
return res.status(HTTP.FORBIDDEN).json({
332+
message: "This user does not exist",
333+
});
334+
} else {
335+
if (findUser.token === "" && findUser.verified === true) {
336+
const decryptPassword = await bcrypt.compare(
337+
password,
338+
findUser?.password!,
339+
);
340+
341+
if (decryptPassword) {
342+
const encrypt = jwt.sign(
343+
{
344+
id: findUser.id,
345+
},
346+
process.env.SIG_SECRET,
347+
{ expiresIn: process.env.SIG_EXPIRES },
348+
);
349+
350+
const refreshToken = jwt.sign(
351+
{
352+
id: findUser.id,
353+
email: findUser.email,
354+
userName: findUser.userName,
355+
verified: findUser.verified,
356+
},
357+
"veriedRefreshedUser",
358+
{ expiresIn: "2m" },
359+
);
360+
361+
return res.status(HTTP.OK).json({
362+
message: `Welcome back ${findUser.userName}`,
363+
data: { encrypt },
364+
});
365+
} else {
366+
return res.status(HTTP.FORBIDDEN).json({
367+
message: "Your password isn't correct",
368+
});
369+
}
370+
} else {
371+
return res.status(HTTP.FORBIDDEN).json({
372+
message: "This Account hasn't been Verified",
373+
});
374+
}
375+
}
376+
} catch (err) {
377+
new mainAppErrorHandler({
378+
message: `Unable to create school for Admin`,
379+
status: HTTP.BAD_REQUEST,
380+
name: "School creation Error",
381+
isSuccess: false,
382+
});
383+
384+
return res.status(HTTP.BAD_REQUEST).json({
385+
message: "Error Found",
386+
data: err,
387+
});
388+
}
389+
};
390+
391+
//verifying a user
293392
export const verifyUser = async (
294393
req: Request,
295-
res: Response
394+
res: Response,
296395
): Promise<Response> => {
297396
try {
298397
const { id, token } = req.params;
@@ -312,7 +411,7 @@ export const verifyUser = async (
312411
token: "",
313412
verified: true,
314413
},
315-
{ new: true }
414+
{ new: true },
316415
);
317416
console.log("user: ", user);
318417

@@ -339,9 +438,10 @@ export const verifyUser = async (
339438
}
340439
};
341440

441+
//reset the user mail
342442
export const resetMail = async (
343443
req: Request,
344-
res: Response
444+
res: Response,
345445
): Promise<Response> => {
346446
try {
347447
const { id, token } = req.params;
@@ -361,7 +461,7 @@ export const resetMail = async (
361461
{
362462
token: newToken,
363463
},
364-
{ new: true }
464+
{ new: true },
365465
);
366466

367467
resetUserPassword(userMail)
@@ -393,9 +493,10 @@ export const resetMail = async (
393493
}
394494
};
395495

496+
//Resting the user password
396497
export const changePassword = async (
397498
req: Request,
398-
res: Response
499+
res: Response,
399500
): Promise<Response> => {
400501
try {
401502
const { id, token } = req.params;
@@ -418,7 +519,7 @@ export const changePassword = async (
418519
password: hashed,
419520
token: "",
420521
},
421-
{ new: true }
522+
{ new: true },
422523
);
423524

424525
return res.status(HTTP.OK).json({
@@ -446,84 +547,15 @@ export const changePassword = async (
446547
}
447548
};
448549

449-
export const signin = async (
450-
req: Request,
451-
res: Response
452-
): Promise<Response> => {
453-
try {
454-
const { email, password } = req.body;
455-
456-
const findUser = await userModel.findOne({ email });
457-
458-
if (!findUser) {
459-
return res.status(HTTP.FORBIDDEN).json({
460-
message: "This user does not exist",
461-
});
462-
} else {
463-
if (findUser.token === "" && findUser.verified === true) {
464-
const decryptPassword = await bcrypt.compare(
465-
password,
466-
findUser?.password!
467-
);
468-
469-
if (decryptPassword) {
470-
const encrypt = jwt.sign(
471-
{
472-
id: findUser.id,
473-
},
474-
process.env.SIG_SECRET,
475-
{ expiresIn: process.env.SIG_EXPIRES }
476-
);
477-
478-
const refreshToken = jwt.sign(
479-
{
480-
id: findUser.id,
481-
email: findUser.email,
482-
userName: findUser.userName,
483-
verified: findUser.verified,
484-
},
485-
"veriedRefreshedUser",
486-
{ expiresIn: "2m" }
487-
);
488-
489-
return res.status(HTTP.OK).json({
490-
message: `Welcome back ${findUser.userName}`,
491-
data: { encrypt },
492-
});
493-
} else {
494-
return res.status(HTTP.FORBIDDEN).json({
495-
message: "Your password isn't correct",
496-
});
497-
}
498-
} else {
499-
return res.status(HTTP.FORBIDDEN).json({
500-
message: "This Account hasn't been Verified",
501-
});
502-
}
503-
}
504-
} catch (err) {
505-
new mainAppErrorHandler({
506-
message: `Unable to create school for Admin`,
507-
status: HTTP.BAD_REQUEST,
508-
name: "School creation Error",
509-
isSuccess: false,
510-
});
511-
512-
return res.status(HTTP.BAD_REQUEST).json({
513-
message: "Error Found",
514-
data: err,
515-
});
516-
}
517-
};
518-
550+
//Refreshing the user token
519551
export const refreshUserToken = async (req: Request, res: Response) => {
520552
try {
521553
const { refresh } = req.body;
522554

523555
jwt.verify(
524556
refresh,
525557
process.env.REFRESH_SECRET,
526-
(err: Error, payload: any) => {
558+
(err: Error, payload:any) => {
527559
if (err) {
528560
if (err.name === "TokenExpiredError") {
529561
res.json({
@@ -538,7 +570,7 @@ export const refreshUserToken = async (req: Request, res: Response) => {
538570
id: payload.id,
539571
},
540572
process.env.SIG_SECRET,
541-
{ expiresIn: process.env.SIG_EXPIRES }
573+
{ expiresIn: process.env.SIG_EXPIRES },
542574
);
543575
const refreshToken = req.body.refresh;
544576

@@ -547,9 +579,9 @@ export const refreshUserToken = async (req: Request, res: Response) => {
547579
data: { encrypt, refreshToken },
548580
});
549581
}
550-
}
582+
},
551583
);
552584
} catch (error) {
553585
console.log(error);
554586
}
555-
};
587+
};

0 commit comments

Comments
 (0)