1
00:00:03,550 --> 00:00:06,360
En el ejercicio anterior,

2
00:00:06,360 --> 00:00:10,860
hemos visto lo fácil que fue para nosotros configurar y luego

3
00:00:10,860 --> 00:00:15,950
andamiar un servidor de destinatarios usando el marco LoopBack.

4
00:00:15,950 --> 00:00:20,895
Vemos que este marco de LoopBack soporta todo un espectro

5
00:00:20,895 --> 00:00:23,040
de los endpoints destinatarios y

6
00:00:23,040 --> 00:00:26,324
todas las operaciones de los endpoints destinatarios automáticamente para nosotros,

7
00:00:26,324 --> 00:00:28,590
cuando desarrollamos nuestra aplicación.

8
00:00:28,590 --> 00:00:31,755
En este ejercicio, veremos cómo podemos conectar

9
00:00:31,755 --> 00:00:35,800
nuestro servidor LoopBack a una base de datos back-end,

10
00:00:35,800 --> 00:00:38,926
o MongoDB en esta instancia,

11
00:00:38,926 --> 00:00:45,565
y también veremos cómo podemos configurar varios controles de acceso en los extremos del destinatario.

12
00:00:45,565 --> 00:00:47,575
Por lo tanto, utilizando los controles de acceso,

13
00:00:47,575 --> 00:00:52,010
podemos especificar qué tipo de operaciones se pueden llevar a cabo en los puntos finales del destinatario,

14
00:00:52,010 --> 00:00:56,730
y a quién se le permitirá llevar a cabo esas operaciones.

15
00:00:56,730 --> 00:01:02,385
Entonces, por ejemplo, un usuario no autenticado o un invitado solo puede

16
00:01:02,385 --> 00:01:08,666
acceder a la información o realizar una operación get en los extremos del destinatario,

17
00:01:08,666 --> 00:01:13,484
un usuario autenticado también podría hacer lo mismo,

18
00:01:13,484 --> 00:01:21,240
pero solo un administrador podría escribir datos en mi servidor.

19
00:01:21,240 --> 00:01:27,025
Por lo tanto, cualquier operación de poner, publicar y eliminar solo puede ser llevada a cabo por un administrador. En

20
00:01:27,025 --> 00:01:32,535
el camino también veremos cómo podemos configurar una cuenta de administrador en nuestro servidor LoopBack,

21
00:01:32,535 --> 00:01:35,250
y luego configurarla para que

22
00:01:35,250 --> 00:01:38,880
solo el usuario administrador pueda realizar estas operaciones.

23
00:01:38,880 --> 00:01:42,246
Así que aquí es donde LoopBack nos permite definir algo

24
00:01:42,246 --> 00:01:46,080
llamado roles asociados con varios usuarios.

25
00:01:46,080 --> 00:01:48,645
Por lo tanto, a cada usuario se le puede asignar un rol.

26
00:01:48,645 --> 00:01:52,170
Como ejemplo, puede hablar de un usuario común,

27
00:01:52,170 --> 00:01:55,915
un administrador, un superadministrador, etc.

28
00:01:55,915 --> 00:02:00,675
Por lo tanto, puede subdividir su conjunto de usuarios en varios grupos

29
00:02:00,675 --> 00:02:03,793
y, a continuación, asignarles varios roles.

30
00:02:03,793 --> 00:02:09,885
También veremos cómo el modelo de usuario incorporado se puede personalizar aún más,

31
00:02:09,885 --> 00:02:11,790
dentro de nuestra aplicación LoopBack,

32
00:02:11,790 --> 00:02:16,290
y cómo podemos construir otro modelo sobre el modelo de usuario,

33
00:02:16,290 --> 00:02:19,710
y luego usar el modelo de usuario como la clase base

34
00:02:19,710 --> 00:02:23,400
y desarrollar un modelo de nivel superior llamado Modelo de cliente,

35
00:02:23,400 --> 00:02:27,060
que nos permite almacenar información adicional para cada uno

36
00:02:27,060 --> 00:02:30,999
de los clientes que iniciarán sesión en nuestro sitio.

37
00:02:30,999 --> 00:02:38,040
Por lo tanto, vamos a explorar algunas de estas características de LoopBack en este ejercicio.

38
00:02:38,040 --> 00:02:40,830
Para empezar en este ejercicio,

39
00:02:40,830 --> 00:02:42,645
lo primero que me gustaría que hicieras

40
00:02:42,645 --> 00:02:44,040
es arrancar tu servidor MongoDB.

41
00:02:44,040 --> 00:02:49,545
Así que aquí estoy en otra pestaña de terminal en mi carpeta MongoDB,

42
00:02:49,545 --> 00:02:52,950
donde configuré mi servidor MongoDB anteriormente,

43
00:02:52,950 --> 00:02:59,065
que fue utilizado por mi servidor Express Plus MongoDB en los ejercicios anteriores.

44
00:02:59,065 --> 00:03:03,775
Así que permítanme iniciar el servidor MongoDB escribiendo

45
00:03:03,775 --> 00:03:11,190
MonGod menos los datos de parte D-B

46
00:03:11,190 --> 00:03:15,334
en esta carpeta y luego iniciar mi servidor MongoDB.

47
00:03:15,334 --> 00:03:20,005
Ahora, voy a conectar mi servidor LoopBack a mi servidor MongoDB.

48
00:03:20,005 --> 00:03:23,920
Así que al entrar en mi carpeta de servidor LoopBack aquí,

49
00:03:23,920 --> 00:03:28,560
tengo que preguntar tipo fuente de datos L-B.

50
00:03:28,560 --> 00:03:32,820
Esto nos permitirá configurar la fuente de datos para nuestro servidor LoopBack.

51
00:03:32,820 --> 00:03:39,460
LoopBack puede conectarse simultáneamente a múltiples fuentes de datos si así lo decide,

52
00:03:39,460 --> 00:03:41,843
y admite varios tipos.

53
00:03:41,843 --> 00:03:46,800
Soporta bases de datos My Cycle, soporta MongoDB,

54
00:03:46,800 --> 00:03:52,175
soporta Cloudant que también es otra base de datos de documentos,

55
00:03:52,175 --> 00:03:58,410
soporta Oracle y muchos otros tipos de bases de datos.

56
00:03:58,410 --> 00:04:01,830
Por lo tanto, puede configurar fácilmente eso.

57
00:04:01,830 --> 00:04:04,620
En este ejemplo, voy a configurar mi servidor LoopBack

58
00:04:04,620 --> 00:04:07,810
para hablar con mi MongoDB en el back-end.

59
00:04:07,810 --> 00:04:09,445
Así que en el mensaje,

60
00:04:09,445 --> 00:04:11,590
si escribimos fuente de datos L-B,

61
00:04:11,590 --> 00:04:14,610
nos pedirá información.

62
00:04:14,610 --> 00:04:18,155
Así que lo primero que nos pedirá es el nombre del origen de datos,

63
00:04:18,155 --> 00:04:24,570
y luego configuraré este nombre de fuente de datos como MongoDB,

64
00:04:24,570 --> 00:04:29,315
y luego me pedirá que seleccione el conector.

65
00:04:29,315 --> 00:04:36,120
LoopBack utiliza conectores para conectarse a varias bases de datos entre bastidores.

66
00:04:36,120 --> 00:04:38,790
Entonces, como puede ver, el DB en memoria que es el que

67
00:04:38,790 --> 00:04:41,795
acaban de usar en el ejercicio anterior,

68
00:04:41,795 --> 00:04:45,105
pero por supuesto, el DB en memoria significa que una vez que apague su servidor,

69
00:04:45,105 --> 00:04:47,220
todos los valores desaparecerán,

70
00:04:47,220 --> 00:04:51,080
y eso no es un almacenamiento de datos persistente.

71
00:04:51,080 --> 00:04:58,440
Así que aquí puede ver los diversos tipos de bases de datos que StrongLoop soporta aquí.

72
00:04:58,440 --> 00:05:06,720
Así que puede ver la larga lista de las diversas bases de datos que son compatibles.

73
00:05:06,720 --> 00:05:09,280
Así que se puede ver que soporta Cassandra, Redis,

74
00:05:09,280 --> 00:05:15,360
nos habíamos referido brevemente a estos cuando hablamos de bases de datos NoSQL, MongoDB,

75
00:05:15,360 --> 00:05:18,385
My SQL, PostGres, Oracle,

76
00:05:18,385 --> 00:05:24,325
e incluso directamente a otros servidores API Rest a servidores SOAP,

77
00:05:24,325 --> 00:05:26,865
Coachbase y así sucesivamente.

78
00:05:26,865 --> 00:05:29,040
Así que usted ve que nos proporciona

79
00:05:29,040 --> 00:05:33,450
una larga lista de varios tipos de fuentes de datos desde allí,

80
00:05:33,450 --> 00:05:36,783
nuestro servidor LoopBack puede leer en la información.

81
00:05:36,783 --> 00:05:39,835
En mi caso, voy a usar el servidor MongoDB, así que

82
00:05:39,835 --> 00:05:43,170
voy a configurar el conector MongoDB.

83
00:05:43,170 --> 00:05:44,660
Entonces, cuando hago eso,

84
00:05:44,660 --> 00:05:50,775
LoopBack instalará automáticamente el conector MongoDB para nosotros,

85
00:05:50,775 --> 00:05:54,550
y cuando solicite la URL de la cadena de conexión,

86
00:05:54,550 --> 00:05:57,810
dejaremos esto vacío

87
00:05:57,810 --> 00:06:01,570
porque le permitiremos usar la forma estándar de configuración.

88
00:06:01,570 --> 00:06:04,550
Cuando pregunte por el host diremos

89
00:06:04,550 --> 00:06:09,815
localhost porque estamos ejecutando nuestro MongoDB en el mismo equipo.

90
00:06:09,815 --> 00:06:11,260
De lo contrario, especificará

91
00:06:11,260 --> 00:06:16,275
el nombre de host del equipo en el que se está ejecutando MongoDB.

92
00:06:16,275 --> 00:06:20,080
Entonces el siguiente es el número de puerto y estamos

93
00:06:20,080 --> 00:06:24,665
usando nuestro número de puerto estándar MongoDB 27017,

94
00:06:24,665 --> 00:06:29,186
y también pedirá el nombre de usuario y la contraseña si es necesario,

95
00:06:29,186 --> 00:06:32,770
y en este momento mi MongoDB se está ejecutando sin tener que

96
00:06:32,770 --> 00:06:36,850
hacer ninguna autenticación, así que dejo el nombre de usuario y la contraseña vacíos,

97
00:06:36,850 --> 00:06:38,575
y el nombre de base de datos.

98
00:06:38,575 --> 00:06:44,490
El nombre de la base de datos en el servidor MongoDB que se ejecuta detrás de las escenas,

99
00:06:44,490 --> 00:06:47,390
el nombre de la base de datos hay confusión.

100
00:06:47,390 --> 00:06:52,040
Si recuerda que ese es el nombre de la base de datos que han configurado en nuestro servidor MongoDB.

101
00:06:52,040 --> 00:06:56,900
Y luego nos preguntará si debe instalar el conector LoopBack,

102
00:06:56,900 --> 00:06:58,750
y diré que sí, y en

103
00:06:58,750 --> 00:07:02,410
realidad seguirá adelante e instalará el módulo NPM que accede al

104
00:07:02,410 --> 00:07:07,715
conector LoopBack a la base de datos MongoDB.

105
00:07:07,715 --> 00:07:09,415
Y una vez hecho esto,

106
00:07:09,415 --> 00:07:14,630
mi conector Loopback está instalado aquí para que pueda ver que esta es la versión 1.18.1

107
00:07:14,630 --> 00:07:19,910
y mi servidor LoopBack está listo para hablar con mi MongoDB.

108
00:07:19,910 --> 00:07:22,615
Ahora, antes de continuar,

109
00:07:22,615 --> 00:07:26,090
en el ejercicio anterior realmente no configuro algunos modelos

110
00:07:26,090 --> 00:07:30,115
y luego los especifico para almacenarlos en el DB,

111
00:07:30,115 --> 00:07:35,295
necesitaré ir y actualizarlos para almacenar sus datos en mi MongoDB.

112
00:07:35,295 --> 00:07:41,610
Por lo tanto, vamos a restablecer rápidamente nuestro código para el servidor LoopBack.

113
00:07:41,610 --> 00:07:44,770
Esto también nos brinda la oportunidad de ver

114
00:07:44,770 --> 00:07:49,030
lo que mi servidor Loopback ha configurado en esta carpeta.

115
00:07:49,030 --> 00:07:54,730
Al abrir la carpeta LoopBack en nuestro editor,

116
00:07:54,730 --> 00:07:58,200
puede ver que Loopback ya tiene

117
00:07:58,200 --> 00:08:02,000
un montón de archivos en esta carpeta.

118
00:08:02,000 --> 00:08:04,080
El package.json, por supuesto, contiene

119
00:08:04,080 --> 00:08:10,275
todos los módulos NPM relacionados que se han configurado aquí,

120
00:08:10,275 --> 00:08:17,901
y aquí puede ver que LoopBack sí mismo ha configurado el módulo LoopBack NPM,

121
00:08:17,901 --> 00:08:20,970
el módulo de arranque LoopBack y, en

122
00:08:20,970 --> 00:08:24,840
particular, permítanme llamar su atención sobre el LoopBack MongoDB ,

123
00:08:24,840 --> 00:08:32,055
que acabamos de instalar hace poco, y muchos otros.

124
00:08:32,055 --> 00:08:36,150
En particular, la configuración para el servidor Loopback se

125
00:08:36,150 --> 00:08:40,075
almacena principalmente en archivos Json aquí,

126
00:08:40,075 --> 00:08:44,970
con javascriptcore adicional siempre que sea necesario.

127
00:08:44,970 --> 00:08:50,670
Buscaremos la personalización del código javascript un poco más tarde.

128
00:08:50,670 --> 00:08:53,875
Permítanme llamar su atención sobre esta carpeta llamada común.

129
00:08:53,875 --> 00:08:55,850
En esta carpeta común,

130
00:08:55,850 --> 00:09:01,725
verá todos los modelos que hemos configurado anteriormente.

131
00:09:01,725 --> 00:09:04,860
Así que verá que tenemos los archivos dishes.json.

132
00:09:04,860 --> 00:09:09,210
Entonces, cuando abre el archivo dishes.json, ve cómo LoopBack

133
00:09:09,210 --> 00:09:14,695
almacena toda la información sobre el modelo de platos que acaba de crear,

134
00:09:14,695 --> 00:09:17,790
por lo que tiene el nombre, la base

135
00:09:17,790 --> 00:09:21,655
y algunos otros valores aquí que requiere.

136
00:09:21,655 --> 00:09:27,369
Y luego mira las propiedades y cómo todas las propiedades se almacenan aquí.

137
00:09:27,369 --> 00:09:30,735
Así que ves algunas cosas que son muy fáciles de

138
00:09:30,735 --> 00:09:34,790
reconocer que están en el archivo dishes.json.

139
00:09:34,790 --> 00:09:39,040
Del mismo modo, los leaders.json y los promotions.json.

140
00:09:39,040 --> 00:09:42,171
El archivo dishes.js es grande,

141
00:09:42,171 --> 00:09:46,007
podemos agregar algún código de personalización adicional para los platos,

142
00:09:46,007 --> 00:09:48,050
pero en este momento no vamos a hacer eso,

143
00:09:48,050 --> 00:09:50,755
por lo que simplemente lo dejaremos tal como está.

144
00:09:50,755 --> 00:09:56,130
Entonces, aquí es donde puede agregar algún código adicional que puede

145
00:09:56,130 --> 00:10:02,610
necesitar ejecutarse cuando accede al punto final de los platos de barra diagonal.

146
00:10:02,610 --> 00:10:07,630
Pero ahora mismo vamos a dejarlo en blanco por el momento.

147
00:10:07,630 --> 00:10:11,725
Ahora veamos también la carpeta del servidor aquí.

148
00:10:11,725 --> 00:10:13,465
Y la carpeta del servidor,

149
00:10:13,465 --> 00:10:18,745
en particular, permítanme llamar su atención sobre el archivo datasources.json aquí.

150
00:10:18,745 --> 00:10:20,996
En el archivo.json de origen de datos,

151
00:10:20,996 --> 00:10:23,740
todas las fuentes de datos diferentes se configurarán aquí.

152
00:10:23,740 --> 00:10:26,470
Así que ahora mismo, solo tenemos el DB que es

153
00:10:26,470 --> 00:10:31,634
la base de datos de base de datos en memoria que LoopBack configura por defecto,

154
00:10:31,634 --> 00:10:34,045
y luego el MongoDB que acabamos de configurar,

155
00:10:34,045 --> 00:10:36,700
solo absorbió la información de que la entrada

156
00:10:36,700 --> 00:10:40,570
se ha almacenado en esas fuentes de datos, archivo json.

157
00:10:40,570 --> 00:10:46,880
Por lo tanto, verá que LoopBack funciona configurando todos estos archivos

158
00:10:46,880 --> 00:10:50,493
que el marco de LoopBack hace uso cuando

159
00:10:50,493 --> 00:10:56,332
inicia el servidor de API de descanso basado en Loopback.

160
00:10:56,332 --> 00:11:00,620
Vamos al archivo config.json modelo aquí.

161
00:11:00,620 --> 00:11:03,050
El archivo config.json del modelo

162
00:11:03,050 --> 00:11:09,028
almacena una gran cantidad de información aquí que es útil para nosotros,

163
00:11:09,028 --> 00:11:13,810
pero aquí, vamos a entrar y modificar algunas cosas.

164
00:11:13,810 --> 00:11:20,500
Así que en esto, veremos que hay de nuevo para los platos,

165
00:11:20,500 --> 00:11:24,965
promociones y líderes, la fuente de datos se ha configurado como DB.

166
00:11:24,965 --> 00:11:32,150
Así que vamos a modificar eso a MongoDB aquí.

167
00:11:32,150 --> 00:11:34,700
No solo para este,

168
00:11:34,700 --> 00:11:39,053
también cambiarán eso para promociones, y también líderes,

169
00:11:39,053 --> 00:11:45,590
lo que significa, que todos estos tres derivarán sus datos del MongoDB.

170
00:11:45,590 --> 00:11:48,720
Además, para el Rol que se define aquí.

171
00:11:48,720 --> 00:11:50,170
También almacenaremos en MongoDB.

172
00:11:50,170 --> 00:11:53,635
Muy pronto veremos cómo vamos a hacer uso del rol,

173
00:11:53,635 --> 00:11:56,290
y también del rolemapping aquí.

174
00:11:56,290 --> 00:12:00,675
Entenderemos la razón de estos dos en poco tiempo.

175
00:12:00,675 --> 00:12:04,030
Y luego, ACL, las Listas de Control de Acceso,

176
00:12:04,030 --> 00:12:07,740
estas también se almacenarán en MongoDB.

177
00:12:07,740 --> 00:12:10,210
Y luego, el usuario, también,

178
00:12:10,210 --> 00:12:12,105
lo almacenaremos en MongoDB,

179
00:12:12,105 --> 00:12:13,848
y luego lo dejarán allí.

180
00:12:13,848 --> 00:12:17,175
Por lo tanto, estas son las modificaciones que debe hacer en

181
00:12:17,175 --> 00:12:23,744
el archivo model-config.json y luego guardar los cambios.

182
00:12:23,744 --> 00:12:27,239
Como mencioné anteriormente, Loopback de forma predeterminada,

183
00:12:27,239 --> 00:12:29,705
soporta este modelo llamado, usuario,

184
00:12:29,705 --> 00:12:33,215
que se utiliza para admitir la autenticación del usuario.

185
00:12:33,215 --> 00:12:36,890
El propio modelo de usuario almacena solo tres propiedades diferentes.

186
00:12:36,890 --> 00:12:40,100
El nombre de usuario, la dirección de correo electrónico

187
00:12:40,100 --> 00:12:42,890
y la información relacionada con la contraseña.

188
00:12:42,890 --> 00:12:44,060
Ahora, si quieren tener

189
00:12:44,060 --> 00:12:49,125
una forma más elaborada de almacenar información adicional sobre los usuarios.

190
00:12:49,125 --> 00:12:54,200
Luego pueden subclasificar este modelo base de usuarios,

191
00:12:54,200 --> 00:12:56,180
y luego hacer uso de eso.

192
00:12:56,180 --> 00:12:57,950
Entonces, en este próximo paso,

193
00:12:57,950 --> 00:13:01,880
voy a crear otro modelo llamado, el modelo del cliente,

194
00:13:01,880 --> 00:13:08,490
que utilizará al usuario como modelo base para su funcionamiento.

195
00:13:08,490 --> 00:13:13,005
Y el modelo de cliente en sí almacenará información adicional sobre los usuarios.

196
00:13:13,005 --> 00:13:14,255
Entonces, en el modelo del cliente,

197
00:13:14,255 --> 00:13:16,820
almacenaré las cosas como

198
00:13:16,820 --> 00:13:20,900
el nombre, el apellido y la imagen para el usuario, etc.

199
00:13:20,900 --> 00:13:24,035
Por lo tanto, el cliente actuará exactamente como el modelo de usuario,

200
00:13:24,035 --> 00:13:29,889
que ya viene con su propio conjunto de métodos.

201
00:13:29,889 --> 00:13:32,780
Por lo tanto, el modelo de usuario se utiliza para la autenticación del usuario, de

202
00:13:32,780 --> 00:13:34,700
modo que puede escribir el nombre de usuario y la contraseña,

203
00:13:34,700 --> 00:13:35,930
e iniciar sesión y cerrar sesión.

204
00:13:35,930 --> 00:13:41,850
Por lo tanto, cuando creamos este modelo de cliente basado en la clase base del modelo de usuario,

205
00:13:41,850 --> 00:13:44,742
el modelo de cliente también admitirá

206
00:13:44,742 --> 00:13:47,680
las operaciones de inicio de sesión y cierre de sesión en el uso de este modelo de cliente.

207
00:13:47,680 --> 00:13:51,880
Por lo tanto, podemos iniciar sesión en el usuario y cerrar la sesión del usuario y así sucesivamente.

208
00:13:51,880 --> 00:13:56,520
Por lo tanto, la autenticación del usuario viene automáticamente por la derecha.

209
00:13:56,520 --> 00:13:59,750
Por lo tanto, para crear el modelo de cliente, en el mensaje,

210
00:13:59,750 --> 00:14:03,340
escriba lb model y para el nombre del modelo,

211
00:14:03,340 --> 00:14:06,440
escribiremos Cliente.

212
00:14:06,440 --> 00:14:10,700
Y el DataSource, lo elegiré como MongoDB.

213
00:14:10,700 --> 00:14:15,080
Y luego, cuando solicite seleccionar la clase base del modelo,

214
00:14:15,080 --> 00:14:17,435
en lugar de usar PersistedModel

215
00:14:17,435 --> 00:14:18,875
, bajaremos

216
00:14:18,875 --> 00:14:23,570
y luego seleccionaremos el Usuario como clase base.

217
00:14:23,570 --> 00:14:27,215
Por lo tanto, de esa manera, derivará todas sus propiedades

218
00:14:27,215 --> 00:14:31,275
de la clase de usuario base que ya está integrada en Loopback.

219
00:14:31,275 --> 00:14:35,370
Y luego expondremos esto con la API REST

220
00:14:35,370 --> 00:14:39,353
y el MT plural personalizado.

221
00:14:39,353 --> 00:14:42,765
Y entonces esto estaría en la carpeta común.

222
00:14:42,765 --> 00:14:49,081
Y para esto, las tres propiedades que vamos a agregar son,

223
00:14:49,081 --> 00:14:54,900
nombre, que tendríamos la cadena de tipos.

224
00:14:54,900 --> 00:14:58,700
Y esto no es obligatorio o no tiene un valor predeterminado.

225
00:14:58,700 --> 00:15:05,895
Y, a continuación, el apellido de nuevo como la cadena de tipo,

226
00:15:05,895 --> 00:15:08,825
no es necesario, y ningún valor predeterminado.

227
00:15:08,825 --> 00:15:11,860
Y luego la imagen de la cadena de tipo,

228
00:15:11,860 --> 00:15:15,249
no es necesaria y no hay valor predeterminado.

229
00:15:15,249 --> 00:15:18,095
Por lo tanto, verá que la clase de cliente

230
00:15:18,095 --> 00:15:22,546
tiene propiedades adicionales además de la clase de usuario.

231
00:15:22,546 --> 00:15:25,006
la clase de usuario ya admite el nombre de usuario,

232
00:15:25,006 --> 00:15:28,465
el correo electrónico y la información relacionada con la contraseña.

233
00:15:28,465 --> 00:15:30,185
Por lo tanto, la clase de cliente,

234
00:15:30,185 --> 00:15:32,030
ya que la subclase es la clase base,

235
00:15:32,030 --> 00:15:38,405
obtendremos el nombre de usuario y el correo electrónico automáticamente de la clase de usuario.

236
00:15:38,405 --> 00:15:41,870
Y ahora, cuando vaya al archivo model-config.jason,

237
00:15:41,870 --> 00:15:46,725
verá que el modelo de cliente ya se ha agregado allí.

238
00:15:46,725 --> 00:15:48,390
Y luego, en los modelos comunes,

239
00:15:48,390 --> 00:15:51,278
ahora verá el archivo customer.json agregado allí

240
00:15:51,278 --> 00:15:55,365
con estas tres propiedades adicionales que hemos agregado al modelo de cliente.

241
00:15:55,365 --> 00:16:02,020
Pero tenga en cuenta que especifica la base como la clase de usuario para el modelo de cliente aquí.

242
00:16:02,020 --> 00:16:04,760
Entonces, así es como Loopback le permite tomar

243
00:16:04,760 --> 00:16:09,832
una clase de modelo base y luego subclase eso en la clase modelo.

244
00:16:09,832 --> 00:16:16,340
Por lo tanto, verá cómo Loopback nos permite admitir automáticamente la autenticación de usuario usando

245
00:16:16,340 --> 00:16:23,855
la clase de usuario y luego nos permite incluso definir subclase adicional de esa,

246
00:16:23,855 --> 00:16:29,780
que almacenará información adicional relacionada con la clase base de usuarios.

247
00:16:29,780 --> 00:16:32,660
A continuación, configuraremos el Control de Acceso para

248
00:16:32,660 --> 00:16:38,210
los diferentes modelos que ya hemos configurado en nuestro servidor Loopback.

249
00:16:38,210 --> 00:16:40,190
Por lo tanto, para configurar el Control de Acceso,

250
00:16:40,190 --> 00:16:45,170
o las Listas de Control de Acceso en Lookback.

251
00:16:45,170 --> 00:16:49,730
Loopback utiliza estas listas de control de acceso como una forma de especificar qué tipo de

252
00:16:49,730 --> 00:16:51,290
operaciones se pueden realizar en

253
00:16:51,290 --> 00:16:55,280
los diferentes extremos de la API REST se corresponden con los diferentes modelos.

254
00:16:55,280 --> 00:16:58,695
Por lo tanto, para hacer eso, escribiremos en el indicador lb acl,

255
00:16:58,695 --> 00:17:01,880
ACL significa listas de control de acceso.

256
00:17:01,880 --> 00:17:06,980
Y luego, cuando esto se agote, diremos, a

257
00:17:06,980 --> 00:17:11,960
qué modelo queremos que se aplique esta lista de control de acceso.

258
00:17:11,960 --> 00:17:14,678
Y luego diremos, todos los modelos existentes.

259
00:17:14,678 --> 00:17:18,845
Y diremos, Todas las métricas y propiedades.

260
00:17:18,845 --> 00:17:20,810
Y diremos,

261
00:17:20,810 --> 00:17:23,233
Todo tipo de operaciones.

262
00:17:23,233 --> 00:17:25,910
Y luego, diremos, Todos los usuarios.

263
00:17:25,910 --> 00:17:28,730
Y luego diremos: Denegar explícitamente el acceso.

264
00:17:28,730 --> 00:17:32,976
Por lo tanto, primero estamos cerrando todos los modelos para todo,

265
00:17:32,976 --> 00:17:34,670
luego nos abriremos lentamente,

266
00:17:34,670 --> 00:17:38,270
independientemente de las operaciones que puedan realizar diferentes usuarios.

267
00:17:38,270 --> 00:17:40,385
Por lo tanto, primer paso, hemos cerrado

268
00:17:40,385 --> 00:17:45,715
todos los tipos de operaciones en todos los modelos que tenemos actualmente.

269
00:17:45,715 --> 00:17:51,740
Luego, lentamente comenzaremos a abrir todas y cada una de las operaciones, paso a paso.

270
00:17:51,740 --> 00:17:53,300
Ahora, el siguiente paso,

271
00:17:53,300 --> 00:17:59,960
lo que vamos a hacer es volver a configurar la siguiente lista de control de acceso.

272
00:17:59,960 --> 00:18:02,525
En la segunda lista de control de acceso, diremos,

273
00:18:02,525 --> 00:18:06,095
para todos los modelos existentes y diremos,

274
00:18:06,095 --> 00:18:08,930
Todas las métricas y propiedades.

275
00:18:08,930 --> 00:18:13,400
Y luego, diremos, solo acceso de lectura.

276
00:18:13,400 --> 00:18:18,416
Es decir, cuando el usuario puede realizar las operaciones GET en estos puertos finales.

277
00:18:18,416 --> 00:18:24,680
Y estas operaciones GET pueden ser realizadas por todos los usuarios.

278
00:18:24,680 --> 00:18:27,805
Por lo tanto, los usuarios pueden recuperar información.

279
00:18:27,805 --> 00:18:31,605
Y concederemos explícitamente el acceso para esto.

280
00:18:31,605 --> 00:18:35,804
Por lo tanto, lo que significa que las operaciones GET están permitidas en el nodo de extremos de la API REST.

281
00:18:35,804 --> 00:18:37,610
Primero, cerramos todo,

282
00:18:37,610 --> 00:18:40,880
luego abrimos solo las operaciones GET para los usuarios.

283
00:18:40,880 --> 00:18:46,175
Ahora, finalmente, irán a cada uno de los modelos,

284
00:18:46,175 --> 00:18:49,490
y luego se cerrarán y permitirán que ciertas operaciones solo

285
00:18:49,490 --> 00:18:53,068
sean realizadas por ciertos tipos de usuarios.

286
00:18:53,068 --> 00:18:54,625
Por lo tanto, para hacer eso,

287
00:18:54,625 --> 00:19:00,511
la próxima ACL que vamos a configurar es para un modelo específico.

288
00:19:00,511 --> 00:19:03,197
Así que prepararemos este para los platos.

289
00:19:03,197 --> 00:19:06,445
Y diremos, un solo método.

290
00:19:06,445 --> 00:19:08,685
Y luego el nombre del método es, crear.

291
00:19:08,685 --> 00:19:13,320
Por lo tanto, lo que significa que la creación de estos sólo será permitida por.

292
00:19:13,320 --> 00:19:15,850
Por lo tanto, de nuevo, cuando se dice seleccionar el rol,

293
00:19:15,850 --> 00:19:18,260
entonces para el rol, vamos a decir, otro.

294
00:19:18,260 --> 00:19:20,530
Y luego el nombre del rol sería admin. Por

295
00:19:20,530 --> 00:19:24,663
lo tanto, lo que estamos haciendo con esta operación es que,

296
00:19:24,663 --> 00:19:32,755
estamos diciendo que solo un usuario administrador puede crear nuevos platos o actualizar los platos existentes.

297
00:19:32,755 --> 00:19:38,535
Por lo tanto, esto es un poco cerca, las operaciones restantes.

298
00:19:38,535 --> 00:19:45,669
Por lo tanto, hagamos lo mismo por los líderes.

299
00:19:45,669 --> 00:19:48,880
Y un solo método y luego,

300
00:19:48,880 --> 00:19:53,821
el crear y diremos,

301
00:19:53,821 --> 00:19:58,320
solo el administrador puede hacer esto.

302
00:19:58,320 --> 00:20:04,330
Y luego, finalmente, también para promociones.

303
00:20:04,330 --> 00:20:05,919
Para promociones.

304
00:20:05,919 --> 00:20:10,210
El método único, el método de creación

305
00:20:10,210 --> 00:20:15,415
sólo será permitido por los usuarios que tengan el rol designado como administrador.

306
00:20:15,415 --> 00:20:20,340
Veremos cómo vamos a crear usuarios con un rol específico en el siguiente paso.

307
00:20:20,340 --> 00:20:22,398
Conceder acceso explícitamente.

308
00:20:22,398 --> 00:20:26,995
Ahora observe que no he cerrado clientes para crear operaciones.

309
00:20:26,995 --> 00:20:28,305
Si cierro clientes,

310
00:20:28,305 --> 00:20:31,383
nadie podrá registrarse en el sistema.

311
00:20:31,383 --> 00:20:33,220
Así que, por eso dejaré eso abierto.

312
00:20:33,220 --> 00:20:37,170
Porque, el cliente debe poder registrarse en el sistema.

313
00:20:37,170 --> 00:20:41,364
Por lo tanto, puede registrarse para nuevas cuentas en el sistema.

314
00:20:41,364 --> 00:20:42,420
Cuentas de usuario en el sistema.

315
00:20:42,420 --> 00:20:45,585
Por lo tanto, eso quedará abierto para que la gente lo haga.

316
00:20:45,585 --> 00:20:50,800
Por lo tanto, para permitir que para los clientes, vamos a decir, clientes,

317
00:20:50,800 --> 00:20:59,880
Un método único, crear todos los usuarios.

318
00:20:59,880 --> 00:21:03,450
Por lo tanto, los clientes pueden ser creados por todos los usuarios porque eso

319
00:21:03,450 --> 00:21:07,125
permitirá a las personas iniciar sesión en su cuenta.

320
00:21:07,125 --> 00:21:11,820
Finalmente, veremos cómo podemos configurar nuestro servidor para que se inicie

321
00:21:11,820 --> 00:21:17,590
con un único usuario administrador configurado automáticamente en nuestro servidor Loopback.

322
00:21:17,590 --> 00:21:19,300
Por lo tanto, para hacer eso,

323
00:21:19,300 --> 00:21:20,820
en nuestro servidor Loopback,

324
00:21:20,820 --> 00:21:25,015
en la carpeta del servidor tenemos esta subcarpeta de arranque aquí.

325
00:21:25,015 --> 00:21:28,380
Cualquier código que coloquemos en la subcarpeta de arranque,

326
00:21:28,380 --> 00:21:33,385
se ejecutará en el inicio de nuestro servidor LoopBack.

327
00:21:33,385 --> 00:21:37,253
Entonces, aquí, verá que ya tenemos este authentication.js,

328
00:21:37,253 --> 00:21:38,490
que ya está configurado,

329
00:21:38,490 --> 00:21:42,255
un Loopback que configurará la autenticación de usuario para nosotros.

330
00:21:42,255 --> 00:21:44,790
Y luego tenemos el root.js que configurará

331
00:21:44,790 --> 00:21:49,650
alguna información adicional para nuestro servidor RAM Loopback.

332
00:21:49,650 --> 00:21:52,920
Y podemos añadir archivos adicionales aquí.

333
00:21:52,920 --> 00:21:55,696
Entonces, voy a entrar allí en la carpeta de arranque,

334
00:21:55,696 --> 00:22:01,111
y luego agregar este archivo llamado, script.js.

335
00:22:01,111 --> 00:22:03,259
Y en este script.js,

336
00:22:03,259 --> 00:22:07,610
voy a configurar el código para crear un usuario administrador de forma predeterminada.

337
00:22:07,610 --> 00:22:08,785
Entonces, en el script.js,

338
00:22:08,785 --> 00:22:12,335
que no será más que un módulo NPM basado en archivos, entonces,

339
00:22:12,335 --> 00:22:13,995
comenzaremos diciendo,

340
00:22:13,995 --> 00:22:21,050
module.exports = function (app).

341
00:22:21,050 --> 00:22:23,355
La aplicación es la aplicación Loopback,

342
00:22:23,355 --> 00:22:28,185
que se suministrará como parámetro a esta función para nosotros.

343
00:22:28,185 --> 00:22:32,072
Por lo tanto, podemos hacer uso de él dentro de nuestro código aquí.

344
00:22:32,072 --> 00:22:39,585
Por lo tanto, aquí, primero configuraremos un usuario administrador.

345
00:22:39,585 --> 00:22:41,003
Por lo tanto, para hacer eso, diremos,

346
00:22:41,003 --> 00:22:51,840
var Cliente = app.models.Customer.

347
00:22:51,840 --> 00:22:56,580
Por lo tanto, esto nos da acceso al modelo de cliente.

348
00:22:56,580 --> 00:23:03,321
Entonces diremos, clientes.findone.

349
00:23:03,321 --> 00:23:08,820
Por lo tanto, primero comprobaremos si un usuario con

350
00:23:08,820 --> 00:23:16,920
el nombre de usuario como admin ya está configurado en el sistema o no.

351
00:23:16,920 --> 00:23:20,585
Si no, entonces voy a crear un usuario administrador.

352
00:23:20,585 --> 00:23:30,230
Y esto me proporciona una función de devolución de llamada con dos parámetros, err y usuarios.

353
00:23:30,230 --> 00:23:34,470
Y dentro de esto- Así que primero intentaremos

354
00:23:34,470 --> 00:23:39,195
ver si ya existe un usuario con su nombre admin.

355
00:23:39,195 --> 00:23:40,800
Si el usuario no existe,

356
00:23:40,800 --> 00:23:42,453
entonces crearemos el usuario.

357
00:23:42,453 --> 00:23:43,800
Entonces, para crear el usuario,

358
00:23:43,800 --> 00:23:49,326
diremos aquí, si no los usuarios.

359
00:23:49,326 --> 00:23:55,830
Entonces, si los usuarios no son nulos o si el usuario dice nulo,

360
00:23:55,830 --> 00:24:02,305
entonces eso significa que no hay usuario administrador, así que necesito crear un usuario administrador aquí.

361
00:24:02,305 --> 00:24:09,330
Entonces, en este caso, diremos, customer.create.

362
00:24:09,330 --> 00:24:19,835
Y esta creación toma una matriz de objetos si lo desea.

363
00:24:19,835 --> 00:24:30,235
Y esta matriz de objetos nos permitirá especificar qué cuentas de usuario queremos crear.

364
00:24:30,235 --> 00:24:33,575
Entonces, la primera cuenta de usuario que quiero crear o

365
00:24:33,575 --> 00:24:38,678
la única cuenta de usuario que quiero crear es la 'Administrador'.

366
00:24:38,678 --> 00:24:41,845
Así que este será el administrador predeterminado para

367
00:24:41,845 --> 00:24:47,447
mi servidor de bucle invertido y luego puedo configurar el correo electrónico.

368
00:24:47,447 --> 00:24:56,850
Así que recuerde que el modelo de usuario admite estas propiedades,

369
00:24:56,850 --> 00:25:02,380
confusion.net y luego la contraseña

370
00:25:02,380 --> 00:25:07,253
que configuraré como contraseña.

371
00:25:07,253 --> 00:25:09,790
También puede proporcionar junto con esto,

372
00:25:09,790 --> 00:25:11,560
el nombre y el apellido,

373
00:25:11,560 --> 00:25:14,345
si lo desea, para el usuario administrador.

374
00:25:14,345 --> 00:25:16,975
Pero voy a dejarlo como tal,

375
00:25:16,975 --> 00:25:20,640
como vacío porque no son necesarios para el usuario administrador.

376
00:25:20,640 --> 00:25:22,270
Así que voy a dejarlo ahí.

377
00:25:22,270 --> 00:25:28,765
Así que este comando terminará creando un nuevo cliente con el nombre 'Admin'.

378
00:25:28,765 --> 00:25:34,480
Así que si este usuario o el nombre «Admin» no existe,

379
00:25:34,480 --> 00:25:36,194
entonces vamos a crear uno.

380
00:25:36,194 --> 00:25:43,800
Y luego aquí tenemos la función de devolución de llamada.

381
00:25:45,150 --> 00:25:54,240
Así que erran usuarios.

382
00:25:54,240 --> 00:25:57,965
Ahora voy a decir,

383
00:25:57,965 --> 00:26:06,850
si erran, no sabemos lo que está tratando de hacer así que simplemente lanzaremos el error.

384
00:26:06,850 --> 00:26:12,210
Pero normalmente no esperaremos que esto suceda.

385
00:26:12,210 --> 00:26:17,650
Entonces, ¿cómo designa a este usuario como usuario administrativo?

386
00:26:17,650 --> 00:26:19,290
Así que ahora mismo, cuando me inscribo aquí,

387
00:26:19,290 --> 00:26:21,305
solo estoy registrando a un usuario normal aquí,

388
00:26:21,305 --> 00:26:24,270
pero queremos darle un rol especial a este usuario.

389
00:26:24,270 --> 00:26:30,775
Entonces, ahí es donde el bucle invertido admite una forma de especificar roles para los usuarios.

390
00:26:30,775 --> 00:26:32,775
Entonces, para especificar un rol,

391
00:26:32,775 --> 00:26:39,609
vamos a var Role = App.Models.Role.

392
00:26:39,609 --> 00:26:42,490
Así que esto me permitirá crear un rol,

393
00:26:42,490 --> 00:26:44,670
un nuevo administrador de llamada de rol aquí.

394
00:26:44,670 --> 00:26:48,600
Así que podemos asignar diferentes drones a diferentes usuarios si lo desea.

395
00:26:48,600 --> 00:26:50,365
Y junto con esto,

396
00:26:50,365 --> 00:26:55,394
también necesito crear un RoleMapapping aquí.

397
00:26:55,394 --> 00:27:05,519
Así que diremos, App.Models.Rolemapping.

398
00:27:05,519 --> 00:27:12,045
Y si sucede que la base de datos ya contiene

399
00:27:12,045 --> 00:27:18,821
cualquier RoleMapping que ya existe,

400
00:27:18,821 --> 00:27:25,290
entonces voy a destruir todos esos cuando inicie mi servidor.

401
00:27:25,290 --> 00:27:35,650
Y luego déjame

402
00:27:36,120 --> 00:27:40,550
intentar ver si

403
00:27:40,550 --> 00:27:46,130
ya

404
00:27:46,130 --> 00:27:53,180
existe un rol con ese nombre admin en el sistema.

405
00:27:53,180 --> 00:27:54,885
Está bien.

406
00:27:54,885 --> 00:27:56,420
Y en esto toma,

407
00:27:56,420 --> 00:27:57,560
como era de esperar,

408
00:27:57,560 --> 00:28:06,795
una función de devolución de llamada y dentro de aquí diremos, Role. Findone.

409
00:28:06,795 --> 00:28:10,530
Entonces, si ya existe un rol con el nombre admin,

410
00:28:10,530 --> 00:28:11,927
entonces no necesito crear uno.

411
00:28:11,927 --> 00:28:18,710
De lo contrario, si eso no existe,

412
00:28:18,710 --> 00:28:20,427
entonces necesito crear el rol.

413
00:28:20,427 --> 00:28:29,540
Así que diremos, Rol. Create.

414
00:28:29,540 --> 00:28:34,950
Así que vamos a crear el rol de administrador aquí.

415
00:28:34,950 --> 00:28:45,230
Y luego esto nos lleva a los parámetros err,

416
00:28:45,230 --> 00:28:52,523
rol aquí, en la función de devolución de llamada.

417
00:28:52,523 --> 00:28:56,215
Ahora de nuevo, aquí para manejar el error,

418
00:28:56,215 --> 00:29:03,749
simplemente copiaremos este 'if err' y luego lo pegaremos allí.

419
00:29:03,749 --> 00:29:06,685
Del mismo modo aquí también, si ocurre el error,

420
00:29:06,685 --> 00:29:09,415
entonces necesito manejar eso.

421
00:29:09,415 --> 00:29:12,820
Así que 'si errar' entonces 'arroja el error'.

422
00:29:12,820 --> 00:29:21,787
De lo contrario, hemos creado el rol.

423
00:29:21,787 --> 00:29:28,625
Así que ahora necesito asignar este rol a este usuario en particular que acabo de crear.

424
00:29:28,625 --> 00:29:31,658
Este usuario que acabo de crear aquí.

425
00:29:31,658 --> 00:29:36,660
Este usuario. Quiero darle a este usuario ese rol del administrador.

426
00:29:36,660 --> 00:29:39,140
Así que ya que he creado este rol por el nombre admin,

427
00:29:39,140 --> 00:29:47,167
así que diremos, role.principals.create.

428
00:29:47,167 --> 00:29:56,954
Así es como se crea una asignación entre el rol y un usuario en particular aquí.

429
00:29:56,954 --> 00:29:59,370
Así que diremos, role.principals.create.

430
00:29:59,370 --> 00:30:01,735
Así que esta es la sintaxis allí.

431
00:30:01,735 --> 00:30:17,320
Diremos, principalType: rolemapping.user

432
00:30:17,320 --> 00:30:25,330
aquí y tomará

433
00:30:25,330 --> 00:30:32,385
una identificación principal aquí, que son los usuarios.

434
00:30:32,385 --> 00:30:36,320
Ahora, ¿a qué se refiere este usuario?

435
00:30:36,320 --> 00:30:40,418
Estos usuarios se refieren a esto que acaba de entrar.

436
00:30:40,418 --> 00:30:43,520
Así que cuando creamos estos usuarios,

437
00:30:43,520 --> 00:30:49,335
entonces el cliente debe crear un retorno exitoso a nosotros aquí.

438
00:30:49,335 --> 00:30:51,905
Así que eso es lo que voy a usar aquí.

439
00:30:51,905 --> 00:30:53,240
Vamos a decir, usuarios [0].

440
00:30:53,240 --> 00:30:58,430
Por lo tanto, esta sería una matriz de usuarios que se han creado y contienen solo uno de ellos.

441
00:30:58,430 --> 00:31:01,748
Entonces, es por eso que estoy diciendo usuario [0].

442
00:31:01,748 --> 00:31:08,037
Y luego asignaremos el ID de ese usuario aquí.

443
00:31:08,037 --> 00:31:14,215
Así es como crearemos un RoleMapping entre el rol que acabamos de crear,

444
00:31:14,215 --> 00:31:20,639
este rol, y luego lo asignaremos al cliente que acabamos de crear.

445
00:31:20,639 --> 00:31:29,315
Ahora esto también nos lleva a los parámetros, la función de devolución de llamada.

446
00:31:29,315 --> 00:31:33,735
Y en esta función de devolución de llamada simplemente diremos,

447
00:31:33,735 --> 00:31:35,950
if (err) throw (err).

448
00:31:35,950 --> 00:31:41,825
De lo contrario, no estamos realmente interesados en saber qué más ha sucedido allí.

449
00:31:41,825 --> 00:31:44,055
Eso es todo. Así que así es como.

450
00:31:44,055 --> 00:31:46,870
Por lo tanto, si el rol denominado admin no existe,

451
00:31:46,870 --> 00:31:48,819
crearemos ese rol.

452
00:31:48,819 --> 00:31:53,785
Si no - Así que esta es la

453
00:31:53,785 --> 00:32:01,170
parte 'otra' donde todavía tendré que hacer este mapeo.

454
00:32:01,170 --> 00:32:08,140
Así que déjame copiar ese código y luego haré exactamente eso aquí.

455
00:32:08,140 --> 00:32:15,834
Entonces role.principals.create y luego mapea esto para el usuario allí.

456
00:32:15,834 --> 00:32:17,980
Entonces, si el rol de administrador ya existe,

457
00:32:17,980 --> 00:32:20,730
entonces todo lo que necesitan hacer es hacer la asignación.

458
00:32:20,730 --> 00:32:28,420
Así que esto se almacenará en el modelo RoleMapping en nuestra base de datos. Eso es todo.

459
00:32:28,420 --> 00:32:34,520
Así que este fragmento de código que ponemos en el archivo script.js primero intentará

460
00:32:34,520 --> 00:32:41,765
encontrar si existe un usuario administrador y ese usuario es identificado por el nombre admin.

461
00:32:41,765 --> 00:32:50,210
Si no es así, se creará el usuario y también creará el rol para el usuario.

462
00:32:50,210 --> 00:32:52,065
Vamos a crear un rol llamado admin.

463
00:32:52,065 --> 00:32:53,865
Si ese rol existe,

464
00:32:53,865 --> 00:32:54,950
entonces lo usaremos.

465
00:32:54,950 --> 00:32:56,705
De lo contrario, crearemos el rol.

466
00:32:56,705 --> 00:33:01,485
Y luego, después de eso, crearemos este mapeo entre el rol y el usuario.

467
00:33:01,485 --> 00:33:03,940
Por lo tanto, el loopback nos permite hacer el RoleMapping.

468
00:33:03,940 --> 00:33:07,310
Así que decir que este usuario no es para este rol.

469
00:33:07,310 --> 00:33:10,395
Por lo tanto, este mapeo se realiza mediante el uso de esta declaración.

470
00:33:10,395 --> 00:33:14,010
Así que esto completa la configuración de nuestros servidores.

471
00:33:14,010 --> 00:33:18,305
De modo que se creará un usuario administrador y ese usuario administrador

472
00:33:18,305 --> 00:33:24,155
obtendrá automáticamente el rol del administrador tal y como está configurado aquí.

473
00:33:24,155 --> 00:33:27,675
Eso es todo. Vamos a guardar los cambios en script.js.

474
00:33:27,675 --> 00:33:32,015
Y ahora nuestros servidores de bucle invertido deberían estar listos.

475
00:33:32,015 --> 00:33:38,840
Así que ahora iremos y comenzaremos nuestro servidor de retroceso y luego comprobaremos qué podemos hacer con esto.

476
00:33:38,840 --> 00:33:41,085
Ir a los terminales,

477
00:33:41,085 --> 00:33:43,060
vamos a iniciar el servidor de bucle invertido.

478
00:33:43,060 --> 00:33:49,428
Así que diremos, npm start y entonces nuestro servidor debería estar en funcionamiento.

479
00:33:49,428 --> 00:33:53,220
Vamos al Explorador y luego naveguemos la información allí.

480
00:33:53,220 --> 00:33:55,890
Y este servidor de bucle invertido se

481
00:33:55,890 --> 00:33:59,535
conectará automáticamente a mi MongoDP porque he configurado la conexión.

482
00:33:59,535 --> 00:34:03,415
Al ir a mi navegador,

483
00:34:03,415 --> 00:34:05,610
déjame volver a cargar esto.

484
00:34:05,610 --> 00:34:07,879
Y cuando vuelva a cargar

485
00:34:07,879 --> 00:34:12,450
esto, verá que tenemos un nuevo cliente que se ha creado aquí.

486
00:34:12,450 --> 00:34:14,705
El usuario ya existía anteriormente.

487
00:34:14,705 --> 00:34:17,840
Los platos, líderes y promociones están todos ahí.

488
00:34:17,840 --> 00:34:20,325
Vamos a realizar un get en los platos.

489
00:34:20,325 --> 00:34:23,250
Ahora que esto está conectado a la boca MongoDB,

490
00:34:23,250 --> 00:34:26,845
mi MongoDB ya tiene algunos platos allí.

491
00:34:26,845 --> 00:34:28,235
Si su MongoDB está vacío,

492
00:34:28,235 --> 00:34:31,821
puede publicar algunos platos usando el post aquí.

493
00:34:31,821 --> 00:34:33,995
Así que vamos a probarlo.

494
00:34:33,995 --> 00:34:38,040
Cuando hago una operación de conseguir en los platos de corte,

495
00:34:38,040 --> 00:34:42,945
verás que en el cuerpo de respuesta -

496
00:34:42,945 --> 00:34:48,090
Todos los platos que existen en mi base de datos han sido recuperados.

497
00:34:48,090 --> 00:34:52,995
Del mismo modo, puedo hacer un GET en

498
00:34:52,995 --> 00:35:01,900
promociones y debería ver la promoción que ya existe en mi base de datos allí.

499
00:35:01,900 --> 00:35:04,845
Por lo tanto, puede ver que la promoción ya existe allí.

500
00:35:04,845 --> 00:35:09,978
Por lo tanto, eso nos muestra cómo podemos obtener información.

501
00:35:09,978 --> 00:35:12,485
Ahora, tratemos de publicar un nuevo plato.

502
00:35:12,485 --> 00:35:14,185
Entonces, para publicar un nuevo plato,

503
00:35:14,185 --> 00:35:16,675
vamos a la POST aquí.

504
00:35:16,675 --> 00:35:18,715
Déjame copiar esto.

505
00:35:18,715 --> 00:35:20,035
Obviamente, en este momento,

506
00:35:20,035 --> 00:35:22,080
porque ya que no estoy conectado,

507
00:35:22,080 --> 00:35:26,180
no se me permitirá publicar el plato así,

508
00:35:26,180 --> 00:35:31,615
pero voy a demostrar que a usted son sólo copiar y pegar esta información aquí,

509
00:35:31,615 --> 00:35:34,120
y vamos a tratar de publicar ese plato,

510
00:35:34,120 --> 00:35:36,010
y luego cuando trato de publicar el plato,

511
00:35:36,010 --> 00:35:40,660
mi servidor responde inmediatamente con este error diciendo, AUTHORIZATION_REQUERED.

512
00:35:40,660 --> 00:35:42,790
No está autorizado a realizar esta operación.

513
00:35:42,790 --> 00:35:46,146
Entonces, es por eso que no está autorizado a hacer esta operación.

514
00:35:46,146 --> 00:35:48,505
Ahora, ¿cómo se autoriza a sí mismo?

515
00:35:48,505 --> 00:35:50,315
Por lo tanto, para autorizarse,

516
00:35:50,315 --> 00:35:58,450
ahora recuerde que ya hemos creado un usuario con el nombre admin,

517
00:35:58,450 --> 00:36:05,240
y este usuario administrador ya existe como cliente aquí.

518
00:36:05,240 --> 00:36:11,495
Por lo tanto, al entrar en los extremos de la API REST del cliente,

519
00:36:11,495 --> 00:36:12,835
si se desplaza

520
00:36:12,835 --> 00:36:16,925
hacia abajo, abajo aquí abajo, verá el inicio de sesión de este cliente.

521
00:36:16,925 --> 00:36:20,220
Por lo tanto, cuando haces un POST en el inicio de sesión del cliente.

522
00:36:20,220 --> 00:36:22,430
Por lo tanto, para el inicio de sesión del cliente,

523
00:36:22,430 --> 00:36:26,273
desplácese hasta aquí y luego aquí pide las credenciales.

524
00:36:26,273 --> 00:36:27,540
Entonces, en las credenciales,

525
00:36:27,540 --> 00:36:35,190
podemos escribir el nombre de usuario entre comillas dobles, y diremos

526
00:36:35,190 --> 00:36:40,570
, Administrador, y luego contraseña,

527
00:36:40,570 --> 00:36:48,665
diremos, contraseña, y luego publicaremos esto.

528
00:36:48,665 --> 00:36:50,450
Y luego, cuando lo

529
00:36:50,450 --> 00:36:54,365
publique, notará que en la respuesta,

530
00:36:54,365 --> 00:36:57,764
LoopBack me enviará esta información.

531
00:36:57,764 --> 00:36:59,660
Ahora, dentro de esta información,

532
00:36:59,660 --> 00:37:06,725
esta identificación particular que envía de vuelta es el AccessToken para mi servidor LoopBack.

533
00:37:06,725 --> 00:37:09,835
Entonces, puedo copiar este AccessToken aquí,

534
00:37:09,835 --> 00:37:13,575
y luego justo en la parte superior aquí,

535
00:37:13,575 --> 00:37:17,735
puedes ver que esto es Token Not Set, aquí.

536
00:37:17,735 --> 00:37:19,660
Dice Token Not Set.

537
00:37:19,660 --> 00:37:22,415
Y aquí puede escribir este AccessToken,

538
00:37:22,415 --> 00:37:24,605
y luego decir, Establecer token de acceso.

539
00:37:24,605 --> 00:37:27,245
Y luego se establecerá su AccessToken,

540
00:37:27,245 --> 00:37:33,525
y luego todas las operaciones posteriores que realice llevarán automáticamente

541
00:37:33,525 --> 00:37:39,750
este AccessToken en el encabezado de mi mensaje de solicitud.

542
00:37:39,750 --> 00:37:45,350
Entonces, de esa manera, ahora mi administrador podrá hacer publicaciones de elementos allí.

543
00:37:45,350 --> 00:37:47,480
Así que, ahora que he iniciado sesión como administrador,

544
00:37:47,480 --> 00:37:49,135
déjame ir a promociones,

545
00:37:49,135 --> 00:37:51,171
y luego publicaré una promoción allí,

546
00:37:51,171 --> 00:37:57,098
y te mostraré que puedo publicar promociones.

547
00:37:57,098 --> 00:38:00,885
Por lo tanto, vamos a un POST,

548
00:38:00,885 --> 00:38:07,250
y luego simplemente copiaremos esto, y luego en los datos,

549
00:38:07,250 --> 00:38:13,855
y luego para el nombre diremos, Promoción de prueba

550
00:38:13,855 --> 00:38:24,500
e imagen simplemente lo dejaremos como tal, descripción, descripción de prueba.

551
00:38:30,990 --> 00:38:34,665
Y puedo publicarlo allí,

552
00:38:34,665 --> 00:38:38,180
y verá

553
00:38:41,740 --> 00:38:48,265
que no debería incluir esta identificación aquí porque he

554
00:38:48,265 --> 00:38:53,710
dejado que LoopBack le asigne automáticamente la identificación.

555
00:38:53,710 --> 00:38:58,325
Permítanme publicar esto y luego vería que en el cuerpo de respuesta,

556
00:38:58,325 --> 00:39:01,293
la promoción de la prueba se ha publicado aquí.

557
00:39:01,293 --> 00:39:04,615
Y acabo de notar que no he incluido

558
00:39:04,615 --> 00:39:11,130
la bandera destacada para mis promociones y mis líderes.

559
00:39:11,130 --> 00:39:16,180
Por lo tanto, voy a entrar e incluir la bandera destacada como

560
00:39:16,180 --> 00:39:21,930
una de las partes de mis promociones allí.

561
00:39:21,930 --> 00:39:26,845
Así que, ahora cuando haga un GET para las promociones,

562
00:39:26,845 --> 00:39:29,875
verá que en ese mensaje de respuesta,

563
00:39:29,875 --> 00:39:34,795
verá la promoción anterior que ya estaba en mi base de datos

564
00:39:34,795 --> 00:39:40,395
y luego la nueva promoción que acabo de publicar en mi base de datos ya incluida aquí.

565
00:39:40,395 --> 00:39:44,395
Por lo tanto, acabo de notar que necesito establecer el indicador destacado,

566
00:39:44,395 --> 00:39:46,695
le mostraré cómo hacerlo en una.

567
00:39:46,695 --> 00:39:54,100
por lo tanto, ese tipo de demuestra a usted cómo puede iniciar sesión y explorar su servidor LoopBack.

568
00:39:54,100 --> 00:39:55,420
Permítanme destruir este token,

569
00:39:55,420 --> 00:39:58,010
así que simplemente eliminaremos el token,

570
00:39:58,010 --> 00:39:59,555
y luego

571
00:39:59,555 --> 00:40:02,440
haremos clic en eso para que esencialmente envíe el token de acceso a una

572
00:40:02,440 --> 00:40:05,560
cadena vacía y así mi token ya no se procesará,

573
00:40:05,560 --> 00:40:07,880
por lo que ahora mi usuario ya no está conectado.

574
00:40:07,880 --> 00:40:11,148
Permítanme crear un nuevo cliente.

575
00:40:11,148 --> 00:40:16,290
Por lo tanto, para crear un nuevo cliente voy a decir, clientes POST.

576
00:40:16,290 --> 00:40:20,780
Y luego copiaré esto desde aquí.

577
00:40:20,780 --> 00:40:24,175
Voy a crear una nueva cuenta aquí.

578
00:40:24,175 --> 00:40:26,160
Y así, aquí,

579
00:40:26,160 --> 00:40:28,620
eliminaré el reino,

580
00:40:28,620 --> 00:40:32,186
no necesito eso, no necesito la identificación.

581
00:40:32,186 --> 00:40:36,070
Por lo tanto, para el nombre

582
00:40:39,750 --> 00:40:46,610
y el EmailVerified deben ser configurados automáticamente por el sistema.

583
00:40:46,610 --> 00:40:49,430
Por lo tanto, permítanme iniciar sesión como este usuario.

584
00:40:49,430 --> 00:40:52,370
Por lo tanto, solo voy a enviar mi nombre, apellido

585
00:40:52,370 --> 00:40:54,440
y la imagen actualmente,

586
00:40:54,440 --> 00:40:59,745
simplemente estableceré una cadena vacía allí, nombre de usuario y correo electrónico.

587
00:40:59,745 --> 00:41:01,835
Y luego lo probaremos,

588
00:41:01,835 --> 00:41:05,060
y luego vuelve diciendo

589
00:41:05,060 --> 00:41:08,820
: Detalles: 'contraseña' no puede estar en blanco.

590
00:41:08,820 --> 00:41:11,285
Por lo tanto, se dará cuenta de que aquí,

591
00:41:11,285 --> 00:41:16,900
también debería incluir junto con el nombre de usuario,

592
00:41:17,040 --> 00:41:27,834
contraseña y luego, vamos a publicar esto.

593
00:41:27,834 --> 00:41:30,890
Por lo tanto, cuando lo publiques, vuelve con

594
00:41:30,890 --> 00:41:35,535
el Cuerpo de Respuesta diciendo que ahora eres parte del sistema.

595
00:41:35,535 --> 00:41:37,160
Por lo tanto, su nombre,

596
00:41:37,160 --> 00:41:40,280
su apellido y su nombre de usuario, su ID de correo electrónico

597
00:41:40,280 --> 00:41:45,706
y el ID que LoopBack le asigna se le devuelve.

598
00:41:45,706 --> 00:41:52,777
Entonces, esto no es más que la identificación de MongoDB como puede ver aquí.

599
00:41:52,777 --> 00:41:56,150
Por lo tanto, ahora que me

600
00:41:56,150 --> 00:41:58,425
he registrado como cliente, debería poder iniciar sesión como cliente,

601
00:41:58,425 --> 00:42:01,775
para ir al inicio de sesión POST aquí,

602
00:42:01,775 --> 00:42:04,250
y luego aquí en lugar del administrador,

603
00:42:04,250 --> 00:42:11,710
voy a iniciar sesión como el nuevo usuario que he iniciado sesión.

604
00:42:11,710 --> 00:42:14,130
Entonces, luego hago clic en Probar,

605
00:42:14,130 --> 00:42:17,405
verás que regresa con el id,

606
00:42:17,405 --> 00:42:22,910
por lo que me da el token para este usuario administrador aquí.

607
00:42:22,910 --> 00:42:30,080
Por lo tanto, con esto hemos completado el examen del servidor LoopBack que acabamos de crear.

608
00:42:30,080 --> 00:42:31,340
Y como acabo de mencionar,

609
00:42:31,340 --> 00:42:36,935
me di cuenta de que las promociones y los líderes no tienen bandera destacada, así que,

610
00:42:36,935 --> 00:42:40,930
voy a entrar en el código.

611
00:42:40,930 --> 00:42:43,400
Entonces, supongamos que olvidas algo como esto,

612
00:42:43,400 --> 00:42:47,305
entonces simplemente puedes entrar y editar el código Json si lo deseas.

613
00:42:47,305 --> 00:42:50,540
Entonces, voy a entrar en mi código,

614
00:42:50,540 --> 00:42:52,040
ir al código,

615
00:42:52,040 --> 00:42:56,635
primero voy a entrar en Commons y luego voy a ir a los dishes.json.

616
00:42:56,635 --> 00:42:59,750
Y luego en los dishes.json,

617
00:42:59,750 --> 00:43:05,320
veo esta propiedad destacada allí.

618
00:43:05,320 --> 00:43:07,480
Voy a copiar esta propiedad destacada,

619
00:43:07,480 --> 00:43:09,040
y luego iré a leaders.json,

620
00:43:09,040 --> 00:43:15,151
y luego pegaré esa propiedad de característica en un leaders.json,

621
00:43:15,151 --> 00:43:17,750
y también con promotions.json.

622
00:43:17,750 --> 00:43:22,955
Olvidé incluir esto cuando creé esos modelos.

623
00:43:22,955 --> 00:43:27,180
Debería haber hecho esto cuando estaba creando el modelo en sí, así que,

624
00:43:27,180 --> 00:43:29,960
si olvidas algo como eso,

625
00:43:29,960 --> 00:43:33,370
entonces esta es otra forma de editar tu modelo

626
00:43:33,370 --> 00:43:38,070
y luego asegurarte de que tu modelo esté configurado correctamente.

627
00:43:38,070 --> 00:43:40,130
Así que, eso es todo.

628
00:43:40,130 --> 00:43:48,575
Por lo tanto, ahora mis promociones y líderes también tendrán la bandera destacada establecida allí.

629
00:43:48,575 --> 00:43:52,675
Con esto, completamos este ejercicio.

630
00:43:52,675 --> 00:43:56,525
En este ejercicio, hemos visto cómo podemos configurar

631
00:43:56,525 --> 00:44:03,555
un nuevo modelo ampliando una clase de modelo base que ya está en LoopBack.

632
00:44:03,555 --> 00:44:07,250
También vimos cómo podíamos configurar controles de acceso usando

633
00:44:07,250 --> 00:44:11,540
las listas de control de acceso compatibles con LoopBack.

634
00:44:11,540 --> 00:44:13,970
Con esto, completamos este ejercicio.

635
00:44:13,970 --> 00:44:16,835
Este es un buen momento para que usted haga un cubrirse con

636
00:44:16,835 --> 00:44:22,450
las fuentes de datos LoopBack mensaje y control de acceso.