‫Instructeur : Bon retour.
‫Ainsi, l'authentification et l'autorisation concernent uniquement les utilisateurs
‫qui s'inscrivent, se connectent et accèdent
‫aux pages ou aux itinéraires, que nous leur accordons
‫la permission de le faire.
‫Donc, c'est vraiment une question d'utilisateurs.
‫Et, nous devons donc commencer par implémenter le modèle utilisateur dans cette
‫leçon, afin que dans la suivante, nous
‫puissions ensuite créer de nouveaux utilisateurs dans notre base de données.
‫Donc, de retour dans notre application, allons de
‫l'avant et créons un nouveau fichier pour le modèle utilisateur.
‫Alors bien sûr dans notre dossier modèle,
‫New File, userModel. js.
‫Et comme avant, nous
‫commençons par exiger le package Mongoose.
‫D'accord.
‫Et maintenant, tout ce que nous avons à faire est de créer un
‫schéma, puis de créer un modèle à partir de celui-ci.
‫Donc, tout comme nous l'avons fait avec les
‫tournées, nous allons le faire ici maintenant avec les utilisateurs.
‫Et en fait, puisque nous l'avons déjà fait
‫avant, je veux laisser celui-ci comme un défi pour vous, d'accord ?
‫Je veux donc que vous créiez un schéma avec cinq champs.
‫Alors, nom, email, puis une photo
‫; qui ne sera qu'une chaîne, comme
‫dans nos tournées.
‫Je veux aussi un champ pour un mot de
‫passe et pour un mot de passeConfirmer.
‫D'accord?
‫Et un peu plus
‫à ce sujet plus tard lorsque je résoudrai
‫ce défi pour vous, mais pour l'instant, je veux vraiment
‫que vous vous entraîniez à créer ce schéma par
‫vous-même, puis à créer également un modèle à partir de ce schéma, d'accord ?
‫Et puis à la fin, vous pouvez également l'exporter.
‫Alors s'il vous plaît, mettez la vidéo en pause à
‫ce stade, et je reviendrai dans une seconde
‫ici pour résoudre ce défi pour vous.
‫D'accord.
‫J'espère que vous avez réussi ce défi.
‫Et donc je vais maintenant le résoudre.
‫Et ne vous inquiétez pas si ce n'est pas exactement le même.
‫Vous pouvez simplement l'adapter au fur et à mesure que nous parcourons cette vidéo.
‫Donc, grâce à cette solution.
‫Donc, je vais appeler celui-ci le userSchema.
‫Et comme avant, nous créons une nouvelle mangouste. Schéma.
‫Et puis dans cela, nous passons notre objet de
‫schéma et commençons à définir nos champs.
‫Donc, je veux un nom avec le type, bien sûr, de String.
‫Et je veux aussi que ce soit obligatoire.
‫Ainsi, chaque fois qu'un nouvel utilisateur
‫est créé, il doit nous dire son nom en gros.
‫Donc, définissons également un message d'erreur ici.
‫« S'il vous plaît, dites-nous votre nom ! " D'accord?
‫C'est donc le nom.
‫Ensuite, nous voulons l'e-mail.
‫D'accord?
‫Et donc cela sera utilisé pour que l'utilisateur se connecte
‫et nous ne créerons pas de propriété de nom d'utilisateur ici, d'accord ?
‫Ainsi, dans certaines applications, vous verrez un nom d'utilisateur
‫utilisé, mais dans ce cas, nous voulons
‫rester simple ici et simplement identifier les utilisateurs par e-mail.
‫Et encore une fois, c'est du type String.
‫C'est aussi un champ obligatoire.
‫Donc juste un message d'erreur à nouveau.
‫Ensuite, je veux que les e-mails soient également uniques, d'accord ?
‫Donc, unique défini sur true.
‫Et c'est essentiellement parce que cet e-mail
‫est, bien sûr, l'identifiant unique de chaque utilisateur, d'accord ?
‫Désormais, par défaut, les e-mails devraient être uniques, n'est-ce pas ?
‫Mais soyons sûrs à 100 % ici qu'il
‫n'y aura pas
‫de comptes avec la même adresse e-mail, d'accord ?
‫Maintenant, nous pouvons également spécifier une autre option de type de schéma
‫ici, qui est en minuscule.
‫C'est donc un nouveau.
‫Et ce n'est pas un validateur.
‫Tout ce que ça va
‫faire, c'est de transformer l'e-mail en minuscules.
‫Donc, si quelqu'un dit comme Jonas@Gmail ou autre, alors
‫tout sera converti en minuscules.
‫D'accord?
‫Et maintenant, enfin, nous voulons également valider
‫réellement l'adresse e-mail.
‫Donc, en gros, tester si
‫l'e-mail fourni correspond au format d'e-mail commun, d'accord ?
‫Donc par exemple encore jonas@gmail. com serait un e-mail valide,
‫mais par exemple,
‫comme celui-ci, il ne le serait pas.
‫Ou comme ça.
‫Et donc pour cela, nous devons créer notre
‫propre validateur essentiellement.
‫Maintenant, nous n'allons pas créer notre propre validateur pour
‫cela, mais à la place, nous allons utiliser ce package de validation
‫que je vous ai déjà montré à partir de npm, n'est-ce pas ?
‫Alors rappelez-vous ici dans le tourModel, je vous ai en
‫fait montré ce module ici, mais nous
‫ne l'avons finalement pas utilisé
‫car il n'était pas vraiment utile dans notre cas.
‫Mais maintenant, ça va être très utile,
‫et donc je vais de l'avant et je le copie
‫ici, d'accord, afin que nous puissions maintenant l'utiliser directement dans notre schéma.
‫Donc, pour créer maintenant notre validateur personnalisé, nous
‫utilisons valider, vous vous souvenez ?
‫Et puis on passe dans la fonction
‫message anti-erreur, tout comme avec nos autres validateurs.
‫Et pour vérifier si un
‫email est valide, il suffit d'appeler la méthode isEmail sur
‫l'objet validateur, d'accord ?
‫Cela vient donc, encore une fois, de la documentation
‫que je vous ai déjà montrée lorsque nous avons utilisé ce module pour la première fois.
‫Et donc chaque fois que vous avez besoin d'un
‫validateur personnalisé, vous pouvez aller de l'avant et
‫vérifier la documentation et trouver s'il existe une bonne fonction pour votre cas d'utilisation.
‫Donc dans ce cas, c'est le validateur. E-mail, et
‫notre message d'erreur sera
‫"un e-mail valide", d'accord ?
‫Et dans la prochaine vidéo, quand on va créer des
‫utilisateurs à partir de ce modèle, on va bien sûr tester tout ça
‫pour voir si ça marche.
‫Ensuite, je souhaite également que l'utilisateur
‫puisse télécharger une photo.
‫Et nous allons stocker cela simplement dans une chaîne.
‫Mais ce n'est pas obligatoire, d'accord ?
‫Ainsi, une photo est généralement facultative dans la plupart des applications Web, et nous allons
‫donc faire la même chose ici.
‫Donc, si l'utilisateur souhaite télécharger une
‫photo, celle-ci sera stockée quelque part dans notre système de
‫fichiers et le chemin d'accès à cette photo sera
‫alors stocké dans ce champ photo, d'accord ?
‫C'est donc similaire à ce que nous avions ici.
‫Rappelez-vous, nous avons,
‫oui, nous avons imageCover,
‫et c'est donc aussi simplement le chemin
‫de l'endroit dans notre système de
‫fichiers où l'image est réellement téléchargée.
‫D'accord?
‫Alors c'est photo.
‫Et maintenant, nous avons besoin d'un mot de passe.
‫Et le mot de passe doit être, encore une fois, du type String.
‫Ce n'est pas correct.
‫Et le mot de passe est bien sûr obligatoire, non ?
‫Tellement vrai.
‫"Fournir un mot de passe. " Et
‫nous allons également imposer une règle de mot de passe très
‫simple, à savoir qu'un mot de passe doit avoir
‫au moins huit caractères.
‫Alors, comment fait-on ?
‫Eh bien, c'est assez facile.
‫Tout ce que nous avons à faire
‫est minlength, et le définir sur huit dans ce cas.
‫Et c'est en fait la seule règle de mot
‫de passe que nous allons imposer.
‫Et de nombreuses applications ont toutes ces règles
‫folles comme au moins un chiffre et un caractère et un symbole, mais
‫nous n'allons pas implémenter tout cela ici
‫parce qu'en fait, il a
‫été constaté que ce n'est pas vraiment efficace, d'accord ?
‫Habituellement, les mots de passe les
‫plus sécurisés sont les plus longs, d'accord,
‫et pas ceux avec des symboles et des caractères fous et
‫tout ça.
‫C'est suffisant pour le mot de passe pour le moment, mais
‫nous allons créer des champs plus spécifiques ici pour le
‫mot de passe lorsque nous commencerons à aimer gérer les mots de passe dans
‫la base de données, d'accord ?
‫Mais pour l'instant, cela suffit ici.
‫Et maintenant c'est passwordConfirm.
‫Ainsi, vous savez à quelle fréquence, lorsque vous créez un
‫nouveau compte sur une application Web, vous
‫devez toujours saisir votre mot de passe, puis le confirmer pour être sûr
‫qu'ils sont identiques.
‫Et c'est à cela que sert ce champ.
‫Alors bien sûr c'est aussi de type String.
‫Et bien sûr, il est également nécessaire.
‫D'accord.
‫Et encore une fois, nous allons créer quelques propriétés
‫supplémentaires ici dans l'option schema-type un peu plus tard, d'accord ?
‫Plus précisément, des validateurs pour voir si le mot de passe de
‫confirmation est en fait le même que le mot de passe principal, d'accord ?
‫Mais pour l'instant, ce schéma est en fait suffisant, et
‫il a donc ces champs que je vous ai demandé de
‫créer dans le défi.
‫Et maintenant, en fait, tout ce que nous avons à faire est d'aller
‫de l'avant et de créer le modèle à partir du schéma.
‫Ainsi, l'utilisateur, avec un U majuscule,
‫suit simplement cette convention selon laquelle les variables
‫du modèle sont généralement toujours
‫avec une lettre majuscule, puis mangouste. model, puis passez le nom du modèle, et
‫bien sûr, nous voulons que celui-ci soit
‫appelé User et créé à partir du userSchema que nous avons créé auparavant.
‫Et puis module. exportations définies sur Utilisateur.
‫Et c'est tout.
‫C'est notre simple userSchema qui va nous permettre
‫de commencer à créer des utilisateurs directement
‫dans la prochaine vidéo.
‫Alors, à bientôt.