Skip to content

Commit 5c7fb7b

Browse files
ref: user repository
1 parent cc1171b commit 5c7fb7b

2 files changed

Lines changed: 94 additions & 57 deletions

File tree

Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,87 @@
1+
const db = require('../db')
2+
3+
4+
function countUsernamesAndPassword(username, password) {
5+
return new Promise((resolve, reject) => {
6+
db.query('SELECT count(*) as count FROM user WHERE username = ? and password = ?', [username, password], (error, results) => {
7+
if (error) {
8+
console.error('Error al consultar la bdd:', error);
9+
reject('Error al consultar la bdd');
10+
}
11+
resolve(results);
12+
});
13+
});
14+
}
15+
16+
function countUsernames(username){
17+
return new Promise((resolve, reject) => {
18+
db.query('SELECT count(*) as count FROM user WHERE username = ?', [username], (error, results) => {
19+
if (error) {
20+
console.error('Error al consultar la bdd:', error);
21+
reject('Error al consultar la bdd');
22+
}
23+
resolve(results);
24+
});
25+
});
26+
}
27+
28+
function addUser(username, email, password){
29+
return new Promise((resolve, reject) => {
30+
db.query('INSERT INTO user (username, email, password) VALUES (?, ?, ?);', [username, email, password], (error, results) => {
31+
if (error) {
32+
cconsole.error("Error al signup: ", error);
33+
reject('Error al signup');
34+
}
35+
resolve(results);
36+
});
37+
});
38+
}
39+
40+
function getAllUsers(){
41+
return new Promise((resolve, reject) => {
42+
db.query(`SELECT username, email, DATE_FORMAT(create_time, \'%d/%m/%Y %H:%i:%s\') create_time, role_id role
43+
FROM user
44+
ORDER BY create_time DESC;`, (error, results) => {
45+
if (error) {
46+
console.error("Error al consultar la db: ", error);
47+
reject('Error al consultar');
48+
}
49+
resolve(results);
50+
});
51+
});
52+
}
53+
54+
function updateUserRole(username, roleId){
55+
return new Promise((resolve, reject) => {
56+
db.query(`UPDATE user SET role_id = ? WHERE username = ?;`, [roleId, username], (error, results) => {
57+
if (error) {
58+
console.error("Error al actualitzar el rol: ", error);
59+
resolve(false);
60+
}
61+
resolve(results.affectedRows > 0);
62+
});
63+
});
64+
}
65+
66+
function getRoleFromUsername(username){
67+
return new Promise((resolve, reject) => {
68+
db.query('SELECT role_id id FROM user WHERE username = ?', [username], (error, results) => {
69+
if (error) {
70+
console.error('Error al consultar la bdd:', error);
71+
reject('Error al consultar la bdd');
72+
}
73+
resolve(results[0].id);
74+
});
75+
});
76+
}
77+
78+
79+
80+
module.exports = {
81+
countUsernamesAndPassword,
82+
countUsernames,
83+
addUser,
84+
getAllUsers,
85+
updateUserRole,
86+
getRoleFromUsername
87+
}

web-server/server/service/user.js

Lines changed: 7 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
const db = require('../db');
1+
const userRepository = require('../repository/user')
22
const jwt = require('../security/jwt')
33
const adminUser = 'admin';
44
const adminPass = process.env.ADMIN_PW || 'admin';
@@ -10,15 +10,7 @@ function _computeHash(string, salt) {
1010
}
1111

1212
async function _goodLoginCredentials(username, password) {
13-
const results = await new Promise((resolve, reject) => {
14-
db.query('SELECT count(*) as count FROM user WHERE username = ? and password = ?', [username, _computeHash(password, username)], (error, results) => {
15-
if (error) {
16-
console.error('Error al consultar la bdd:', error);
17-
reject('Error al consultar la bdd');
18-
}
19-
resolve(results);
20-
});
21-
});
13+
const results = await userRepository.countUsernamesAndPassword(username,_computeHash(password, username));
2214
return results[0].count > 0;
2315
}
2416

@@ -34,45 +26,19 @@ module.exports = {
3426
//Existeix usuari
3527
existeixUsuari: async function (username) {
3628
if (username == adminUser) return true; //default admin user
37-
const results = await new Promise((resolve, reject) => {
38-
db.query('SELECT count(*) as count FROM user WHERE username = ?', [username], (error, results) => {
39-
if (error) {
40-
console.error('Error al consultar la bdd:', error);
41-
reject('Error al consultar la bdd');
42-
}
43-
resolve(results);
44-
});
45-
});
29+
const results = await userRepository.countUsernames(username);
4630
return results[0].count > 0;
4731
},
4832

4933
//Registrar usuari
5034
registrarUsuari: async function (username, password, email) {
51-
const results = await new Promise((resolve, reject) => {
52-
db.query('INSERT INTO user (username, email, password) VALUES (?, ?, ?);', [username, email, _computeHash(password, username)], (error, results) => {
53-
if (error) {
54-
cconsole.error("Error al signup: ", error);
55-
reject('Error al signup');
56-
}
57-
resolve(results);
58-
});
59-
});
35+
const results = await userRepository.addUser(username, email, _computeHash(password, username));
6036
return results.affectedRows == 1;
6137
},
6238

6339
//Obtenció llistat usuaris
6440
getUsers: async function () {
65-
const results = await new Promise((resolve, reject) => {
66-
db.query(`SELECT username, email, DATE_FORMAT(create_time, \'%d/%m/%Y %H:%i:%s\') create_time, role_id role
67-
FROM user
68-
ORDER BY create_time DESC;`, (error, results) => {
69-
if (error) {
70-
console.error("Error al consultar la db: ", error);
71-
reject('Error al consultar');
72-
}
73-
resolve(results);
74-
});
75-
});
41+
const results = await userRepository.getAllUsers();
7642

7743
const users = results.map(result => ({
7844
username: result.username,
@@ -85,28 +51,12 @@ module.exports = {
8551

8652
//Update rol
8753
updateUserRole: async function (username, roleid) {
88-
return await new Promise((resolve, reject) => {
89-
db.query(`UPDATE user SET role_id = ? WHERE username = ?;`, [roleid, username], (error, results) => {
90-
if (error) {
91-
console.error("Error al actualitzar el rol: ", error);
92-
resolve(false);
93-
}
94-
resolve(results.affectedRows > 0);
95-
});
96-
});
54+
return await userRepository.updateUserRole(username, roleid);
9755
},
9856

9957
//Obté el rol d'un usuari
10058
getUserRole: async function (username) {
10159
if (username=='admin') return null;
102-
return await new Promise((resolve, reject) => {
103-
db.query('SELECT role_id id FROM user WHERE username = ?', [username], (error, results) => {
104-
if (error) {
105-
console.error('Error al consultar la bdd:', error);
106-
reject('Error al consultar la bdd');
107-
}
108-
resolve(results[0].id);
109-
});
110-
});
60+
return await userRepository.getRoleFromUsername(username);
11161
},
11262
}

0 commit comments

Comments
 (0)