﻿1
00:00:01,030 --> 00:00:02,580
‫Instructor: Bienvenido de nuevo.

2
00:00:02,580 --> 00:00:05,470
‫Por lo tanto, la autenticación y la autorización

3
00:00:05,470 --> 00:00:07,680
‫se trata de que los usuarios se

4
00:00:07,680 --> 00:00:11,040
‫registren, inicien sesión y accedan a páginas o rutas, y

5
00:00:11,040 --> 00:00:13,190
‫les otorgamos permiso para hacerlo.

6
00:00:13,190 --> 00:00:15,570
‫Entonces, realmente se trata de los usuarios.

7
00:00:15,570 --> 00:00:18,890
‫Y, entonces, debemos comenzar implementando el modelo de usuario en esta

8
00:00:18,890 --> 00:00:21,260
‫lección, de modo que en la

9
00:00:21,260 --> 00:00:24,383
‫siguiente, podamos crear nuevos usuarios en nuestra base de datos.

10
00:00:25,990 --> 00:00:28,710
‫Entonces, de vuelta en nuestra aplicación, sigamos adelante

11
00:00:28,710 --> 00:00:31,740
‫y creemos un nuevo archivo para el modelo de usuario.

12
00:00:31,740 --> 00:00:34,373
‫Entonces, por supuesto, en nuestra carpeta de modelo,

13
00:00:38,571 --> 00:00:40,890
‫New File, userModel. js.

14
00:00:40,890 --> 00:00:42,610
‫Y al igual que

15
00:00:42,610 --> 00:00:44,563
‫antes, comenzamos solicitando el paquete Mongoose.

16
00:00:52,430 --> 00:00:53,510
‫Está bien.

17
00:00:53,510 --> 00:00:55,920
‫Y ahora, todo lo que tenemos que hacer es crear un esquema

18
00:00:55,920 --> 00:00:57,890
‫y luego crear un modelo a partir de él.

19
00:00:57,890 --> 00:00:59,670
‫Así que, al igual que hicimos con

20
00:00:59,670 --> 00:01:01,750
‫los recorridos, lo haremos aquí ahora con los usuarios.

21
00:01:01,750 --> 00:01:04,140
‫Y de hecho, como ya hicimos eso

22
00:01:04,140 --> 00:01:07,660
‫antes, quiero dejar este como un desafío para ti, ¿de acuerdo?

23
00:01:07,660 --> 00:01:10,963
‫Entonces quiero que cree un esquema con cinco campos.

24
00:01:12,020 --> 00:01:14,713
‫Entonces, nombre, correo electrónico, luego una foto;

25
00:01:16,660 --> 00:01:19,380
‫que va a ser una cuerda, como

26
00:01:19,380 --> 00:01:21,063
‫en nuestras giras.

27
00:01:22,230 --> 00:01:24,223
‫También quiero un campo para una

28
00:01:25,300 --> 00:01:27,283
‫contraseña y para una contraseñaConfirmar.

29
00:01:30,230 --> 00:01:31,063
‫¿Okey?

30
00:01:31,063 --> 00:01:32,330
‫Y un poco más

31
00:01:32,330 --> 00:01:34,190
‫sobre eso más adelante, cuando resuelva este

32
00:01:34,190 --> 00:01:36,480
‫desafío para usted, pero por ahora, realmente quiero que

33
00:01:36,480 --> 00:01:38,540
‫practique para crear este esquema por su cuenta

34
00:01:38,540 --> 00:01:41,770
‫y luego también cree un modelo a partir de ese esquema, ¿de acuerdo?

35
00:01:41,770 --> 00:01:44,090
‫Y luego, al final, también puede exportarlo.

36
00:01:44,090 --> 00:01:46,350
‫Así que pausa el video en este punto

37
00:01:46,350 --> 00:01:48,250
‫y volveré en un segundo para

38
00:01:48,250 --> 00:01:49,973
‫resolver este desafío por ti.

39
00:01:52,590 --> 00:01:53,480
‫Está bien.

40
00:01:53,480 --> 00:01:55,030
‫Espero que hayas completado ese desafío.

41
00:01:55,030 --> 00:01:56,690
‫Y ahora lo resolveré.

42
00:01:56,690 --> 00:01:59,330
‫Y no se preocupe si no se ve exactamente igual.

43
00:01:59,330 --> 00:02:02,150
‫Simplemente puede adaptarlo a medida que avanzamos en este video.

44
00:02:02,150 --> 00:02:03,563
‫Entonces, a través de esta solución.

45
00:02:05,430 --> 00:02:07,730
‫Entonces, voy a llamar a este userSchema.

46
00:02:09,310 --> 00:02:13,107
‫Y al igual que antes, creamos una nueva mangosta. Esquema.

47
00:02:15,270 --> 00:02:18,010
‫Y luego en eso, pasamos nuestro objeto de

48
00:02:18,010 --> 00:02:20,410
‫esquema y comenzamos a definir nuestros campos.

49
00:02:20,410 --> 00:02:24,773
‫Entonces, quiero un nombre con el tipo, por supuesto, de String.

50
00:02:28,430 --> 00:02:31,023
‫Y también quiero que sea necesario.

51
00:02:32,440 --> 00:02:34,310
‫Entonces, cada vez que se

52
00:02:34,310 --> 00:02:37,113
‫crea un nuevo usuario, debe decirnos su nombre básicamente.

53
00:02:37,980 --> 00:02:40,623
‫Entonces, establezcamos un mensaje de error aquí también.

54
00:02:41,617 --> 00:02:44,447
‫"¡Dinos tu nombre! " ¿Está

55
00:02:45,890 --> 00:02:46,960
‫bien?

56
00:02:46,960 --> 00:02:48,400
‫Entonces ese es el nombre.

57
00:02:48,400 --> 00:02:50,373
‫A continuación, queremos el correo electrónico.

58
00:02:51,680 --> 00:02:52,630
‫¿Está bien?

59
00:02:52,630 --> 00:02:55,310
‫Entonces, esto se usará para que el usuario inicie

60
00:02:55,310 --> 00:02:58,630
‫sesión y no crearemos una propiedad de nombre de usuario aquí, ¿de acuerdo?

61
00:02:58,630 --> 00:03:01,920
‫Entonces, en algunas aplicaciones, verá que se usa un nombre de

62
00:03:01,920 --> 00:03:04,500
‫usuario, pero en este caso, queremos que

63
00:03:04,500 --> 00:03:08,030
‫sea simple aquí y simplemente identificar a los usuarios por correo electrónico.

64
00:03:08,030 --> 00:03:10,803
‫Y nuevamente, esto es del tipo String.

65
00:03:13,150 --> 00:03:14,873
‫También es un campo obligatorio.

66
00:03:22,030 --> 00:03:23,883
‫Así que de nuevo un mensaje de error.

67
00:03:24,780 --> 00:03:28,873
‫A continuación, quiero que los correos electrónicos también sean únicos, ¿de acuerdo?

68
00:03:30,360 --> 00:03:33,320
‫Entonces, único establecido en verdadero.

69
00:03:33,320 --> 00:03:35,960
‫Y eso es básicamente porque este correo electrónico

70
00:03:35,960 --> 00:03:39,450
‫es, por supuesto, el identificador único de cada usuario, ¿de acuerdo?

71
00:03:39,450 --> 00:03:42,920
‫Ahora, de forma predeterminada, los correos electrónicos deberían ser únicos, ¿verdad?

72
00:03:42,920 --> 00:03:45,570
‫Pero estemos 100% seguros aquí de que no

73
00:03:45,570 --> 00:03:47,000
‫habrá cuentas con

74
00:03:47,000 --> 00:03:49,740
‫la misma dirección de correo electrónico, ¿de acuerdo?

75
00:03:49,740 --> 00:03:52,770
‫Ahora también podemos especificar aquí otra opción de tipo de

76
00:03:52,770 --> 00:03:54,373
‫esquema, que está en minúsculas.

77
00:03:56,150 --> 00:03:57,100
‫Así que es uno nuevo.

78
00:03:57,100 --> 00:03:58,410
‫Y no es un validador.

79
00:03:58,410 --> 00:04:00,410
‫Todo lo que hará es

80
00:04:00,410 --> 00:04:03,150
‫básicamente transformar el correo electrónico en minúsculas.

81
00:04:03,150 --> 00:04:08,140
‫Entonces, si alguien dice como Jonas @ Gmail o lo que sea,

82
00:04:08,140 --> 00:04:11,260
‫entonces se convertirá todo a minúsculas.

83
00:04:11,260 --> 00:04:12,210
‫¿Okey?

84
00:04:12,210 --> 00:04:15,380
‫Y ahora, finalmente, también queremos validar la dirección

85
00:04:15,380 --> 00:04:16,780
‫de correo electrónico.

86
00:04:16,780 --> 00:04:19,300
‫Básicamente, probando si el correo electrónico

87
00:04:19,300 --> 00:04:23,070
‫proporcionado corresponde al formato de correo electrónico común, ¿de acuerdo?

88
00:04:23,070 --> 00:04:27,710
‫Entonces, por ejemplo, nuevamente jonas @ gmail. com sería un correo electrónico

89
00:04:27,710 --> 00:04:29,250
‫válido, pero

90
00:04:29,250 --> 00:04:32,270
‫por ejemplo, así, no lo sería.

91
00:04:32,270 --> 00:04:33,860
‫O así.

92
00:04:33,860 --> 00:04:36,290
‫Y para eso, necesitamos crear nuestro

93
00:04:36,290 --> 00:04:37,603
‫propio validador básicamente.

94
00:04:38,650 --> 00:04:41,350
‫Ahora no vamos a crear nuestro

95
00:04:41,350 --> 00:04:44,480
‫propio validador para eso, sino que usaremos ese

96
00:04:44,480 --> 00:04:47,730
‫paquete validador que les mostré antes de npm, ¿verdad?

97
00:04:47,730 --> 00:04:50,520
‫Así que recuerde aquí en el tourModel, en

98
00:04:50,520 --> 00:04:52,770
‫realidad les mostré este módulo aquí, pero

99
00:04:52,770 --> 00:04:54,620
‫luego no terminamos usándolo

100
00:04:54,620 --> 00:04:57,270
‫porque no era realmente útil en nuestro caso.

101
00:04:57,270 --> 00:04:59,810
‫Pero ahora, será bastante útil, así

102
00:04:59,810 --> 00:05:02,933
‫que seguiré adelante y lo copiaré aquí, está

103
00:05:05,620 --> 00:05:09,180
‫bien, para que ahora podamos usarlo correctamente en nuestro esquema.

104
00:05:09,180 --> 00:05:12,653
‫Entonces, para crear ahora nuestro validador

105
00:05:13,730 --> 00:05:16,550
‫personalizado, usamos validar, ¿recuerdas?

106
00:05:16,550 --> 00:05:18,870
‫Y luego pasamos el mensaje de función

107
00:05:18,870 --> 00:05:21,380
‫anti-error, al igual que con nuestros otros validadores.

108
00:05:21,380 --> 00:05:23,980
‫Y para comprobar si un correo electrónico es

109
00:05:23,980 --> 00:05:28,330
‫válido, todo lo que tenemos que hacer es llamar al método isEmail en

110
00:05:29,810 --> 00:05:32,030
‫el objeto de validación, ¿de acuerdo?

111
00:05:32,030 --> 00:05:34,380
‫De modo que, nuevamente, proviene de la

112
00:05:34,380 --> 00:05:38,160
‫documentación, que les mostré antes cuando usamos este módulo por primera vez.

113
00:05:38,160 --> 00:05:40,600
‫Y así, siempre que necesite un validador personalizado,

114
00:05:40,600 --> 00:05:42,960
‫puede seguir adelante y verificar la documentación

115
00:05:42,960 --> 00:05:46,540
‫y encontrar si hay una buena función para su caso de uso.

116
00:05:46,540 --> 00:05:49,340
‫Entonces, en este caso, eso es validador. Correo electrónico, y

117
00:05:49,340 --> 00:05:51,230
‫nuestro mensaje de error será

118
00:05:55,174 --> 00:05:57,540
‫"un correo electrónico válido", ¿de acuerdo?

119
00:05:57,540 --> 00:05:59,800
‫Y en el siguiente video, cuando creemos usuarios

120
00:05:59,800 --> 00:06:02,980
‫a partir de este modelo, entonces, por supuesto, probaremos todo esto

121
00:06:02,980 --> 00:06:04,463
‫para ver si funciona.

122
00:06:05,470 --> 00:06:08,420
‫A continuación, también quiero que el usuario

123
00:06:08,420 --> 00:06:11,210
‫pueda básicamente cargar una foto.

124
00:06:11,210 --> 00:06:13,490
‫Y lo almacenaremos simplemente en una cadena.

125
00:06:13,490 --> 00:06:15,600
‫Pero no es obligatorio, ¿de acuerdo?

126
00:06:15,600 --> 00:06:20,030
‫Por lo tanto, una foto suele ser opcional en la mayoría de las aplicaciones web, por

127
00:06:20,030 --> 00:06:22,050
‫lo que haremos lo mismo aquí.

128
00:06:22,050 --> 00:06:24,420
‫Entonces, si el usuario desea cargar una

129
00:06:24,420 --> 00:06:27,580
‫foto, entonces se almacenará en algún lugar de nuestro sistema

130
00:06:27,580 --> 00:06:30,380
‫de archivos y la ruta a esa foto se

131
00:06:30,380 --> 00:06:32,910
‫almacenará en este campo de fotos, ¿de acuerdo?

132
00:06:32,910 --> 00:06:34,740
‫Entonces eso es similar a lo que teníamos aquí.

133
00:06:34,740 --> 00:06:36,373
‫Recuerde, tenemos, sí,

134
00:06:38,490 --> 00:06:40,340
‫tenemos imageCover, por lo

135
00:06:40,340 --> 00:06:42,850
‫que también es simplemente la ruta del

136
00:06:42,850 --> 00:06:45,100
‫lugar en nuestro sistema de archivos

137
00:06:45,100 --> 00:06:47,343
‫donde realmente se carga la imagen.

138
00:06:49,020 --> 00:06:50,300
‫¿Está bien?

139
00:06:50,300 --> 00:06:51,570
‫Así que esa es la foto.

140
00:06:51,570 --> 00:06:52,973
‫Y ahora necesitamos contraseña.

141
00:06:57,065 --> 00:07:01,120
‫Y la contraseña debería ser, nuevamente, del tipo String.

142
00:07:02,410 --> 00:07:03,963
‫Eso no es correcto.

143
00:07:04,850 --> 00:07:08,723
‫Y la contraseña, por supuesto, es necesaria, ¿verdad?

144
00:07:09,690 --> 00:07:10,723
‫Tan verdadero.

145
00:07:15,347 --> 00:07:16,737
‫"Proporcione una contraseña. "Y

146
00:07:17,750 --> 00:07:20,900
‫también vamos a imponer una regla de contraseña muy simple,

147
00:07:20,900 --> 00:07:23,420
‫que es que una contraseña debe tener

148
00:07:23,420 --> 00:07:24,640
‫al menos ocho caracteres.

149
00:07:24,640 --> 00:07:25,933
‫¿Entonces cómo hacemos eso?

150
00:07:26,840 --> 00:07:28,920
‫Bueno, eso es bastante fácil.

151
00:07:28,920 --> 00:07:31,003
‫Todo lo que tenemos que hacer

152
00:07:32,480 --> 00:07:34,880
‫es minlength y establecerlo en ocho en este caso.

153
00:07:34,880 --> 00:07:37,070
‫Y esa es en realidad la única regla de

154
00:07:37,070 --> 00:07:38,650
‫contraseña que vamos a imponer.

155
00:07:38,650 --> 00:07:41,270
‫Y muchas aplicaciones tienen todas estas reglas locas

156
00:07:41,270 --> 00:07:45,300
‫como al menos un número y un carácter y un símbolo, pero

157
00:07:45,300 --> 00:07:47,450
‫no implementaremos nada de eso aquí

158
00:07:47,450 --> 00:07:49,250
‫porque en realidad se ha

159
00:07:49,250 --> 00:07:52,140
‫descubierto que eso no es realmente efectivo, ¿de acuerdo?

160
00:07:52,140 --> 00:07:53,750
‫Por lo general, las contraseñas más

161
00:07:53,750 --> 00:07:55,530
‫seguras son las más largas, está

162
00:07:55,530 --> 00:07:58,550
‫bien, y no estas con símbolos y caracteres locos y

163
00:07:58,550 --> 00:07:59,513
‫todo eso.

164
00:08:00,580 --> 00:08:03,610
‫Eso es suficiente para la contraseña por ahora,

165
00:08:03,610 --> 00:08:06,340
‫pero crearemos algunos campos más específicos aquí

166
00:08:06,340 --> 00:08:10,190
‫para la contraseña cuando comencemos a administrar contraseñas en la base

167
00:08:10,190 --> 00:08:12,020
‫de datos, ¿de acuerdo?

168
00:08:12,020 --> 00:08:14,403
‫Pero por ahora, eso es suficiente aquí.

169
00:08:16,160 --> 00:08:18,407
‫Y ahora es passwordConfirm.

170
00:08:19,390 --> 00:08:22,230
‫Entonces, ya sabe con qué frecuencia cuando crea una

171
00:08:22,230 --> 00:08:24,450
‫nueva cuenta en alguna aplicación web, siempre

172
00:08:24,450 --> 00:08:28,260
‫debe ingresar su contraseña y luego confirmarla solo para asegurarse de que

173
00:08:28,260 --> 00:08:29,480
‫sean las mismas.

174
00:08:29,480 --> 00:08:31,523
‫Y para eso es este campo.

175
00:08:32,410 --> 00:08:35,573
‫Entonces, por supuesto, también es de tipo String.

176
00:08:36,720 --> 00:08:38,723
‫Y, por supuesto, también es obligatorio.

177
00:08:45,081 --> 00:08:45,914
‫Bueno.

178
00:08:45,914 --> 00:08:48,860
‫Y nuevamente, crearemos algunas propiedades más aquí en la

179
00:08:48,860 --> 00:08:52,210
‫opción de tipo de esquema un poco más tarde, ¿de acuerdo?

180
00:08:52,210 --> 00:08:56,130
‫Específicamente, validadores para ver si la contraseña de

181
00:08:56,130 --> 00:09:00,600
‫confirmación es realmente la misma que la contraseña principal, ¿de acuerdo?

182
00:09:00,600 --> 00:09:03,220
‫Pero por ahora, este esquema es suficiente, por

183
00:09:03,220 --> 00:09:06,300
‫lo que tiene estos campos que les pedí que crearan

184
00:09:07,179 --> 00:09:08,529
‫en el desafío.

185
00:09:09,980 --> 00:09:12,360
‫Y ahora, en realidad, todo lo que tenemos que hacer es

186
00:09:12,360 --> 00:09:14,703
‫seguir adelante y crear el modelo a partir del esquema.

187
00:09:16,410 --> 00:09:18,930
‫Entonces, el usuario, con una U mayúscula,

188
00:09:18,930 --> 00:09:22,090
‫solo para seguir esa convención de que las variables

189
00:09:22,090 --> 00:09:24,393
‫del modelo suelen ser siempre

190
00:09:25,490 --> 00:09:30,490
‫con una letra mayúscula, luego una mangosta. model, y luego pasar el nombre del modelo

191
00:09:31,400 --> 00:09:33,850
‫y, por supuesto, queremos que este

192
00:09:34,910 --> 00:09:39,150
‫se llame Usuario y se cree a partir del userSchema que creamos antes.

193
00:09:39,150 --> 00:09:44,150
‫Y luego módulo. exportaciones establecidas en Usuario.

194
00:09:45,300 --> 00:09:46,260
‫Y eso es.

195
00:09:46,260 --> 00:09:49,230
‫Ese es nuestro esquema de usuario simple que

196
00:09:49,230 --> 00:09:51,720
‫nos permitirá comenzar a crear usuarios

197
00:09:51,720 --> 00:09:53,570
‫en el siguiente video.

198
00:09:53,570 --> 00:09:54,963
‫Entonces, nos vemos para entonces.

