﻿1
00:00:01,030 --> 00:00:02,580
‫Instructeur : Bon retour.

2
00:00:02,580 --> 00:00:05,470
‫Ainsi, l'authentification et l'autorisation concernent uniquement les utilisateurs

3
00:00:05,470 --> 00:00:07,680
‫qui s'inscrivent, se connectent et accèdent

4
00:00:07,680 --> 00:00:11,040
‫aux pages ou aux itinéraires, que nous leur accordons

5
00:00:11,040 --> 00:00:13,190
‫la permission de le faire.

6
00:00:13,190 --> 00:00:15,570
‫Donc, c'est vraiment une question d'utilisateurs.

7
00:00:15,570 --> 00:00:18,890
‫Et, nous devons donc commencer par implémenter le modèle utilisateur dans cette

8
00:00:18,890 --> 00:00:21,260
‫leçon, afin que dans la suivante, nous

9
00:00:21,260 --> 00:00:24,383
‫puissions ensuite créer de nouveaux utilisateurs dans notre base de données.

10
00:00:25,990 --> 00:00:28,710
‫Donc, de retour dans notre application, allons de

11
00:00:28,710 --> 00:00:31,740
‫l'avant et créons un nouveau fichier pour le modèle utilisateur.

12
00:00:31,740 --> 00:00:34,373
‫Alors bien sûr dans notre dossier modèle,

13
00:00:38,571 --> 00:00:40,890
‫New File, userModel. js.

14
00:00:40,890 --> 00:00:42,610
‫Et comme avant, nous

15
00:00:42,610 --> 00:00:44,563
‫commençons par exiger le package Mongoose.

16
00:00:52,430 --> 00:00:53,510
‫D'accord.

17
00:00:53,510 --> 00:00:55,920
‫Et maintenant, tout ce que nous avons à faire est de créer un

18
00:00:55,920 --> 00:00:57,890
‫schéma, puis de créer un modèle à partir de celui-ci.

19
00:00:57,890 --> 00:00:59,670
‫Donc, tout comme nous l'avons fait avec les

20
00:00:59,670 --> 00:01:01,750
‫tournées, nous allons le faire ici maintenant avec les utilisateurs.

21
00:01:01,750 --> 00:01:04,140
‫Et en fait, puisque nous l'avons déjà fait

22
00:01:04,140 --> 00:01:07,660
‫avant, je veux laisser celui-ci comme un défi pour vous, d'accord ?

23
00:01:07,660 --> 00:01:10,963
‫Je veux donc que vous créiez un schéma avec cinq champs.

24
00:01:12,020 --> 00:01:14,713
‫Alors, nom, email, puis une photo

25
00:01:16,660 --> 00:01:19,380
‫; qui ne sera qu'une chaîne, comme

26
00:01:19,380 --> 00:01:21,063
‫dans nos tournées.

27
00:01:22,230 --> 00:01:24,223
‫Je veux aussi un champ pour un mot de

28
00:01:25,300 --> 00:01:27,283
‫passe et pour un mot de passeConfirmer.

29
00:01:30,230 --> 00:01:31,063
‫D'accord?

30
00:01:31,063 --> 00:01:32,330
‫Et un peu plus

31
00:01:32,330 --> 00:01:34,190
‫à ce sujet plus tard lorsque je résoudrai

32
00:01:34,190 --> 00:01:36,480
‫ce défi pour vous, mais pour l'instant, je veux vraiment

33
00:01:36,480 --> 00:01:38,540
‫que vous vous entraîniez à créer ce schéma par

34
00:01:38,540 --> 00:01:41,770
‫vous-même, puis à créer également un modèle à partir de ce schéma, d'accord ?

35
00:01:41,770 --> 00:01:44,090
‫Et puis à la fin, vous pouvez également l'exporter.

36
00:01:44,090 --> 00:01:46,350
‫Alors s'il vous plaît, mettez la vidéo en pause à

37
00:01:46,350 --> 00:01:48,250
‫ce stade, et je reviendrai dans une seconde

38
00:01:48,250 --> 00:01:49,973
‫ici pour résoudre ce défi pour vous.

39
00:01:52,590 --> 00:01:53,480
‫D'accord.

40
00:01:53,480 --> 00:01:55,030
‫J'espère que vous avez réussi ce défi.

41
00:01:55,030 --> 00:01:56,690
‫Et donc je vais maintenant le résoudre.

42
00:01:56,690 --> 00:01:59,330
‫Et ne vous inquiétez pas si ce n'est pas exactement le même.

43
00:01:59,330 --> 00:02:02,150
‫Vous pouvez simplement l'adapter au fur et à mesure que nous parcourons cette vidéo.

44
00:02:02,150 --> 00:02:03,563
‫Donc, grâce à cette solution.

45
00:02:05,430 --> 00:02:07,730
‫Donc, je vais appeler celui-ci le userSchema.

46
00:02:09,310 --> 00:02:13,107
‫Et comme avant, nous créons une nouvelle mangouste. Schéma.

47
00:02:15,270 --> 00:02:18,010
‫Et puis dans cela, nous passons notre objet de

48
00:02:18,010 --> 00:02:20,410
‫schéma et commençons à définir nos champs.

49
00:02:20,410 --> 00:02:24,773
‫Donc, je veux un nom avec le type, bien sûr, de String.

50
00:02:28,430 --> 00:02:31,023
‫Et je veux aussi que ce soit obligatoire.

51
00:02:32,440 --> 00:02:34,310
‫Ainsi, chaque fois qu'un nouvel utilisateur

52
00:02:34,310 --> 00:02:37,113
‫est créé, il doit nous dire son nom en gros.

53
00:02:37,980 --> 00:02:40,623
‫Donc, définissons également un message d'erreur ici.

54
00:02:41,617 --> 00:02:46,960
‫« S'il vous plaît, dites-nous votre nom ! " D'accord?

55
00:02:46,960 --> 00:02:48,400
‫C'est donc le nom.

56
00:02:48,400 --> 00:02:50,373
‫Ensuite, nous voulons l'e-mail.

57
00:02:51,680 --> 00:02:52,630
‫D'accord?

58
00:02:52,630 --> 00:02:55,310
‫Et donc cela sera utilisé pour que l'utilisateur se connecte

59
00:02:55,310 --> 00:02:58,630
‫et nous ne créerons pas de propriété de nom d'utilisateur ici, d'accord ?

60
00:02:58,630 --> 00:03:01,920
‫Ainsi, dans certaines applications, vous verrez un nom d'utilisateur

61
00:03:01,920 --> 00:03:04,500
‫utilisé, mais dans ce cas, nous voulons

62
00:03:04,500 --> 00:03:08,030
‫rester simple ici et simplement identifier les utilisateurs par e-mail.

63
00:03:08,030 --> 00:03:10,803
‫Et encore une fois, c'est du type String.

64
00:03:13,150 --> 00:03:14,873
‫C'est aussi un champ obligatoire.

65
00:03:22,030 --> 00:03:23,883
‫Donc juste un message d'erreur à nouveau.

66
00:03:24,780 --> 00:03:28,873
‫Ensuite, je veux que les e-mails soient également uniques, d'accord ?

67
00:03:30,360 --> 00:03:33,320
‫Donc, unique défini sur true.

68
00:03:33,320 --> 00:03:35,960
‫Et c'est essentiellement parce que cet e-mail

69
00:03:35,960 --> 00:03:39,450
‫est, bien sûr, l'identifiant unique de chaque utilisateur, d'accord ?

70
00:03:39,450 --> 00:03:42,920
‫Désormais, par défaut, les e-mails devraient être uniques, n'est-ce pas ?

71
00:03:42,920 --> 00:03:45,570
‫Mais soyons sûrs à 100 % ici qu'il

72
00:03:45,570 --> 00:03:47,000
‫n'y aura pas

73
00:03:47,000 --> 00:03:49,740
‫de comptes avec la même adresse e-mail, d'accord ?

74
00:03:49,740 --> 00:03:52,770
‫Maintenant, nous pouvons également spécifier une autre option de type de schéma

75
00:03:52,770 --> 00:03:54,373
‫ici, qui est en minuscule.

76
00:03:56,150 --> 00:03:57,100
‫C'est donc un nouveau.

77
00:03:57,100 --> 00:03:58,410
‫Et ce n'est pas un validateur.

78
00:03:58,410 --> 00:04:00,410
‫Tout ce que ça va

79
00:04:00,410 --> 00:04:03,150
‫faire, c'est de transformer l'e-mail en minuscules.

80
00:04:03,150 --> 00:04:08,140
‫Donc, si quelqu'un dit comme Jonas@Gmail ou autre, alors

81
00:04:08,140 --> 00:04:11,260
‫tout sera converti en minuscules.

82
00:04:11,260 --> 00:04:12,210
‫D'accord?

83
00:04:12,210 --> 00:04:15,380
‫Et maintenant, enfin, nous voulons également valider

84
00:04:15,380 --> 00:04:16,780
‫réellement l'adresse e-mail.

85
00:04:16,780 --> 00:04:19,300
‫Donc, en gros, tester si

86
00:04:19,300 --> 00:04:23,070
‫l'e-mail fourni correspond au format d'e-mail commun, d'accord ?

87
00:04:23,070 --> 00:04:27,710
‫Donc par exemple encore jonas@gmail. com serait un e-mail valide,

88
00:04:27,710 --> 00:04:29,250
‫mais par exemple,

89
00:04:29,250 --> 00:04:32,270
‫comme celui-ci, il ne le serait pas.

90
00:04:32,270 --> 00:04:33,860
‫Ou comme ça.

91
00:04:33,860 --> 00:04:36,290
‫Et donc pour cela, nous devons créer notre

92
00:04:36,290 --> 00:04:37,603
‫propre validateur essentiellement.

93
00:04:38,650 --> 00:04:41,350
‫Maintenant, nous n'allons pas créer notre propre validateur pour

94
00:04:41,350 --> 00:04:44,480
‫cela, mais à la place, nous allons utiliser ce package de validation

95
00:04:44,480 --> 00:04:47,730
‫que je vous ai déjà montré à partir de npm, n'est-ce pas ?

96
00:04:47,730 --> 00:04:50,520
‫Alors rappelez-vous ici dans le tourModel, je vous ai en

97
00:04:50,520 --> 00:04:52,770
‫fait montré ce module ici, mais nous

98
00:04:52,770 --> 00:04:54,620
‫ne l'avons finalement pas utilisé

99
00:04:54,620 --> 00:04:57,270
‫car il n'était pas vraiment utile dans notre cas.

100
00:04:57,270 --> 00:04:59,810
‫Mais maintenant, ça va être très utile,

101
00:04:59,810 --> 00:05:02,933
‫et donc je vais de l'avant et je le copie

102
00:05:05,620 --> 00:05:09,180
‫ici, d'accord, afin que nous puissions maintenant l'utiliser directement dans notre schéma.

103
00:05:09,180 --> 00:05:12,653
‫Donc, pour créer maintenant notre validateur personnalisé, nous

104
00:05:13,730 --> 00:05:16,550
‫utilisons valider, vous vous souvenez ?

105
00:05:16,550 --> 00:05:18,870
‫Et puis on passe dans la fonction

106
00:05:18,870 --> 00:05:21,380
‫message anti-erreur, tout comme avec nos autres validateurs.

107
00:05:21,380 --> 00:05:23,980
‫Et pour vérifier si un

108
00:05:23,980 --> 00:05:28,330
‫email est valide, il suffit d'appeler la méthode isEmail sur

109
00:05:29,810 --> 00:05:32,030
‫l'objet validateur, d'accord ?

110
00:05:32,030 --> 00:05:34,380
‫Cela vient donc, encore une fois, de la documentation

111
00:05:34,380 --> 00:05:38,160
‫que je vous ai déjà montrée lorsque nous avons utilisé ce module pour la première fois.

112
00:05:38,160 --> 00:05:40,600
‫Et donc chaque fois que vous avez besoin d'un

113
00:05:40,600 --> 00:05:42,960
‫validateur personnalisé, vous pouvez aller de l'avant et

114
00:05:42,960 --> 00:05:46,540
‫vérifier la documentation et trouver s'il existe une bonne fonction pour votre cas d'utilisation.

115
00:05:46,540 --> 00:05:49,340
‫Donc dans ce cas, c'est le validateur. E-mail, et

116
00:05:49,340 --> 00:05:51,230
‫notre message d'erreur sera

117
00:05:55,174 --> 00:05:57,540
‫"un e-mail valide", d'accord ?

118
00:05:57,540 --> 00:05:59,800
‫Et dans la prochaine vidéo, quand on va créer des

119
00:05:59,800 --> 00:06:02,980
‫utilisateurs à partir de ce modèle, on va bien sûr tester tout ça

120
00:06:02,980 --> 00:06:04,463
‫pour voir si ça marche.

121
00:06:05,470 --> 00:06:08,420
‫Ensuite, je souhaite également que l'utilisateur

122
00:06:08,420 --> 00:06:11,210
‫puisse télécharger une photo.

123
00:06:11,210 --> 00:06:13,490
‫Et nous allons stocker cela simplement dans une chaîne.

124
00:06:13,490 --> 00:06:15,600
‫Mais ce n'est pas obligatoire, d'accord ?

125
00:06:15,600 --> 00:06:20,030
‫Ainsi, une photo est généralement facultative dans la plupart des applications Web, et nous allons

126
00:06:20,030 --> 00:06:22,050
‫donc faire la même chose ici.

127
00:06:22,050 --> 00:06:24,420
‫Donc, si l'utilisateur souhaite télécharger une

128
00:06:24,420 --> 00:06:27,580
‫photo, celle-ci sera stockée quelque part dans notre système de

129
00:06:27,580 --> 00:06:30,380
‫fichiers et le chemin d'accès à cette photo sera

130
00:06:30,380 --> 00:06:32,910
‫alors stocké dans ce champ photo, d'accord ?

131
00:06:32,910 --> 00:06:34,740
‫C'est donc similaire à ce que nous avions ici.

132
00:06:34,740 --> 00:06:36,373
‫Rappelez-vous, nous avons,

133
00:06:38,490 --> 00:06:40,340
‫oui, nous avons imageCover,

134
00:06:40,340 --> 00:06:42,850
‫et c'est donc aussi simplement le chemin

135
00:06:42,850 --> 00:06:45,100
‫de l'endroit dans notre système de

136
00:06:45,100 --> 00:06:47,343
‫fichiers où l'image est réellement téléchargée.

137
00:06:49,020 --> 00:06:50,300
‫D'accord?

138
00:06:50,300 --> 00:06:51,570
‫Alors c'est photo.

139
00:06:51,570 --> 00:06:52,973
‫Et maintenant, nous avons besoin d'un mot de passe.

140
00:06:57,065 --> 00:07:01,120
‫Et le mot de passe doit être, encore une fois, du type String.

141
00:07:02,410 --> 00:07:03,963
‫Ce n'est pas correct.

142
00:07:04,850 --> 00:07:08,723
‫Et le mot de passe est bien sûr obligatoire, non ?

143
00:07:09,690 --> 00:07:10,723
‫Tellement vrai.

144
00:07:15,347 --> 00:07:16,737
‫"Fournir un mot de passe. " Et

145
00:07:17,750 --> 00:07:20,900
‫nous allons également imposer une règle de mot de passe très

146
00:07:20,900 --> 00:07:23,420
‫simple, à savoir qu'un mot de passe doit avoir

147
00:07:23,420 --> 00:07:24,640
‫au moins huit caractères.

148
00:07:24,640 --> 00:07:25,933
‫Alors, comment fait-on ?

149
00:07:26,840 --> 00:07:28,920
‫Eh bien, c'est assez facile.

150
00:07:28,920 --> 00:07:31,003
‫Tout ce que nous avons à faire

151
00:07:32,480 --> 00:07:34,880
‫est minlength, et le définir sur huit dans ce cas.

152
00:07:34,880 --> 00:07:37,070
‫Et c'est en fait la seule règle de mot

153
00:07:37,070 --> 00:07:38,650
‫de passe que nous allons imposer.

154
00:07:38,650 --> 00:07:41,270
‫Et de nombreuses applications ont toutes ces règles

155
00:07:41,270 --> 00:07:45,300
‫folles comme au moins un chiffre et un caractère et un symbole, mais

156
00:07:45,300 --> 00:07:47,450
‫nous n'allons pas implémenter tout cela ici

157
00:07:47,450 --> 00:07:49,250
‫parce qu'en fait, il a

158
00:07:49,250 --> 00:07:52,140
‫été constaté que ce n'est pas vraiment efficace, d'accord ?

159
00:07:52,140 --> 00:07:53,750
‫Habituellement, les mots de passe les

160
00:07:53,750 --> 00:07:55,530
‫plus sécurisés sont les plus longs, d'accord,

161
00:07:55,530 --> 00:07:58,550
‫et pas ceux avec des symboles et des caractères fous et

162
00:07:58,550 --> 00:07:59,513
‫tout ça.

163
00:08:00,580 --> 00:08:03,610
‫C'est suffisant pour le mot de passe pour le moment, mais

164
00:08:03,610 --> 00:08:06,340
‫nous allons créer des champs plus spécifiques ici pour le

165
00:08:06,340 --> 00:08:10,190
‫mot de passe lorsque nous commencerons à aimer gérer les mots de passe dans

166
00:08:10,190 --> 00:08:12,020
‫la base de données, d'accord ?

167
00:08:12,020 --> 00:08:14,403
‫Mais pour l'instant, cela suffit ici.

168
00:08:16,160 --> 00:08:18,407
‫Et maintenant c'est passwordConfirm.

169
00:08:19,390 --> 00:08:22,230
‫Ainsi, vous savez à quelle fréquence, lorsque vous créez un

170
00:08:22,230 --> 00:08:24,450
‫nouveau compte sur une application Web, vous

171
00:08:24,450 --> 00:08:28,260
‫devez toujours saisir votre mot de passe, puis le confirmer pour être sûr

172
00:08:28,260 --> 00:08:29,480
‫qu'ils sont identiques.

173
00:08:29,480 --> 00:08:31,523
‫Et c'est à cela que sert ce champ.

174
00:08:32,410 --> 00:08:35,573
‫Alors bien sûr c'est aussi de type String.

175
00:08:36,720 --> 00:08:38,723
‫Et bien sûr, il est également nécessaire.

176
00:08:45,081 --> 00:08:45,914
‫D'accord.

177
00:08:45,914 --> 00:08:48,860
‫Et encore une fois, nous allons créer quelques propriétés

178
00:08:48,860 --> 00:08:52,210
‫supplémentaires ici dans l'option schema-type un peu plus tard, d'accord ?

179
00:08:52,210 --> 00:08:56,130
‫Plus précisément, des validateurs pour voir si le mot de passe de

180
00:08:56,130 --> 00:09:00,600
‫confirmation est en fait le même que le mot de passe principal, d'accord ?

181
00:09:00,600 --> 00:09:03,220
‫Mais pour l'instant, ce schéma est en fait suffisant, et

182
00:09:03,220 --> 00:09:06,300
‫il a donc ces champs que je vous ai demandé de

183
00:09:07,179 --> 00:09:08,529
‫créer dans le défi.

184
00:09:09,980 --> 00:09:12,360
‫Et maintenant, en fait, tout ce que nous avons à faire est d'aller

185
00:09:12,360 --> 00:09:14,703
‫de l'avant et de créer le modèle à partir du schéma.

186
00:09:16,410 --> 00:09:18,930
‫Ainsi, l'utilisateur, avec un U majuscule,

187
00:09:18,930 --> 00:09:22,090
‫suit simplement cette convention selon laquelle les variables

188
00:09:22,090 --> 00:09:24,393
‫du modèle sont généralement toujours

189
00:09:25,490 --> 00:09:30,490
‫avec une lettre majuscule, puis mangouste. model, puis passez le nom du modèle, et

190
00:09:31,400 --> 00:09:33,850
‫bien sûr, nous voulons que celui-ci soit

191
00:09:34,910 --> 00:09:39,150
‫appelé User et créé à partir du userSchema que nous avons créé auparavant.

192
00:09:39,150 --> 00:09:44,150
‫Et puis module. exportations définies sur Utilisateur.

193
00:09:45,300 --> 00:09:46,260
‫Et c'est tout.

194
00:09:46,260 --> 00:09:49,230
‫C'est notre simple userSchema qui va nous permettre

195
00:09:49,230 --> 00:09:51,720
‫de commencer à créer des utilisateurs directement

196
00:09:51,720 --> 00:09:53,570
‫dans la prochaine vidéo.

197
00:09:53,570 --> 00:09:54,963
‫Alors, à bientôt.

