From 012f8e94d88310ac74806727de56617840ea84e3 Mon Sep 17 00:00:00 2001
From: hawkspar <quentin.chevalier@polytechnique.edu>
Date: Sat, 6 Oct 2018 12:44:44 +0200
Subject: [PATCH] bcrypt fix

---
 src/graphql/connectors/authentifiers.js |  4 ++--
 src/ldap/admins.js                      | 21 +++++++--------------
 src/ldap/users.js                       |  6 +++---
 src/ldap/utilities.js                   |  2 +-
 4 files changed, 13 insertions(+), 20 deletions(-)

diff --git a/src/graphql/connectors/authentifiers.js b/src/graphql/connectors/authentifiers.js
index 5e913bc..e723ce2 100644
--- a/src/graphql/connectors/authentifiers.js
+++ b/src/graphql/connectors/authentifiers.js
@@ -7,8 +7,8 @@ import knex from '../../../db/knex_router';
 import * as connectors from './connectors.js';
 import * as selectors from './selectors';
 import * as list_selectors from './list_selectors';
-import {Open, User as LDAPOpen, LDAPUser}  from '../../ldap/users.js';
-import {Admin, SuperAdmin as LDAPAdmin, LDAPSuperAdmin} from '../../ldap/admins.js';
+import {Open as LDAPOpen, User as LDAPUser}  from '../../ldap/users.js';
+import {Admin as LDAPAdmin, SuperAdmin as LDAPSuperAdmin} from '../../ldap/admins.js';
 
 
 function User(user, ldap_access){
diff --git a/src/ldap/admins.js b/src/ldap/admins.js
index 4f92825..37c906e 100644
--- a/src/ldap/admins.js
+++ b/src/ldap/admins.js
@@ -4,12 +4,11 @@
  * @author hawkspar
  */
 
-import LDAP from './basics';
-import Tests from './utilities';
-import User from './users';
+import LDAP from './basics.js';
+import Tests from './utilities.js';
+import User from './users.js';
 // Essentiels pour le fichier de config
 import path from 'path';
-import bcrypt from 'bcrypt';
 import fs from 'fs';
 
 // Point central ; tous les champs de la BDD sont 'cachés' dans config.json et pas visibles directement
@@ -276,7 +275,7 @@ class SuperAdmin extends Admin {
      * @arg {string} data[lastName] - Nom
      * @arg {string} data[nickname] [] - Surnom
      * @arg {string} data[birthdate] - Date d'anniversaire au format annee-mois-jour
-     * @arg {string} data[password] - Mot de passe
+     * @arg {string} data[password] - Mot de passe (doit être généré en amont)
      * @arg {string} data[promotion] - Simple année d'entrée école (pas d'X)
      * @arg {string} data[mail] - Courriel supposé valide
      * @arg {string} data[phone] - String du numéro de portable
@@ -329,15 +328,9 @@ class SuperAdmin extends Admin {
         // Création d'un nom complet lisible
         vals3[config.user['fullName']]=data['givenName']+' '+data['lastName'].toUpperCase();
 
-        try {
-            // Génération d'un hash péchu avec 10 itérations de salt
-            bcrypt.hash(data['password'], 10, (err, hash) => {
-                vals3[config.user['password']] = "{CRYPT}"+hash;
-            });
-        }
-        catch(err) {
-            throw "Erreur lors de la génération d'un mot de passe aléatoire pour le nouvel utilisateur.";
-        }
+        // Configuration du mot de passe utilisateur
+        // Le préfixe {CRYPT} signifie que le mdp est hashé dans OpenLDAP voir : https://www.openldap.org/doc/admin24/security.html 
+        vals3[config.user['password']] = "{CRYPT}"+data['password'];
         
         // Ecriture d'un surnom s'il y a lieu
         if ((data['nickname']!=undefined) && (data['nickname']!='')) {
diff --git a/src/ldap/users.js b/src/ldap/users.js
index 017065a..7dde95a 100644
--- a/src/ldap/users.js
+++ b/src/ldap/users.js
@@ -4,9 +4,9 @@
  * @author hawkspar
  */
 
-import LDAP from './basics';
-import {SmartSearch, Tests} from './utilities';
-import {Admin, SuperAdmin} from './admins';
+import LDAP from './basics.js';
+import {SmartSearch, Tests} from './utilities.js';
+import {Admin, SuperAdmin} from './admins.js';
 // Essentiels pour le fichier de config
 import path from 'path';
 import fs from 'fs';
diff --git a/src/ldap/utilities.js b/src/ldap/utilities.js
index 2c1e303..af47db1 100644
--- a/src/ldap/utilities.js
+++ b/src/ldap/utilities.js
@@ -4,7 +4,7 @@
  * @author hawkspar
  */
 
-import LDAP from './basics';
+import LDAP from './basics.js';
 // Essentiels pour le fichier de config
 import path from 'path';
 import fs from 'fs';
-- 
GitLab