1+ const nodemailer = require ( 'nodemailer' ) ;
2+ const path = require ( 'path' )
3+ const db = require ( path . join ( __dirname , "../db/dbConnect" ) ) ;
4+ require ( 'dotenv' ) . config ( ) ;
5+
6+ let transporter = nodemailer . createTransport ( {
7+ service : 'Gmail' ,
8+ auth : {
9+ user : process . env . email ,
10+ pass : process . env . pass
11+ }
12+ } ) ;
13+
14+ const login = ( req , res ) => {
15+ if ( req . session . isLoggedIn ) {
16+ res . redirect ( "/" )
17+ return ;
18+ }
19+ db . query ( 'SELECT * FROM users WHERE email = \'' + req . body . email + '\' AND password = \'' + req . body . password + '\'' , ( error , results , fields ) => {
20+ if ( error ) {
21+ console . error ( 'Error executing query: ' + error ) ;
22+ res . send ( error ) ;
23+ return ;
24+ }
25+ if ( results . length > 0 ) {
26+ req . session . isLoggedIn = true ;
27+ res . redirect ( '/' ) ;
28+ }
29+ else {
30+ res . redirect ( '/register' ) ;
31+ }
32+ } ) ;
33+ }
34+
35+
36+
37+ const forgotPass = ( req , res ) => {
38+ if ( req . session . isLoggedIn ) {
39+ res . redirect ( "/" ) ;
40+ return ;
41+ }
42+ db . query ( 'SELECT * FROM users WHERE email = \'' + req . body . email + '\';' , ( error , results , fields ) => {
43+ if ( error ) {
44+ console . error ( 'Error executing query: ' + error ) ;
45+ res . send ( error ) ;
46+ return ;
47+ }
48+ if ( results . length > 0 ) {
49+ email = results [ 0 ] . email ;
50+ otp = randomNumber = Math . floor ( Math . random ( ) * 9000 ) + 1000 ;
51+ let mailOptions = {
52+ from : process . env . email ,
53+ to : email ,
54+ subject : 'OTP for Password Reset' ,
55+ text : 'Your OTP for password change is ' + otp
56+ } ;
57+ transporter . sendMail ( mailOptions , ( error , info ) => {
58+ if ( error ) {
59+ console . error ( 'Error occurred:' , error ) ;
60+ } else {
61+ console . log ( 'Email sent:' , info . response ) ;
62+ }
63+ } ) ;
64+ db . query ( 'UPDATE users SET otp=' + otp + ' WHERE email=\'' + email + '\';' , ( error , results , fields ) => {
65+ if ( error ) {
66+ console . error ( 'Error executing query: ' + error ) ;
67+ res . send ( error ) ;
68+ return ;
69+ }
70+ res . render ( 'changePass' , { email :email } )
71+ } ) ;
72+ }
73+ else {
74+ res . redirect ( '/register' ) ;
75+ }
76+ } ) ;
77+ }
78+
79+ const changePass = ( req , res ) => {
80+ if ( req . session . isLoggedIn ) {
81+ res . redirect ( "/" ) ;
82+ return ;
83+ }
84+ otp = req . body . otp ;
85+ console . log ( otp ) ;
86+ db . query ( 'UPDATE users set password = \'' + req . body . newPassword + '\' WHERE email = \'' + req . body . email + '\' AND otp = ' + otp + ';' , ( error , results , fields ) => {
87+ if ( error ) {
88+ console . error ( 'Error executing query: ' + error ) ;
89+ res . send ( error ) ;
90+ return ;
91+ }
92+ res . redirect ( '/login' ) ;
93+ } ) ;
94+ }
95+
96+ const logout = ( req , res ) => {
97+ if ( req . session . isLoggedIn ) {
98+ req . session . isLoggedIn = false ;
99+ }
100+ res . redirect ( "/login" ) ;
101+ }
102+
103+ module . exports = {
104+ login, logout, forgotPass, changePass
105+ }
0 commit comments