@@ -13,7 +13,7 @@ import streamifier from "streamifier";
1313//getting all user
1414export 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
4041export 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
6870export 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
9699export 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
152178export 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
227254export 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
293392export 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
342442export 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
396497export 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
519551export 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