Skip to content

Commit 85a01b7

Browse files
Merge pull request #6 from devraushan/rectify_filestructure
refactor: create separate folder for controllers for a neat filestruc…
2 parents 512c61c + 50f31a3 commit 85a01b7

File tree

5 files changed

+222
-180
lines changed

5 files changed

+222
-180
lines changed

app/controllers/loginController.js

Lines changed: 105 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,105 @@
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+
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
const path = require('path')
2+
const db = require(path.join(__dirname,"../db/dbConnect"));
3+
4+
const searchProducts = (req,res)=>{
5+
if (!req.session.isLoggedIn) {
6+
res.redirect('/login');
7+
return;
8+
}
9+
db.query('SELECT * FROM products WHERE name LIKE \'\%'+req.body.name+'\%\';', (error, results, fields) => {
10+
if (error) {
11+
console.error('Error executing query: ' + error);
12+
res.send(error);
13+
return;
14+
}
15+
console.log(results)
16+
res.render('products',{products:results, isLoggedIn:req.session.isLoggedIn});
17+
});
18+
}
19+
module.exports = {
20+
searchProducts
21+
}
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
const path = require('path')
2+
const db = require(path.join(__dirname,"../db/dbConnect"));
3+
require('dotenv').config();
4+
5+
const signUp = (req,res)=>{
6+
if (req.session.isLoggedIn){
7+
res.redirect("/");
8+
return;
9+
}
10+
db.query("SELECT * FROM users WHERE email = '"+req.body.email+"';", (error, results, fields) => {
11+
if (error) {
12+
console.error('Error executing query: ' + error);
13+
res.send(error);
14+
return;
15+
}
16+
if (results.length > 0) {
17+
res.redirect('/login');
18+
}
19+
else{
20+
db.query("INSERT INTO users (name,email,password) VALUES ('"+req.body.fullname+"','"+req.body.email+"','"+req.body.password+"');", (error, results, fields) => {
21+
if (error) {
22+
console.error('Error executing query: ' + error);
23+
return;
24+
}
25+
res.redirect('/login');
26+
});
27+
}
28+
});
29+
}
30+
module.exports = {signUp}

app/controllers/viewControllers.js

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
const path = require('path')
2+
const db = require(path.join(__dirname,"../db/dbConnect"));
3+
require('dotenv').config();
4+
5+
const loginView = (req,res)=>{
6+
if (req.session.isLoggedIn) {
7+
res.redirect("/")
8+
return;
9+
}
10+
res.render('login');
11+
}
12+
13+
const signUpView = (req,res)=>{
14+
if (req.session.isLoggedIn){
15+
res.redirect("/");
16+
return;
17+
}
18+
res.render('register');
19+
}
20+
21+
const forgotPassView = (req,res)=>{
22+
if (req.session.isLoggedIn){
23+
res.redirect("/");
24+
return;
25+
}
26+
res.render('forgotPass')
27+
}
28+
29+
const productListView = (req,res)=>{
30+
if (!req.session.isLoggedIn) {
31+
res.redirect('/login');
32+
return;
33+
}
34+
db.query('SELECT * FROM products', (error, results, fields) => {
35+
if (error) {
36+
console.error('Error executing query: ' + error);
37+
res.send(error);
38+
return;
39+
}
40+
res.render('products',{products:results, isLoggedIn:req.session.isLoggedIn});
41+
});
42+
}
43+
44+
module.exports = {
45+
loginView,signUpView,forgotPassView,productListView
46+
}

0 commit comments

Comments
 (0)