Skip to content

Commit 46db0dc

Browse files
author
mac
committed
feat(kpis): add kpis in back-end and front-end comment email verification add delete user account rule
1 parent 4b84cf6 commit 46db0dc

19 files changed

Lines changed: 827 additions & 310 deletions

File tree

backend-nodejs/api/controllers/authController.js

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,12 @@ const registerUser = (req, res) => {
1717
} else if (response.status === 4092) {
1818
return res.boom.conflict(response.message)
1919
}
20-
mailService.welcomeMail(
21-
response.data.email,
22-
response.data.username,
23-
response.data.token
24-
)
25-
delete response.data
20+
// mailService.welcomeMail(
21+
// response.data.email,
22+
// response.data.username,
23+
// response.data.token
24+
// )
25+
// delete response.data
2626
res.status(201).send(response)
2727
}, values)
2828
} else {
@@ -39,7 +39,8 @@ const authenticateUser = (req, res) => {
3939
(err, values) => {
4040
if (err === null) {
4141
authModel.authenticate(response => {
42-
if (!response.error && response.user.is_verified) {
42+
if (!response.error) {
43+
// && response.user.is_verified
4344
delete response.error
4445
const payload = { user: response.user, message: response.message }
4546
const token = jwt.sign(
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
'use strict'
2+
const Joi = require('@hapi/joi')
3+
const moment = require('moment')
4+
const kpisModel = require('./../models/kpisModel')
5+
moment.locale('fr')
6+
7+
// get user transactions infos
8+
const getTransactionsInfos = (req, res) => {
9+
kpisModel.getTransactionsInfos(response => {
10+
res.status(200).send(response)
11+
}, req.userData.user.user_id)
12+
}
13+
14+
// get amount spend by category
15+
const getExpensesByCategory = (req, res) => {
16+
kpisModel.expensesByCategory(response => {
17+
res.status(200).send(response)
18+
}, req.userData.user.user_id)
19+
}
20+
21+
// get income per month
22+
const getIncomePerMonth = (req, res) => {
23+
kpisModel.incomePerMonth(response => {
24+
res.status(200).send(response)
25+
}, req.userData.user.user_id)
26+
}
27+
28+
const getMonthlyIncomeExpenses = (req, res) => {
29+
kpisModel.monthlyIncomeExpenses(response => {
30+
res.status(200).send(response)
31+
}, req.userData.user.user_id)
32+
}
33+
34+
// get last 10 transactions
35+
const getLastTransactions = (req, res) => {
36+
kpisModel.getLastTransactions(response => {
37+
res.status(200).send(response)
38+
}, req.userData.user.user_id)
39+
}
40+
41+
module.exports = {
42+
getTransactionsInfos,
43+
getExpensesByCategory,
44+
getMonthlyIncomeExpenses,
45+
getIncomePerMonth,
46+
getLastTransactions,
47+
}
Lines changed: 97 additions & 82 deletions
Original file line numberDiff line numberDiff line change
@@ -1,32 +1,38 @@
1-
'use strict';
2-
const bcrypt = require('bcrypt');
3-
const moment = require('moment');
4-
const mysql = require('./../util/mysql');
5-
const authHelpers = require('./../util/authHelpers');
1+
'use strict'
2+
const bcrypt = require('bcrypt')
3+
const moment = require('moment')
4+
const mysql = require('./../util/mysql')
5+
const authHelpers = require('./../util/authHelpers')
66

77
// helpers methods
8-
const token = authHelpers.generateTokenSecret();
9-
const expDate = moment().add(12, 'h').format('YYYY-MM-DD HH:mm:ss');
8+
const token = authHelpers.generateTokenSecret()
9+
const expDate = moment()
10+
.add(12, 'h')
11+
.format('YYYY-MM-DD HH:mm:ss')
1012

1113
// register new user
1214
const register = (clbk, data) => {
13-
authHelpers.checkMail(res => {
14-
if (res[0].email > 0) { // this email address already exists
15-
return clbk({
16-
error: true,
17-
status: 4091,
18-
message: 'Un compte avec le même adresse email existe déjà. veuillez ressaisir vos informations',
19-
});
20-
} else if (res[0].username > 0) {
21-
return clbk({
22-
error: true,
23-
status: 4092,
24-
message: 'Le nom d\'utilisateur existe déjà. veuillez ressaisir vos informations',
25-
});
26-
};
27-
// the database does not yet contain this email address, let's continue the insertion
28-
const hash = bcrypt.hashSync(data.password, 10);
29-
const q = `INSERT INTO
15+
authHelpers.checkMail(
16+
res => {
17+
if (res[0].email > 0) {
18+
// this email address already exists
19+
return clbk({
20+
error: true,
21+
status: 4091,
22+
message:
23+
'Un compte avec le même adresse email existe déjà. veuillez ressaisir vos informations',
24+
})
25+
} else if (res[0].username > 0) {
26+
return clbk({
27+
error: true,
28+
status: 4092,
29+
message:
30+
"Le nom d'utilisateur existe déjà. veuillez ressaisir vos informations",
31+
})
32+
}
33+
// the database does not yet contain this email address, let's continue the insertion
34+
const hash = bcrypt.hashSync(data.password, 10)
35+
const q = `INSERT INTO
3036
users (username, email, password, user_verif_token, token_exp_date)
3137
VALUES
3238
(
@@ -35,21 +41,25 @@ const register = (clbk, data) => {
3541
${mysql.escape(hash)},
3642
${mysql.escape(token)},
3743
${mysql.escape(expDate)}
38-
)`;
44+
)`
3945

40-
mysql.query(q, (error, results, fields) => {
41-
if (error) throw error;
42-
results.error = false;
43-
results.data = {
44-
token: token,
45-
email: data.email,
46-
username: data.username
47-
};
48-
results.message = 'vous êtes bien enregistré, veuillez confirmer votre adresse email pour vous connecter';
49-
clbk(results);
50-
});
51-
}, data.email, data.username);
52-
};
46+
mysql.query(q, (error, results, fields) => {
47+
if (error) throw error
48+
results.error = false
49+
// results.data = {
50+
// token: token,
51+
// email: data.email,
52+
// username: data.username
53+
// };
54+
results.message =
55+
'vous êtes bien enregistré, veuillez confirmer votre adresse email pour vous connecter'
56+
clbk(results)
57+
})
58+
},
59+
data.email,
60+
data.username
61+
)
62+
}
5363

5464
// authenticate user
5565
const authenticate = (clbk, data) => {
@@ -64,113 +74,118 @@ const authenticate = (clbk, data) => {
6474
WHERE
6575
email = ${mysql.escape(data.email)}
6676
AND
67-
password = ${mysql.escape(res.password)} GROUP BY user_id`;
77+
password = ${mysql.escape(
78+
res.password
79+
)} GROUP BY user_id`
6880

6981
mysql.query(q, (error, results, fields) => {
70-
if (error) throw error;
82+
if (error) throw error
7183

72-
const tmp = results[0] || results;
84+
const tmp = results[0] || results
7385

74-
res.user = tmp;
75-
res.error = false;
76-
delete res.password;
77-
if (!res.user.is_verified) {
78-
res.message = 'Veuillez valider votre compte avant de vous connecter';
79-
} else {
80-
res.message = 'Vous êtes maintenant connecté';
81-
}
82-
clbk(res);
86+
res.user = tmp
87+
res.error = false
88+
delete res.password
89+
// if (!res.user.is_verified) {
90+
// res.message = 'Veuillez valider votre compte avant de vous connecter';
91+
// } else {
92+
res.message = 'Vous êtes maintenant connecté'
93+
// }
94+
clbk(res)
8395
})
8496
} else {
85-
res.error = true;
86-
delete res.password;
87-
res.message = 'Votre email ou mot de passe est incorrecte';
88-
clbk(res);
97+
res.error = true
98+
delete res.password
99+
res.message = 'Votre email ou mot de passe est incorrecte'
100+
clbk(res)
89101
}
90-
});
102+
})
91103
} else {
92-
clbk(res);
104+
clbk(res)
93105
}
94-
});
95-
};
106+
})
107+
}
96108

97109
const forgotPassword = (clbk, data) => {
98110
authHelpers.getUserInfo(res => {
99111
if (!res.length) {
100112
return clbk({
101113
error: true,
102-
message: 'Cette adresse email n\'existe pas. veuillez verifier que votre email est correcte'
103-
});
114+
message:
115+
"Cette adresse email n'existe pas. veuillez verifier que votre email est correcte",
116+
})
104117
} else {
105118
const q = `UPDATE
106119
users
107120
SET
108121
password_reset_token = ${mysql.escape(token)},
109122
token_exp_date = ${mysql.escape(expDate)}
110123
WHERE
111-
user_id = ${mysql.escape(res[0].user_id)}`;
124+
user_id = ${mysql.escape(res[0].user_id)}`
112125

113126
mysql.query(q, (error, results, fields) => {
114-
if (error) throw error;
127+
if (error) throw error
115128
clbk({
116129
error: false,
117130
data: {
118131
token: token,
119132
username: res[0].username,
120-
email: res[0].email
133+
email: res[0].email,
121134
},
122-
message: `Un mail vient de vous être envoyé à l\'adresse: ${res[0].email}`
123-
});
135+
message: `Un mail vient de vous être envoyé à l\'adresse: ${
136+
res[0].email
137+
}`,
138+
})
124139
})
125140
}
126-
}, data.email);
127-
};
141+
}, data.email)
142+
}
128143

129144
const verifyToken = (clbk, data) => {
130-
const todayDate = moment().format('YYYY-MM-DD HH:mm:ss');
131-
let q;
145+
const todayDate = moment().format('YYYY-MM-DD HH:mm:ss')
146+
let q
132147
if (data.passwordToken) {
133148
q = `SELECT * FROM
134149
users
135150
WHERE
136151
password_reset_token = ${mysql.escape(data.token)}
137152
AND
138-
token_exp_date >= ${mysql.escape(todayDate)}`;
153+
token_exp_date >= ${mysql.escape(todayDate)}`
139154
} else {
140155
q = `SELECT * FROM
141156
users
142157
WHERE
143158
user_verif_token = ${mysql.escape(data.token)}
144159
AND
145-
token_exp_date >= ${mysql.escape(todayDate)}`;
160+
token_exp_date >= ${mysql.escape(todayDate)}`
146161
}
147162

148163
mysql.query(q, (error, results, fields) => {
149-
if (error) throw error;
164+
if (error) throw error
150165

151166
if (!results.length) {
152167
return clbk({
153-
message: 'Le token n\'est pas valide'
154-
});
168+
message: "Le token n'est pas valide",
169+
})
155170
} else {
156171
q = `UPDATE users SET
157172
is_verified = ${mysql.escape(true)},
158173
password_reset_token = ${mysql.escape(null)},
159174
user_verif_token = ${mysql.escape(null)},
160175
token_exp_date = ${mysql.escape(null)}
161-
WHERE user_id = ${mysql.escape(results[0].user_id)}`;
176+
WHERE user_id = ${mysql.escape(results[0].user_id)}`
162177
mysql.query(q, (error, res, fields) => {
163-
if (error) throw error;
164-
res.message = 'Compte activée avec succès';
165-
clbk(res);
166-
});
178+
if (error) throw error
179+
res.message = 'Compte activée avec succès'
180+
clbk(res)
181+
})
167182
}
168-
});
169-
};
183+
})
184+
}
170185

171186
module.exports = {
172187
register,
173188
authenticate,
174189
forgotPassword,
175190
verifyToken,
176-
};
191+
}

0 commit comments

Comments
 (0)