server.js 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151
  1. /**
  2. * ATTENTION le fichier sandboxApp.js est assez complexe.
  3. * Il sert à initialiser l'appli permettant d'avoir l'éditeur HTML&JavaScript en ligne
  4. */
  5. var app = require('./sandboxApp');
  6. /*-------------------------------------------------------*
  7. | Déclaration de gestionnaires pour les exemples AJAX
  8. *-------------------------------------------------------*
  9. |
  10. */
  11. // 1er exemple: envoie du HTML généré dynamiquement.
  12. // On utilise app.get pour attacher un gestionnaire à l'URL /ajax-example
  13. // uniquement avec la méthode GET
  14. app.get('/ajax-example', function(req, res) {
  15. var date = new Date();
  16. var exampleHtml = '<p>Un peu de HTML retourné par le serveur.</p>' +
  17. '<p><em>Généré le: ' + date.toString() + '</em></p>';
  18. res.send(exampleHtml);
  19. });
  20. // 2ème exemple : envoi formulaire par méthode GET
  21. // Notez bien d'où on extrait les paramètres passé par le client (req.query)
  22. app.get('/ajax-form-get', function(req, res) {
  23. var name = req.query.name;
  24. var birthdate = req.query.birthdate;
  25. var exampleHtml = '<p>Salutations, <em>' + name +
  26. '</em>, né(e) le <em>' + birthdate + '</em>.</p>';
  27. res.send(exampleHtml);
  28. });
  29. // 3ème exemple : envoi formulaire par méthode POST
  30. // Ici les paramètres viennent de req.body
  31. app.post('/ajax-form-post', function(req, res) {
  32. var title = req.body.title;
  33. var text = req.body.text;
  34. var exampleHtml = '<h2>' + title + '</h2>' +
  35. '<p>' + text + '</p>';
  36. res.send(exampleHtml);
  37. });
  38. /**
  39. * Création d'un tableau vide où on va stocker les utilisateurs
  40. */
  41. var userList = [];
  42. var userId = 1;
  43. /**
  44. * Création d'un utilisateur : on le stocke dans le tableau userList
  45. * ATTENTION ! Dans la "vraie vie", on utiliserait une base de données !
  46. */
  47. function createNewUser(user) {
  48. // On vérifie que les données de l'utilisateur sont renseignées
  49. // Si non, on renvoie false
  50. if(! user || ! user.username || ! user.email || ! user.password) {
  51. return false;
  52. }
  53. // L'étape de vérification a réussi, on insère l'utilisateur dans le tableau
  54. // On crée un faux "id" pour simuler une insertion SQL. En SQL les "id" sont
  55. // incrémentés à chaque insertion. On simule cela en incrémentant un compteur
  56. // "userId" à chaque insertion
  57. userList.push({
  58. id: userId++,
  59. username: user.username,
  60. email: user.email,
  61. password: user.password
  62. });
  63. return true;
  64. }
  65. app.post('/login', function(req, res) {
  66. // Récupérer email et password
  67. var identifiants = req.body;
  68. if(! identifiants.email || ! identifiants.password) {
  69. return res.status(400).json({
  70. message: 'paramètre requis manquant'
  71. });
  72. }
  73. for(var i = 0 ; i < userList.length ; i++) {
  74. var user = userList[i];
  75. if(identifiants.email == user.email) {
  76. if(identifiants.password == user.password) {
  77. return res.json({
  78. message: 'Vous avez été identifié',
  79. });
  80. }
  81. else {
  82. return res.status(401).json({
  83. message: 'Mot de passe incorrect'
  84. });
  85. }
  86. }
  87. }
  88. return res.status(404).json({
  89. message: 'Utilisateur non trouvé'
  90. });
  91. });
  92. /**
  93. * Ce code va gérer la requête POST vers l'URL /register de notre micro-serveur
  94. */
  95. app.post('/register', function(req, res) {
  96. // Les données envoyées par le client (navigateur) sont dans la propriété "body"
  97. // de l'objet req (pour request)
  98. var user = req.body;
  99. // createNewUser() va nous renvoyer true ou false
  100. var success = createNewUser(user);
  101. if(success) {
  102. // Envoyer un message sur la console du serveur
  103. console.log('Utilisateur enregistré: ', user, '\nListe des utilisateurs', userList);
  104. res.json({ user: user });
  105. }
  106. else {
  107. res.status(400).json({ error: 'Champs manquants dans la requête' });
  108. }
  109. });
  110. app.get('/username-check', function(req, res) {
  111. var username = req.query.username;
  112. for(u = 0 ; u < userList.length ; u++) {
  113. if(username === userList[u].username) {
  114. return res.json({ success: false });
  115. }
  116. }
  117. res.json({ success: true });
  118. });
  119. console.log('Le serveur écoute sur le port 3000. Laissez cette console ouverte !')
  120. app.listen(3000);