From 7350f332b5610272087f00e5c940840dc9936196 Mon Sep 17 00:00:00 2001
From: hawkspar <quentin.chevalier@polytechnique.edu>
Date: Sat, 2 Mar 2019 11:03:35 +0100
Subject: [PATCH] url photos

---
 README.md                   | 20 ++++++++++----------
 ldap_config.json            |  4 ++--
 src/ldap/internal/config.ts | 36 +++++++++++++++++++++---------------
 3 files changed, 33 insertions(+), 27 deletions(-)

diff --git a/README.md b/README.md
index a6b378e..03e0d1e 100644
--- a/README.md
+++ b/README.md
@@ -131,16 +131,16 @@ L'API est conçue pour êtes modulaire et pour fonctionner dans plusieurs enviro
 
 On peut donc le configurer via des fichiers ou des variables d'environnement. En deux mots :
 
-* jsdoc_config.json, Dockerfile, .dockerignore, .gitignore, eslintignore, webpack.config.js : transparents
-* ldap_config.json : noms champs du LDAP
-* ldap_credentials.json : paramètres de connexion secrets au LDAP
-* .estlintrc.json : ESLINT ou à quel point cancériser le développeur
-* .gitattributes : terminaison de fichiers
-* .gitlab-ci.yml : pipeline gitlab
-* package.json et package-lock.json : gestion des dépendances
-* tsconfig : configure la compilation de fichiers Typescript en Javascript
-* tslint.json : configure tslint, utilisé plutôt que tsc dans le projet final
-* .env : variables d'environnement, ports...
+* [`jsdoc_config.json`](../jsdoc_config.json), [`Dockerfile`](../Dockerfile), [`.dockerignore`](../.dockerignore), [`.gitignore`](../.gitignore), [`.eslintignore`](../.eslintignore), [`webpack.config.js`](../webpack.config.js) : transparents
+* [`ldap_config.json`](../ldap_config.json) : noms champs du LDAP
+* [`ldap_credentials.json`](../ldap_credentials.json) : paramètres de connexion secrets au LDAP
+* [`.estlintrc.json`](../.eslintrc.json) : ESLINT ou à quel point cancériser le développeur
+* [`.gitattributes`](../.gitattributes) : terminaison de fichiers
+* [`.gitlab-ci.yml`](../.gitlab-ci.yml) : pipeline gitlab
+* [`package.json`](../package.json) et [`package-lock.json`](../package-lock.json) : gestion des dépendances usuel
+* [`tsconfig.json`](../tsconfig.json) : configure la compilation de fichiers Typescript en Javascript
+* [`tslint.json`](../tslint.json) : configure tslint, utilisé plutôt que tsc dans le projet final
+* [`.env`](../.env) : définit les variables d'environnement et ports utilisés...
 
 Certains de ces fichiers de configurations ont une version "distribution" en "_dist" qui permet de les partager (le reste du temps ils sont dans le .gitignore), quitte à les renommer et à les modifier en local.
 
diff --git a/ldap_config.json b/ldap_config.json
index d981c3f..38d2a9f 100644
--- a/ldap_config.json
+++ b/ldap_config.json
@@ -21,7 +21,7 @@
 		"lastName": "sn",
 		"nickname": "pseudonym",
 		"gender": "gender",
-		"photo": "jpegPhoto",
+		"photo": "urlPhoto",
 		"phone": "telephoneNumber",
 		"adress": "roomNumber",
 		"mail": "email",
@@ -51,7 +51,7 @@
 		"adress":"cn",
 		"idNumber": "gidNumber",
 		"password": "userPassword",
-		"logo": "jpegPhoto",
+		"logo": "urlPhoto",
 		"classes": "objectClass",
 		"childs": "child",
 		"parents": "parent"
diff --git a/src/ldap/internal/config.ts b/src/ldap/internal/config.ts
index 39ba4f6..023fe9d 100644
--- a/src/ldap/internal/config.ts
+++ b/src/ldap/internal/config.ts
@@ -37,45 +37,51 @@ export const credentialsLdapConfig = JSON.parse(fs.readFileSync(path_credentials
 export const categories = ["admins","speakers","members","followers"];
 
 /**
- * @class userData
- * @desc Interface avec toutes les données extractables pour un utilisateur.
+ * @class partUserData
+ * @desc Interface avec les données visibles au mponde extérieur.
  * @var {string?} uid - Identifiant utilisateur
- * @var {string?} password - Mot de passe généré en amont (utilisé seulement à l'initialialisation, pas stocké bien sûr)
  * @var {string?} givenName - Prénom
  * @var {string?} lastName - Nom
- * @var {string?} nickname - Surnom
  * @var {string?} gender - Sexe
  * @var {string?} photo - Bytestring de la photo de l'utilisateur
- * @var {string?} phone - Numéro(s) de téléphone
  * @var {string?} address - Adresse(s)
- * @var {string?} mail - Adresse(s) courriel
- * @var {string?} birthdate - Date d'anniversaire
- * @var {string?} nationality - Nationalité d'origine
  * @var {string[]?} admins - Liste des gid (group id, inclus section sportive, binet, PA...) dont l'utilisateur est admin ; pas forcément sous-liste de members
  * @var {string[]?} speakers - Liste des gid dont l'utilisateur est porte-parole ; pas forcément sous-liste de members
  * @var {string[]?} members - Liste des gid dont l'utilisateur est membre
  * @var {string[]?} followers - Liste des gid dont l'utilisateur est sympathisant
  * @memberof LDAP
  */
-export class userData {
+export class partUserData {
     uid: string;
-    password?: string;
     givenName: string;
     lastName: string;
-    nickname?: string;
     gender?: 'M'|'F'|'U';
     photo?: string;
-    phone?: string;
     address?: string;
-    mail?: string;
-    birthdate: string;
-    nationality?: string;
     admins?: string[];
     speakers?: string[];
     members?: string[];
     followers?: string[];
 }
 
+/**
+ * @class userData
+ * @desc Interface avec toutes les données extractables pour un utilisateur.
+ * @var {string?} nickname - Surnom
+ * @var {string?} phone - Numéro(s) de téléphone
+ * @var {string?} mail - Adresse(s) courriel
+ * @var {string?} birthdate - Date d'anniversaire
+ * @var {string?} nationality - Nationalité d'origine
+ * @memberof LDAP
+ */
+export class userData extends partUserData {
+    nickname?: string;
+    phone?: string;
+    mail?: string;
+    birthdate: string;
+    nationality?: string;
+}
+
 /**
  * @class groupData
  * @var {string} gid - Identifiant du groupe
-- 
GitLab