-
Notifications
You must be signed in to change notification settings - Fork 0
/
server.js
127 lines (108 loc) · 3.2 KB
/
server.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
// importing packages
const express = require('express');
const admin = require('firebase-admin');
const bcrypt = require('bcrypt');
const path = require('path');
//forebase admin setup
let serviceAccount = require("./config.json");
admin.initializeApp({
credential: admin.credential.cert(serviceAccount)
});
let db = admin.firestore();
//declare static path
let staticPath = path.join(__dirname, "public");
//intializing express.js
const app = express();
//middlewares
app.use(express.static(staticPath));
app.use(express.json());
app.listen(3000, () => {
console.log('Executando na porta 3000.......');
})
//routes
//home route
app.get("/", (req, res) => {
res.sendFile(path.join(staticPath, "index.html"));
})
//signup route
app.get('/signup', (req, res) =>{
res.sendFile(path.join(staticPath, "signup.html"));
})
app.post('/signup', (req, res) => {
let { name, email, password, number, tac, notification } = req.body;
//form validations
if(name.length < 3){
return res.json({'alert': 'O nome deve conter pelo menos 3 letras'});
} else if(!email.length ){
return res.json({'alert':'Digite seu e-mail'});
} else if(password.length < 8){
return res.json({'alert':'A senha deve ter pelo menos 8 letras'});
} else if(!number.length){
return res.json({'alert':'Insira seu número de telefone'});
} else if(!Number(number) || number.length < 10){
return res.json({'alert':'Número inválido, por favor insira um número válido'});
} else if(!tac){
return res.json({'alert':'Você deve concordar com nossos termos e condições'});
} else{
//store user in db
db.collection('users').doc(email).get().then(user =>{
if(user.exists){
return res.json({'alert': 'Uma conta com este mesmo email ja existe'});
} else{
//encrypt the password before storing it.
bcrypt.genSalt(10, (err, salt) =>{
bcrypt.hash(password, salt, (err, hash) =>{
req.body.password = hash;
db.collection('users').doc(email).set(req.body).then(data =>{
res.json({
name: req.body.name,
email: req.body.email,
seller: req.body.seller,
})
})
})
})
}
})
}
})
//login route
app.get('/login', (req, res) =>{
res.sendFile(path.join(staticPath, "login.html"));
})
app.post('/login', (req, res) =>{
let{ email, password } = req.body;
if(!email.length || !password.length){
return res.json({'alert': 'Preencha todos os campos'})
}
db.collection('users').doc(email).get()
.then(user =>{
if(!user.exists){//is emai does not exists
return res.json({'alert': 'Email incorreto'});
} else{
bcrypt.compare(password, user.data().password, (err, result) =>{
if(result){
let data = user.data();
return res.json({
name: data.name,
email: data.email,
seller: data.seller,
})
} else{
return res.json({'alert': 'Senha incorreta'});
}
})
}
})
})
// Seller route
app.get('/seller', (req, res) =>{
res.sendFile(path.join(staticPath, "seller.html"));
})
// 404 route
app.get('/404', (req, res) => {
res.sendFile(path.join(staticPath, "404.html"));
})
app.use((req, res) => {
res.redirect('/404');
})