· 9 years ago · Feb 26, 2017, 04:10 PM
1exports.registration = function(username,password,apiKey,role,req,res)
2{
3 var genRandomString = function(length){
4 return crypto.randomBytes(Math.ceil(length/2))
5 .toString('hex') /** convert to hexadecimal format */
6 .slice(0,length); /** return required number of characters */
7 };
8
9 var sha512 = function(password, salt){
10 var hash = crypto.createHmac('sha512', salt); /** Hashing algorithm sha512 */
11 hash.update(password);
12 var value = hash.digest('hex');
13 return {
14 salt:salt,
15 passwordHash:value
16 };
17 };
18
19 function saltHashPassword(user,userpassword) {
20 var salt = genRandomString(16); /** Gives us salt of length 16 */
21 var secretKey = genRandomString(16);
22 var secretKeyData = sha512(secretKey, genRandomString(16));
23 var passwordData = sha512(userpassword, salt);
24
25 registerMongo(user,passwordData,apiKey,secretKey,secretKeyData,role)
26
27 }
28
29 function registerMongo(user,password,apiKey,secretKey,secretKeyData,role)
30 {
31 MongoClient.connect("mongodb://localhost/bidule", function(error, db) {
32 if (error) throw error;
33 console.log("Recherche de l'utilisateur " + user + " dans la base...");
34 var query = {username : user};
35
36 db.collection("user").find(
37 query).toArray(function (error, results) {
38 if(results.length < 1)
39 {
40 db.collection("client").find({apiKey : apiKey}).toArray(function (error, results) {
41 if(results.length > 0)
42 {
43 var client = parseInt(results[0].client);
44
45
46 db.collection("user").insert({username : user, password : password, try : 0, nbClient : client, role : role,apiKey : apiKey, secretKey : secretKeyData});
47 db.close();
48 console.log("Compte créé avec succès");
49 res.render('registration',{message : "Compte créé avec succès, Voici votre clé secrète, veuillez la conserver précisieusement : " + secretKey});
50 }
51 else
52 {
53 db.close();
54 console.log("La clé d'Api n'existe pas dans la base");
55 res.render('registration',{message : "La clé d'Api n'existe pas dans la base"});
56 }
57 });
58 }
59 else
60 {
61 db.close();
62 console.log("L'utilisateur existe déja, allez niquer votre race, cordialement ;)");
63 res.render('registration',{message : "L'utilisateur existe déja, allez niquer votre race, cordialement ;)"});
64 }
65 });
66 });
67 }
68
69 saltHashPassword(username,password);
70
71}