Dans l'exercice précédent,
nous avons vu à quel point il était facile pour nous de configurer puis d'
échafaudage un serveur destinataire en utilisant le framework LoopBack.
Nous voyons que ce framework LoopBack prend en charge tout un spectre
des points de terminaison du destinataire et
toutes les opérations des points de terminaison du destinataire automatiquement pour nous,
lorsque nous échafaudons notre application.
Dans cet exercice, nous allons examiner comment nous pouvons connecter
notre serveur LoopBack à une base de données back-end,
ou MongoDB dans ce cas,
et nous allons également voir comment nous pouvons configurer différents contrôles d'accès sur les points de terminaison destinataires.
Par conséquent, en utilisant les contrôles d'accès,
nous pouvons spécifier quel type d'opérations peut être effectué sur les terminaux destinataires,
et qui sera autorisé à effectuer ces opérations.
Ainsi, par exemple, un utilisateur non authentifié ou un invité ne peut
accéder qu'aux informations ou effectuer une opération get sur les points de terminaison du destinataire,
un utilisateur authentifié pourrait également faire la même chose,
mais seul un administrateur pourrait écrire des données dans mon serveur.
Ainsi, toute opération put, post et delete ne peut être effectuée que par un administrateur. En
cours de route, nous verrons également comment nous pouvons configurer un compte administrateur dans notre serveur LoopBack,
puis le configurer de sorte que
seul l'utilisateur admin sera autorisé à effectuer ces opérations.
C' est donc là que LoopBack nous permet de définir quelque chose
appelé rôles associés à divers utilisateurs.
Ainsi, chaque utilisateur peut se voir attribuer un rôle.
À titre d'exemple, vous pouvez parler d'un utilisateur ordinaire, d'
un administrateur, d'un super administrateur et ainsi de suite.
Vous pouvez donc subdiviser votre ensemble d'utilisateurs en différents groupes,
puis leur attribuer différents rôles.
Nous allons également examiner comment le modèle utilisateur intégré peut être plus personnalisé,
dans notre application LoopBack,
et comment nous pouvons construire un autre modèle au-dessus du modèle utilisateur,
puis utiliser le modèle utilisateur comme classe de base
et développer un modèle de niveau supérieur appelé le modèle client,
qui nous permet de stocker des informations supplémentaires pour chacun
des clients qui se connecteront à notre site.
Alors, explorons quelques-unes de ces fonctionnalités de LoopBack dans cet exercice.
Pour commencer cet exercice,
la première chose que je voudrais que vous fassiez,
est de démarrer votre serveur MongoDB.
Donc, ici, je suis dans un autre onglet de terminal dans mon dossier MongoDB,
où j'ai configuré mon serveur MongoDB plus tôt,
qui a été utilisé par mon serveur Express Plus MongoDB dans les exercices précédents.
Donc, permettez-moi de démarrer le serveur MongoDB en tapant
MonGod moins les données de partie D-B
dans ce dossier, puis démarrez mon serveur MongoDB.
Maintenant, je vais connecter mon serveur LoopBack à mon serveur MongoDB.
Donc, en allant dans mon dossier serveur LoopBack ici,
je dois inviter à entrer la source de données L-B.
Cela nous permettra de configurer la source de données pour notre serveur LoopBack.
LoopBack lui-même peut se connecter simultanément à plusieurs sources de données si vous le souhaitez,
et il prend en charge divers types.
Il prend en charge les bases de données My Cycle, il prend en charge MongoDB,
il prend en charge Cloudant qui est également une autre base de données de documents,
il prend en charge Oracle, et beaucoup d'autres types de bases de données.
Ainsi, vous pouvez facilement configurer cela.
Dans cet exemple, je vais configurer mon serveur LoopBack
pour parler à mon MongoDB dans le back-end.
Donc, à l'invite,
si nous tapons L-B source de données,
cela nous demandera des informations.
Donc, la première chose qu'il nous demandera est pour le nom de la source de données,
puis je
vais configurer ce nom de source de données comme MongoDB, et puis il m'invitera à sélectionner le connecteur.
LoopBack utilise des connecteurs pour se connecter à diverses bases de données dans les coulisses.
Donc, comme vous pouvez le voir, la base de données en mémoire qui est celle qu'
ils viennent d'utiliser dans l'exercice précédent,
mais bien sûr la base de données en mémoire signifie qu'une fois que vous arrêtez votre serveur,
toutes les valeurs seront disparues,
et ce n'est donc pas un stockage de données persistant.
Donc, ici, vous voyez les différents types de bases de données que StrongLoop prend en charge ici.
Ainsi, vous pouvez voir la longue liste des différentes bases de données qui sont prises en charge.
Donc, vous pouvez voir qu'il supporte Cassandra, Redis,
nous avions brièvement parlé de ces bases de données NoSQL, MongoDB,
My SQL, PostGres, Oracle,
et même directement à d'autres serveurs API Rest aux serveurs SOAP,
Coachbase et ainsi de suite.
Donc, vous voyez qu'il nous fournit
une longue liste de différents types de sources de données à partir de là,
notre serveur LoopBack peut lire dans les informations.
Dans mon cas, je vais utiliser le serveur MongoDB donc
je vais configurer le connecteur MongoDB.
Donc, quand je fais cela,
LoopBack installera automatiquement le connecteur MongoDB pour nous,
et quand il demande l'URL de la chaîne de connexion,
nous allons juste laisser ceci vide parce que nous allons
lui permettre d'utiliser la méthode standard de configuration.
Quand il demande l'hôte, nous dirons
localhost parce que nous exécutons notre MongoDB sur le même ordinateur.
Sinon, vous spécifierez
le nom d'hôte de l'ordinateur sur lequel vous exécutez MongoDB.
Ensuite, le suivant est le numéro de port et nous
utilisons notre numéro de port MongoDB standard 27017,
et il demandera également le nom d'utilisateur et le mot de passe si nécessaire,
et en ce moment mon MongoDB fonctionne sans avoir à
faire d'authentification donc je laisse le nom d'utilisateur et le mot de passe vides,
et nom de la base de données.
Le nom de la base de données sur le serveur MongoDB qui s'exécute dans les coulisses, le
nom de la base de données il y a confusion.
Si vous vous souvenez que c'est le nom de la base de données qu'ils ont configuré sur notre serveur MongoDB.
Et puis il nous demandera s'il devrait installer le connecteur LoopBack,
et je dirai oui,
et je vais effectivement aller de l'avant et installer le module NPM qui accède
au connecteur LoopBack à la base de données MongoDB.
Et une fois que cela est fait,
mon connecteur Loopback est installé ici afin que vous puissiez voir qu'il s'agit de la version 1.18.1
et que mon serveur LoopBack est prêt à parler à mon MongoDB.
Maintenant, avant de poursuivre,
dans l'exercice précédent, je ne configure pas vraiment certains modèles,
puis je les spécifie pour être stockés dans la base de données,
je vais devoir aller les mettre à jour pour stocker leurs données dans mon MongoDB.
Alors, allons et réinitialisons rapidement notre code pour le serveur LoopBack.
Cela nous donne également l'occasion de regarder
ce que mon serveur Loopback lui-même a configuré dans ce dossier. En
ouvrant le dossier LoopBack dans notre éditeur,
vous pouvez voir que Loopback a déjà
échafaudé tout un tas de fichiers dans ce dossier.
Le package.json contient bien sûr
tous les modules NPM associés qui ont été configurés ici,
et ici vous pouvez voir que LoopBack lui-même a configuré le module LoopBack NPM,
le module de démarrage LoopBack et en
particulier laissez-moi attirer votre attention sur le LoopBack MongoDB ,
que nous venons d'installer il y a peu de temps, et beaucoup d'autres.
En particulier, la configuration du serveur Loopback est
stockée principalement dans les fichiers Json ici,
avec javascriptcore supplémentaire chaque fois que nécessaire.
Nous chercherons la personnalisation du code javascript un peu plus tard.
Permettez-moi d'attirer votre attention sur ce dossier appelé commun.
Dans ce dossier commun,
vous verrez tous les modèles que nous avons configurés précédemment.
Donc, vous verrez que nous avons les fichiers Dish.json.
Donc, lorsque vous ouvrez le fichier dishes.json, vous voyez comment LoopBack
stocke toutes les informations sur le modèle de plats que vous venez de créer,
il a donc le nom, la base
et quelques autres valeurs ici qu'il nécessite.
Et puis regardez les propriétés et comment toutes les propriétés sont stockées ici.
Donc, vous voyez certaines choses qui sont très faciles à
reconnaître qu'elles sont dans le fichier dishes.json.
De même, les leaders.json et les promotions.json.
Le fichier dishes.js est grand,
nous pouvons ajouter un code de personnalisation supplémentaire pour les plats,
mais pour l'instant nous ne allons pas le faire,
et donc nous allons juste le laisser tel quel.
C' est donc là que vous pouvez ajouter du code supplémentaire qui peut avoir
besoin d'être exécuté lorsque vous accédez au point de fin de la barre oblique.
Mais pour l'instant, nous allons le laisser vide pour le moment.
Maintenant, regardons aussi le dossier du serveur ici.
Et le dossier du serveur,
en particulier laissez-moi attirer votre attention sur le fichier datasources.json ici.
Dans le fichier source de données .json,
toutes les différentes sources de données seront configurées ici.
Donc en ce moment, nous avons seulement la base de données DB qui est
la base de données en mémoire que LoopBack configure par défaut,
puis le MongoDB que nous venons de configurer,
n'a absorbé que l'information que l'entrée a
été stockée dans cette source de données, fichier json.
Ainsi, vous verrez que LoopBack lui-même fonctionne en configurant tous ces fichiers
dont le framework LoopBack lui-même fait usage lorsqu'il
démarre le serveur d'API de repos basé sur Loopback.
Allons dans le fichier config.json modèle ici.
Le fichier config.json modèle lui-même
stocke beaucoup d'informations ici ce qui est utile pour nous,
mais ici, passons et modifions quelques choses.
Donc, dans ce, nous verrons qu'il ya à nouveau pour les plats, les
promotions et les leaders, la source de données a été configurée comme DB.
Donc, nous allons modifier cela à MongoDB ici.
Non seulement pour celui-ci,
ils vont aussi changer cela pour les promotions, et aussi les leaders,
ce qui signifie, que tous ces trois vont tirer leurs données de la MongoDB.
Aussi, pour le rôle qui est défini ici.
Nous allons également stocker dans MongoDB.
Nous allons bientôt voir comment nous allons utiliser le Role,
et aussi le RoleMapping ici.
Nous comprendrons la raison de ces deux-là dans un court moment.
Et puis, ACL, les listes de contrôle d'accès,
ceux-ci seront également stockés dans MongoDB.
Et puis, l'utilisateur, aussi,
nous le stockerons dans MongoDB,
puis ils le laisseront là.
Donc, ce sont les modifications que vous devez faire
au fichier model-config.json, puis enregistrer les modifications.
Comme je l'ai mentionné précédemment, Loopback par défaut,
prend en charge ce modèle appelé, user,
qui est utilisé pour prendre en charge l'authentification de l'utilisateur.
Le modèle utilisateur lui-même ne stocke que trois propriétés différentes.
Le nom d'utilisateur, l'adresse e-mail
et les informations relatives au mot de passe.
Maintenant, s'ils veulent avoir
une façon plus élaborée de stocker des informations supplémentaires sur les utilisateurs.
Ensuite, ils peuvent sous-classer ce modèle de base d'utilisateurs,
puis en faire usage.
Donc, dans cette prochaine étape,
je vais créer un autre modèle appelé, le modèle client,
qui utilisera l'utilisateur comme modèle de base pour son fonctionnement.
Et le modèle client lui-même stockera des informations supplémentaires sur les utilisateurs.
Donc, dans le modèle client,
je vais stocker les choses comme le prénom,
le nom de famille, et l'image de l'utilisateur et ainsi de suite.
Ainsi, le client agira exactement comme le modèle utilisateur,
qui vient déjà avec son propre ensemble de méthodes.
Ainsi, le modèle utilisateur est utilisé pour l'authentification de l'utilisateur, de
sorte que vous pouvez taper le nom d'utilisateur et le mot de passe,
et vous connecter et vous déconnecter.
Ainsi, lorsque nous avons créé ce modèle client basé sur la classe de base du modèle utilisateur,
le modèle client prend également en charge les
opérations de connexion et de déconnexion lors de l'utilisation de ce modèle client.
Ainsi, nous pouvons nous connecter à l'utilisateur et déconnecter l'utilisateur et ainsi de suite.
Ainsi, l'authentification de l'utilisateur vient automatiquement pour le droit.
Donc, pour créer le modèle client, à l'invite,
tapez modèle lb et pour le nom du modèle,
nous taperons Client.
Et le DataSource, je vais le choisir comme MongoDB.
Et puis quand il demande de sélectionner la classe de base du modèle,
au lieu d'utiliser le modèle persistedModel,
nous allons descendre,
puis sélectionner l'utilisateur comme classe de base.
Donc, de cette façon, il dérivera toutes leurs propriétés
de la classe utilisateur de base qui est déjà intégrée dans Loopback.
Et puis nous allons exposer cela avec l'API REST,
et le MT pluriel personnalisé.
Et puis ce serait dans le dossier commun.
Et pour cela, les trois propriétés que nous allons ajouter sont,
prénom, qui aurions la chaîne de types.
Et cela n'est pas obligatoire ou n'a pas de valeur par défaut.
Et puis, nom de famille à nouveau comme la chaîne de type,
pas obligatoire, et aucune valeur par défaut.
Et puis image de la chaîne de type,
pas obligatoire et pas de valeur par défaut.
Ainsi, vous voyez que la classe de clients elle-même
porte des propriétés supplémentaires en plus de la classe utilisateur.
la classe utilisateur prend déjà en charge le nom d'utilisateur,
l'e-mail et les informations relatives au mot de passe.
Donc, la classe de client,
puisque la sous-classe est la classe de base,
nous allons obtenir le nom d'utilisateur et l'e-mail automatiquement de la classe utilisateur.
Et maintenant, lorsque vous allez dans le fichier model-config.jason,
vous verrez que le modèle Customer a déjà été ajouté.
Et puis dans les modèles courants,
vous verrez maintenant le fichier customer.json ajouté
avec ces trois propriétés supplémentaires que nous avons ajoutées au modèle client.
Mais notez, qu'il spécifie la base en tant que classe utilisateur pour le modèle client ici.
Donc, c'est ainsi que Loopback vous permet de prendre
une classe de modèle de base, puis de la sous-classer dans la classe de modèle.
Ainsi, vous verrez comment Loopback nous permet de prendre en charge automatiquement l'authentification de l'utilisateur en utilisant
la classe utilisateur, puis nous permet même de définir une sous-classe supplémentaire de celle-ci,
qui stockera des informations supplémentaires liées à la classe de base utilisateur.
Ensuite, nous allons configurer le contrôle d'accès pour
les différents modèles que nous avons déjà mis en place dans notre serveur de bouclage.
Ainsi, pour configurer le contrôle d'accès
ou les listes de contrôle d'accès dans Lookback.
Loopback utilise ces listes de contrôle d'accès comme moyen de spécifier le type d'
opérations qui peuvent être effectuées sur
les différents points de terminaison de l'API REST correspondent aux différents modèles.
Donc, pour ce faire, nous allons taper à l'invite lb acl,
ACL signifie listes de contrôle d'accès.
Et puis, quand cela sera épuisé, nous dirons,
quel modèle nous voulons appliquer cette liste de contrôle d'accès.
Et puis nous dirons, tous les modèles existants.
Et nous dirons, Toutes les mesures et les propriétés.
Et nous dirons,
Tous les types d'opérations.
Et puis, nous dirons, Tous les utilisateurs.
Et puis nous dirons : Refuser explicitement l'accès.
Donc, nous fermons d'abord tous les modèles pour tout,
puis nous ouvrirons lentement,
quelles que soient les opérations qui peuvent être effectuées par différents utilisateurs.
Donc, première étape, nous avons fermé
tous les types d'opérations sur tous les modèles que nous avons actuellement.
Ensuite, nous commencerons lentement à ouvrir chacune des opérations, étape par étape.
Maintenant, l'étape suivante,
ce que nous allons faire est de nouveau configurer la prochaine liste de contrôle d'accès.
Dans la deuxième liste de contrôle d'accès, nous dirons,
pour tous les modèles existants et nous dirons,
Toutes les mesures et propriétés.
Et puis, nous dirons, seulement l'accès en lecture.
Autrement dit, lorsque l'utilisateur peut effectuer les opérations GET sur ces ports finaux.
Et ces opérations GET peuvent être effectuées par tous les utilisateurs.
Ainsi, les utilisateurs peuvent récupérer des informations.
Et nous allons explicitement accorder l'accès pour cela.
Donc, ce qui signifie que les opérations GET sont autorisées sur le nœud des points de terminaison de l'API REST. Tout d'
abord, nous avons tout fermé,
puis nous avons ouvert uniquement les opérations GET pour les utilisateurs.
Maintenant, enfin, ils vont aller à chacun des modèles,
puis fermer et permettre que certaines opérations ne
soient effectuées que par certains types d'utilisateurs.
Donc, pour ce faire,
la prochaine ACL que nous allons mettre en place est pour un modèle spécifique.
Donc, nous allons installer celui-ci pour la vaisselle.
Et nous dirons : Une seule méthode.
Et puis le nom de la méthode est, créer.
Donc, ce qui signifie que la création de ceux-ci ne sera autorisée que par.
Donc, encore une fois, quand il dit sélectionner le rôle,
puis pour le rôle, nous allons dire, autre.
Et puis le nom du rôle serait admin.
Donc, ce que nous faisons par cette opération, c'est que,
nous disons que seul un utilisateur administrateur peut créer de nouveaux plats ou mettre à jour des plats existants.
Donc, c'est un peu fermé, les opérations restantes.
Alors, faisons la même chose pour les dirigeants.
Et une seule méthode, puis,
la création et nous dirons,
seul l'administrateur peut le faire.
Et enfin, aussi pour les promotions.
Pour les promotions.
La méthode unique, la méthode create ne sera autorisée
que par les utilisateurs qui ont le rôle désigné en tant qu'administrateur.
Nous verrons comment nous allons créer des utilisateurs avec un rôle spécifique à l'étape suivante.
Accorder explicitement l'accès.
Notez maintenant que je n'ai pas fermé les clients pour les opérations de création.
Si je ferme les clients,
personne ne pourra s'inscrire dans le système.
Donc, c'est pour ça que je vais laisser ça ouvert.
Parce que, le client devrait être en mesure de s'inscrire dans le système.
Ainsi, vous pouvez vous inscrire pour de nouveaux comptes sur le système.
Comptes d'utilisateurs sur le système.
Donc, cela sera laissé libre aux gens de le faire.
Donc, pour permettre que pour les clients, nous dirons, clients,
Une méthode unique, créer tous les utilisateurs.
Ainsi, les clients peuvent être créés par tous les utilisateurs car cela
permettra aux utilisateurs de se connecter à leur compte.
Enfin, nous verrons comment nous pouvons configurer notre serveur pour démarrer
avec un seul utilisateur admin automatique configuré dans notre serveur Loopback.
Donc, pour ce faire,
dans notre serveur Loopback,
dans le dossier du serveur, nous avons ce sous-dossier de démarrage ici.
Quel que soit le code que nous mettons dans le sous-dossier de démarrage,
sera exécuté au démarrage de notre serveur LoopBack.
Donc, ici, vous verrez que nous avons déjà ce authentication.js,
qui est déjà configuré,
un Loopback qui va configurer l'authentification de l'utilisateur pour nous.
Et puis nous avons le root.js qui va mettre en place
quelques informations supplémentaires pour notre serveur RAM Loopback.
Et nous pouvons ajouter des fichiers supplémentaires ici.
Donc, je vais y aller dans le dossier de démarrage,
puis ajouter dans ce fichier appelé, script.js.
Et dans ce script.js,
je vais configurer le code pour créer un utilisateur admin par défaut.
Donc, dans le script.js,
qui ne sera rien d'autre qu'un module NPM basé sur des fichiers donc,
nous allons commencer en disant,
module.exports = function (app).
L' application est l'application Loopback,
qui sera fournie en tant que paramètre pour cette fonction pour nous.
Et donc, nous pouvons en faire usage dans notre code ici.
Donc, ici, nous allons d'abord configurer un utilisateur admin.
Donc, pour ce faire, nous dirons,
var Client = app.models.Customer.
Ainsi, cela nous donne accès au modèle client.
Ensuite, nous dirons, clients. Findone.
Donc, nous allons d'abord vérifier si un utilisateur avec
le nom d'utilisateur en tant qu'administrateur est déjà configuré dans le système ou non.
Sinon, je vais créer un utilisateur admin.
Et cela me fournit une fonction de rappel avec deux paramètres, err et utilisateurs.
Et à l'intérieur de cette- Donc, nous allons d'abord essayer de
voir si un utilisateur avec leur nom admin existe déjà.
Si l'utilisateur n'existe pas,
alors nous allons créer l'utilisateur.
Donc, pour créer l'utilisateur,
nous allons dire ici, sinon les utilisateurs.
Donc, si les utilisateurs n'est pas null ou si l'utilisateur dit null,
cela signifie qu'il n'y a pas d'utilisateur admin donc je dois créer un utilisateur admin ici.
Donc, dans ce cas, nous dirons, customer.create.
Et cette création prend un tableau d'objets si vous le souhaitez.
Et ce tableau d'objets nous permettra de spécifier les comptes d'utilisateurs que nous voulons créer.
Donc, le premier compte d'utilisateur que je veux créer ou
le seul compte d'utilisateur que je veux créer est le 'Admin'.
Donc, ce sera l'administrateur par défaut pour
mon serveur de bouclage, puis je peux configurer l'e-mail.
Rappelons donc que le modèle utilisateur prend en charge ces propriétés,
confusion.net, puis mot de passe que
je vais configurer comme mot de passe.
Vous pouvez également fournir avec cela,
le prénom et le nom de famille,
si vous le souhaitez, pour l'utilisateur admin.
Mais je vais le laisser en tant que tel,
comme vide parce que ceux-ci ne sont pas requis pour l'utilisateur admin.
Alors je vais le laisser là.
Donc, cette commande finira par créer un nouveau client avec le nom 'Admin'.
Donc, si cet utilisateur ou le nom « Admin » n'existe pas,
alors nous allons en créer un.
Et puis ici, nous avons la fonction de rappel.
Donc, les utilisateurs errent.
Maintenant, je vais dire,
si erreur, nous ne savons pas ce qu'il essaie de faire, alors nous allons simplement jeter l'erreur.
Mais normalement, nous ne nous attendons pas à ce que cela arrive.
Alors maintenant, comment désignez-vous cet utilisateur en tant qu'utilisateur administratif ?
Donc, en ce moment, quand je m'inscrit ici,
je suis juste en train d'inscrire un utilisateur normal ici,
mais nous voulons donner un rôle spécial à cet utilisateur. C'
est donc là que bouclage prend en charge un moyen de spécifier des rôles pour les utilisateurs.
Donc, pour spécifier un rôle,
nous allons var Role = app.Models.Role.
Donc, cela me permettra de créer un rôle,
un nouvel appel de rôle admin ici.
Donc, nous pouvons assigner différents drones à différents utilisateurs si vous voulez.
Et avec cela,
j'ai aussi besoin de créer un RoleMapapping ici.
Donc, nous allons dire, App.Models.RoleMapping.
Et s'il arrive que la base de données contient déjà
un RoleMapping qui existe déjà,
alors je vais détruire tous ceux quand je démarre mon serveur.
Et puis laissez-moi essayer de trouver
pour voir si un rôle avec
ce nom admin
existe déjà dans le système.
D' accord.
Et dans cela prend,
comme vous vous y attendez,
une fonction de rappel et à l'intérieur ici nous dirons, role.findone.
Donc, si un rôle avec le nom admin existe déjà,
alors je n'ai pas besoin d'en créer un.
Sinon, si cela n'existe pas,
alors je dois créer le rôle.
Donc, nous allons dire, rôle.Créer.
Nous allons donc créer un rôle d'administrateur ici.
Et puis cela nous amène aux paramètres err,
rôle ici, dans la fonction de rappel.
Maintenant encore une fois, ici pour gérer l'erreur,
nous allons juste copier ce « si erreur » et ensuite le coller là.
De même ici aussi, si l'erreur se produit,
alors je dois gérer cela.
Donc, 'si erreur' puis 'jetez l'erre'.
Sinon, nous avons créé le rôle.
Donc maintenant, j'ai besoin de mapper ce rôle à cet utilisateur particulier que je viens de créer.
Cet utilisateur que je viens de créer ici.
Cet utilisateur. Je veux donner à cet utilisateur le rôle de l'administrateur.
Donc, depuis que j'ai créé ce rôle par le nom admin,
donc nous allons dire, role.principals.create.
C' est ainsi que vous créez un mappage entre le rôle et un utilisateur particulier ici.
Donc, nous allons dire, role.principals.create.
Donc, c'est la syntaxe là-bas.
Nous dirons, PrincipalType : RolemApping.user
ici et vous prendrez
un identifiant principal ici qui est les utilisateurs.
À quoi se réfère cet utilisateur ?
Cet utilisateur fait référence à ce qui vient d'arriver.
Donc, lorsque nous avons créé ces utilisateurs,
alors le client doit créer un retour réussi à nous ici.
C' est ce que je vais utiliser ici.
Nous dirons, utilisateurs [0].
Donc, ce serait un tableau d'utilisateurs qui ont été créés et qui ne contiennent qu'un d'entre eux.
C' est pourquoi je dis utilisateur [0].
Et puis nous allons attribuer l'ID de cet utilisateur ici.
C' est ainsi que nous allons créer un RoleMapping entre le rôle que nous venons de créer,
ce rôle, puis le mapper au client que nous venons de créer.
Maintenant, cela nous amène également aux paramètres, la fonction de rappel.
Et dans cette fonction de rappel, nous allons simplement dire,
si (err) jeter (err).
Sinon, nous ne sommes pas vraiment désireux de savoir ce qui s'est passé là-bas.
C' est ça. Alors c'est comme ça.
Donc, si le rôle nommé admin n'existe pas,
nous allons créer ce rôle.
Si non - Donc, c'est la
partie 'else' où j'aurai encore besoin de faire ce mappage.
Alors laissez-moi copier ce code et ensuite je le ferai exactement ici.
Donc role.principals.create et ensuite mapper ceci pour l'utilisateur là.
Donc, si le rôle admin existe déjà,
alors tout ce qu'ils doivent faire est de faire le mappage.
Cela sera donc stocké dans le modèle RoleMapping dans notre base de données. C'est ça.
Donc, ce morceau de code que nous mettons dans le fichier script.js va d'abord essayer de
trouver si un utilisateur admin existe et que cet utilisateur est identifié par le nom admin.
Si ce n'est pas le cas, l'utilisateur sera créé et créera également le rôle pour l'utilisateur.
Nous allons créer un rôle nommé admin.
Si ce rôle existe,
nous allons juste l'utiliser.
Sinon, nous allons créer le rôle.
Et puis après cela, nous allons créer ce mappage entre le rôle et l'utilisateur.
Donc loopback nous permet de faire le RoleMapping.
Donc dire que cet utilisateur n'est pas à ce rôle.
Donc, ce mappage est fait en utilisant cette instruction.
Donc, cela complète la configuration de nos serveurs.
Pour qu'un utilisateur admin soit créé et que cet utilisateur administrateur
obtienne automatiquement le rôle de l'administrateur tel que configuré ici.
C' est ça. Enregistrez les modifications dans script.js.
Et maintenant, nos serveurs de bouclage devraient être prêts.
Donc, nous allons maintenant démarrer notre serveur de retour et ensuite vérifier ce que nous pouvons faire avec cela.
En allant aux terminaux,
commençons le serveur de bouclage.
Donc, nous allons dire, npm start et alors notre serveur devrait être opérationnel.
Allons dans l'Explorateur, puis parcourez les informations là-bas.
Et ce serveur de bouclage se sera automatiquement
connecté à mon MongoDP parce que j'ai configuré la connexion.
Aller à mon navigateur,
laissez-moi recharger ça.
Et quand je rechargerai ceci,
vous verrez maintenant que nous avons un nouveau client qui a été créé ici.
L' utilisateur existait déjà plus tôt.
Les plats, les leaders et les promotions sont tous là.
Effectuons un get sur la vaisselle.
Maintenant que cela est connecté à la bouche MongoDB,
mon MongoDB a déjà quelques plats là-dedans.
Si votre MongoDB est vide,
vous pouvez poster quelques plats en utilisant le post ici.
Alors essayons-le.
Quand je fais une opération get sur les plats barre oblique,
vous verrez que dans le corps de réponse-
Tous les plats qui existent dans ma base de données ont tous été récupérés.
De même, je peux faire un GET sur les
promotions et je devrais voir la promotion qui existe déjà dans ma base de données là-bas.
Ainsi, vous pouvez voir que la promotion existe déjà là.
Donc, cela nous montre comment nous pouvons récupérer des informations.
Maintenant, essayons de poster un nouveau plat.
Donc, pour poster un nouveau plat,
nous allons au POST ici.
Laisse-moi juste copier ça.
Évidemment,
en ce moment, parce que puisque je ne suis pas connecté,
je ne serai pas autorisé à poster le plat si,
mais je vais démontrer que vous êtes juste copier et coller cette information ici,
et nous allons essayer de poster ce plat,
puis quand j'essaie de poster le plat,
mon serveur répond immédiatement avec cette erreur en disant, AUTORIZATION_REQUIS.
Vous n'êtes pas autorisé à effectuer cette opération.
Donc, c'est pourquoi vous n'êtes pas autorisé à faire cette opération.
Comment vous autorisez-vous ?
Donc, pour vous autoriser,
rappelez-vous maintenant que nous avons déjà créé un utilisateur avec le nom admin,
et cet utilisateur admin existe déjà en tant que client ici.
Par conséquent, en allant dans les points de terminaison de l'API REST du client
, si vous faites défiler
vers le bas, ci-dessous, vous verrez la connexion de ce client.
Donc, lorsque vous faites un POST sur la connexion du client.
Donc, pour la connexion du client,
vous faites défiler ici, puis ici, il demande les informations d'identification.
Donc, dans les informations d'identification,
nous pouvons taper le nom d'utilisateur entre guillemets, et nous dirons,
Admin, puis mot de passe,
nous allons dire, mot de passe, puis nous posterons ceci.
Et puis quand vous l'affichez,
vous remarquerez que dans la réponse,
LoopBack me renverra cette information.
Maintenant, dans cette information,
cet identifiant particulier qu'il renvoie est le AccessToKen pour mon serveur LoopBack.
Donc, je peux juste copier cet AccessToken ici,
et puis juste en haut ici,
vous pouvez voir que c'est Token Not Set, ici.
Ça dit Token Not Set.
Et ici, vous pouvez taper ce AccessToken,
puis dire, Définir jeton d'accès.
Et puis votre AccessToken sera défini,
puis toutes les opérations suivantes que vous effectuez porteront automatiquement
cet AccessToKen dans l'en-tête de mon message de requête.
Donc, de cette façon, maintenant mon administrateur sera autorisé à faire des messages d'articles là-bas.
Donc, maintenant que je me suis connecté en tant qu'administrateur,
laissez-moi aller aux promotions,
puis je vais poster une promotion là-bas,
et vous montrer que je peux réellement poster des promotions.
Donc, allons à un POST,
et puis nous allons juste copier ceci, puis dans les données,
et puis pour le nom que nous allons dire, Promotion de test,
et l'image nous allons juste laisser en tant que telle, description, Description de test.
Et je peux le poster là-dedans,
et vous verrez
que je ne devrais pas inclure cet identifiant ici parce que j'ai
laissé LoopBack lui attribuer automatiquement l'identifiant.
Laissez-moi poster ceci et vous verrez que dans le corps de la réponse,
la promotion de test a été posté ici.
Et je viens de remarquer que je n'ai pas inclus
le drapeau en vedette pour mes promotions et mes leaders.
Donc, je vais y aller et inclure le drapeau en vedette comme l'
une des parties de mes promotions là-bas.
Donc, maintenant, quand je fais un GET pour les promotions,
vous verrez que dans ce message de réponse,
vous verrez l'ancienne promotion qui était déjà dans ma base de données,
puis la nouvelle promotion que je viens de poster dans ma base de données déjà incluse ici.
Donc, je viens de remarquer que je dois définir l'indicateur en vedette,
je vais vous montrer comment faire cela dans un.
Donc, ce genre de vous montre comment vous pouvez vous connecter et explorer votre serveur LoopBack.
Laissez-moi détruire ce jeton,
donc nous allons simplement supprimer le jeton,
puis cliquer dessus
afin que cela enverra essentiellement le jeton d'accès à une
chaîne vide et donc mon jeton ne traitera plus,
donc maintenant mon utilisateur n'est plus connecté.
Laissez-moi créer un nouveau client.
Donc, pour créer un nouveau client, je dirai, les clients POST.
Et puis je vais copier ça d'ici.
Je vais me créer un nouveau compte ici.
Et donc, ici,
je vais supprimer le royaume,
je n'ai pas besoin de cela, je n'ai pas besoin de l'identifiant.
Donc, pour le prénom
et l'emailVerified devraient être automatiquement définis par le système.
Donc, laissez-moi me connecter en tant qu'utilisateur.
Donc, je vais juste soumettre mon prénom, nom de famille,
et l'image actuellement,
je vais juste définir une chaîne vide là, nom d'utilisateur et e-mail.
Et puis nous allons l'essayer,
et puis il revient en disant,
Détails : 'mot de passe' ne peut pas être vide.
Donc, vous remarquerez que ici,
je devrais également inclure avec le nom d'utilisateur,
mot de passe et ensuite, posons ceci.
Donc, quand vous le publiez, il revient avec
le corps de réponse disant que vous faites maintenant partie du système.
Ainsi, votre prénom,
votre nom de famille et votre nom d'utilisateur, votre identifiant e-mail
et l'identifiant que LoopBack vous attribue vous sont renvoyés.
Donc, ce n'est rien d'autre que l'identifiant MongoDB comme vous pouvez le voir ici.
Donc, maintenant que je me suis inscrit en tant que client,
je devrais pouvoir me connecter en tant que client,
afin que j'aille à la connexion POST ici,
puis ici, à la place de l'administrateur,
je vais me connecter en tant que nouvel utilisateur que je me suis connecté.
Donc, alors je clique sur pour essayer,
vous verrez qu'il retourne avec l'identifiant,
donc il me donne le jeton pour cet utilisateur admin ici.
Donc, avec cela, nous avons terminé l'examen du serveur LoopBack que nous venons de créer.
Et comme je viens de le mentionner,
j'ai remarqué que les promotions et les leaders n'ont pas présenté drapeau alors,
je vais entrer dans le code.
Donc, supposons que vous oubliez quelque chose comme ça,
alors vous pouvez simplement entrer et modifier le code Json si vous le souhaitez.
Donc, je vais entrer dans mon code,
aller au code,
je vais d'abord aller dans les communes et ensuite je vais aller dans les plats.json.
Et puis dans les plats.json,
je vois cette propriété en vedette là-bas.
Je vais copier cette propriété en vedette,
puis je vais aller dans leaders.json,
puis je vais coller cette propriété de fonctionnalité à un leaders.json,
et aussi avec promotions.json.
J' ai oublié de l'inclure quand j'ai créé ces modèles.
J' aurais dû le faire lorsque je créais le modèle lui-même donc,
si vous oubliez quelque chose comme ça,
alors c'est une autre façon d'éditer votre modèle
et de s'assurer que votre modèle est correctement configuré.
Alors, c'est tout.
Donc, maintenant, mes promotions et mes dirigeants auront également le drapeau en vedette là-dedans.
Avec cela, nous terminons cet exercice.
Dans cet exercice, nous avons vu comment nous pouvons mettre en place
un nouveau modèle en étendant une classe de modèle de base déjà dans LoopBack.
Nous avons également vu comment nous pouvions mettre en place des contrôles d'
accès en utilisant les listes de contrôle d'accès prises en charge par LoopBack.
Avec cela, nous terminons cet exercice.
C' est un bon moment pour vous de faire une couverture avec
le message LoopBack sources de données et le contrôle d'accès.