﻿1
00:00:01,260 --> 00:00:02,790
‫-: Bem vindo de volta.

2
00:00:02,790 --> 00:00:05,270
‫Portanto, implementamos a autenticação

3
00:00:05,270 --> 00:00:07,770
‫em nosso projeto até este ponto.

4
00:00:07,770 --> 00:00:09,930
‫E funciona muito bem.

5
00:00:09,930 --> 00:00:12,960
‫No entanto, às vezes, simplesmente autenticar, portanto, fazer o

6
00:00:12,960 --> 00:00:14,640
‫login de um usuário, realmente

7
00:00:14,640 --> 00:00:16,150
‫não é suficiente.

8
00:00:16,150 --> 00:00:17,490
‫E, então,

9
00:00:17,490 --> 00:00:20,173
‫neste vídeo, vamos implementar a autorização também.

10
00:00:21,730 --> 00:00:24,850
‫Então, imagine o ato de excluir um passeio de

11
00:00:24,850 --> 00:00:26,440
‫nosso banco de dados.

12
00:00:26,440 --> 00:00:28,890
‫Portanto, nem todo usuário deve, é claro, ter

13
00:00:28,890 --> 00:00:30,530
‫permissão para fazer isso.

14
00:00:30,530 --> 00:00:33,306
‫Mesmo se o usuário estiver logado, certo?

15
00:00:33,306 --> 00:00:36,055
‫Então, basicamente precisamos autorizar apenas

16
00:00:36,055 --> 00:00:38,510
‫certos tipos de usuários para

17
00:00:38,510 --> 00:00:40,720
‫realizar certas ações.

18
00:00:40,720 --> 00:00:43,550
‫E isso é exatamente o que é autorização.

19
00:00:43,550 --> 00:00:46,562
‫É verificar se determinado usuário tem direito

20
00:00:46,562 --> 00:00:49,520
‫de interagir com determinado recurso.

21
00:00:49,520 --> 00:00:53,181
‫Então, novamente, com autorização, basicamente verificamos se um

22
00:00:53,181 --> 00:00:58,080
‫determinado usuário tem permissão para acessar um determinado recurso, mesmo que

23
00:00:58,080 --> 00:00:59,890
‫ele esteja logado.

24
00:00:59,890 --> 00:01:03,150
‫Portanto, nem todos os usuários logados poderão realizar as

25
00:01:03,150 --> 00:01:05,950
‫mesmas ações em nossa API, certo?

26
00:01:05,950 --> 00:01:08,119
‫E este é um cenário muito comum

27
00:01:08,119 --> 00:01:10,240
‫que deveria ser implementado em todo e

28
00:01:10,240 --> 00:01:12,222
‫qualquer aplicativo da web normalmente, certo?

29
00:01:12,222 --> 00:01:15,163
‫Então, vamos construir outra função de

30
00:01:15,163 --> 00:01:18,410
‫middleware aqui, desta vez para restringir certas rotas.

31
00:01:18,410 --> 00:01:20,780
‫Por exemplo, para excluir passeios.

32
00:01:20,780 --> 00:01:23,310
‫Então, isso significa que vamos construir outra

33
00:01:23,310 --> 00:01:24,840
‫função de middleware aqui.

34
00:01:24,840 --> 00:01:27,290
‫Desta vez, para restringir certas rotas, como,

35
00:01:27,290 --> 00:01:29,068
‫por exemplo, excluir passeios,

36
00:01:29,068 --> 00:01:31,338
‫apenas para certas funções de usuário.

37
00:01:31,338 --> 00:01:32,630
‫OK?

38
00:01:32,630 --> 00:01:35,020
‫E então, deixe-me mostrar como isso

39
00:01:35,020 --> 00:01:36,520
‫seria na prática.

40
00:01:36,520 --> 00:01:38,410
‫Portanto, aqui, nas rotas

41
00:01:38,410 --> 00:01:42,270
‫de passeio, vamos voltar a esse exemplo de exclusão

42
00:01:42,270 --> 00:01:46,770
‫de passeios e, portanto, vamos adicionar algum middleware à pilha aqui.

43
00:01:46,770 --> 00:01:50,670
‫Portanto, authController, proteja.

44
00:01:50,670 --> 00:01:52,300
‫Portanto, primeiro, sempre precisamos

45
00:01:52,300 --> 00:01:55,490
‫verificar se o usuário está realmente conectado, certo?

46
00:01:55,490 --> 00:01:58,550
‫Portanto, se um administrador estiver tentando excluir um tour,

47
00:01:58,550 --> 00:02:00,020
‫ele ainda precisará

48
00:02:00,020 --> 00:02:02,350
‫verificar se ele está realmente conectado, certo?

49
00:02:02,350 --> 00:02:04,610
‫Portanto, o primeiro middleware na pilha

50
00:02:04,610 --> 00:02:06,690
‫aqui, sempre será o protegido.

51
00:02:06,690 --> 00:02:09,130
‫Mas então, depois desse, também

52
00:02:09,130 --> 00:02:13,113
‫teremos o authController. restringir.

53
00:02:14,760 --> 00:02:17,000
‫Então, restrito a, ok?

54
00:02:17,000 --> 00:02:20,180
‫E para essa função passaremos algumas funções de usuário,

55
00:02:20,180 --> 00:02:23,220
‫que serão autorizadas a interagir com este recurso.

56
00:02:23,220 --> 00:02:27,030
‫Nesse caso, com a exclusão de um tour, ok?

57
00:02:27,030 --> 00:02:29,390
‫Então, vamos definir este como admin.

58
00:02:29,390 --> 00:02:31,650
‫Portanto, apenas para administradores.

59
00:02:31,650 --> 00:02:35,120
‫Ok, agora estamos lidando com funções de usuário aqui.

60
00:02:35,120 --> 00:02:36,650
‫Assim como o administrador.

61
00:02:36,650 --> 00:02:39,584
‫E agora, não temos isso em nosso modelo de usuário.

62
00:02:39,584 --> 00:02:42,642
‫E então vamos implementar isso rapidamente aqui.

63
00:02:42,642 --> 00:02:43,633
‫Tudo bem.

64
00:02:44,470 --> 00:02:48,160
‫Então, vamos fazer isso.

65
00:02:48,160 --> 00:02:52,323
‫Na verdade, antes das coisas de senha, assim como aqui.

66
00:02:56,170 --> 00:02:59,730
‫E aqui você pode realmente ver como nosso manipulador de

67
00:02:59,730 --> 00:03:02,070
‫exceções não detectadas está funcionando bem,

68
00:03:02,070 --> 00:03:05,130
‫porque strictTo ainda não é uma função, certo?

69
00:03:05,130 --> 00:03:06,610
‫Não o implementamos ainda.

70
00:03:06,610 --> 00:03:08,810
‫Eu simplesmente usei para mostrar o

71
00:03:08,810 --> 00:03:10,410
‫que exatamente vamos construir.

72
00:03:10,410 --> 00:03:12,280
‫E claro que há um

73
00:03:12,280 --> 00:03:13,510
‫erro, e

74
00:03:13,510 --> 00:03:17,490
‫então o nodemon está agora esperando que reiniciemos o servidor, certo?

75
00:03:17,490 --> 00:03:20,323
‫De qualquer forma, o papel aqui deve

76
00:03:26,240 --> 00:03:30,110
‫ser do tipo String, e agora vou usar o validador enum

77
00:03:30,110 --> 00:03:33,310
‫para permitir que apenas certos tipos de papéis sejam especificados.

78
00:03:33,310 --> 00:03:37,410
‫E esses são os usuários gerais, ou seja, os usuários normais, então

79
00:03:37,410 --> 00:03:38,860
‫vamos chamá-los de usuário.

80
00:03:41,170 --> 00:03:42,823
‫Então, temos o guia

81
00:03:44,120 --> 00:03:45,823
‫turístico, temos o guia turístico

82
00:03:47,240 --> 00:03:49,043
‫líder e temos o administrador.

83
00:03:50,410 --> 00:03:53,250
‫Então, estou ligando para aquele administrador, certo?

84
00:03:53,250 --> 00:03:56,359
‫E essas funções de usuário que temos aqui

85
00:03:56,359 --> 00:03:59,450
‫certamente serão específicas ao domínio do aplicativo.

86
00:03:59,450 --> 00:04:02,260
‫Então, por exemplo, quando você está administrando um site de

87
00:04:02,260 --> 00:04:03,840
‫comunidade, não fará muito sentido

88
00:04:03,840 --> 00:04:05,940
‫ter um guia e um guia principal.

89
00:04:05,940 --> 00:04:08,570
‫Em vez disso, você provavelmente

90
00:04:08,570 --> 00:04:11,700
‫terá moderadores ou contribuidores ou membros.

91
00:04:11,700 --> 00:04:13,740
‫Portanto, você sempre terá nomes

92
00:04:13,740 --> 00:04:16,680
‫diferentes, dependendo do tipo de aplicativo que está escrevendo.

93
00:04:16,680 --> 00:04:19,023
‫Mas, no nosso caso, é isso que faz sentido.

94
00:04:21,290 --> 00:04:24,170
‫Em seguida, também queremos definir um padrão aqui, de

95
00:04:24,170 --> 00:04:26,540
‫modo que não tenhamos que especificar

96
00:04:26,540 --> 00:04:29,080
‫sempre que tipo de usuário estamos criando.

97
00:04:29,080 --> 00:04:32,320
‫E então o usuário, o usuário normal, digamos,

98
00:04:32,320 --> 00:04:35,220
‫é aquele que será criado por padrão.

99
00:04:35,220 --> 00:04:36,990
‫Portanto, vamos agora realmente

100
00:04:36,990 --> 00:04:39,340
‫excluir os usuários que já

101
00:04:39,340 --> 00:04:41,021
‫temos, porque eles

102
00:04:41,021 --> 00:04:45,713
‫não têm nenhuma função e, portanto, não precisamos mais deles assim.

103
00:04:47,780 --> 00:04:48,810
‫Tudo bem.

104
00:04:48,810 --> 00:04:50,260
‫E então, vamos

105
00:04:50,260 --> 00:04:52,630
‫prosseguir e criar alguns novos.

106
00:04:52,630 --> 00:04:55,980
‫Então, vou me inscrever aqui como hello @

107
00:04:58,610 --> 00:05:03,610
‫jonas, e agora esse será um usuário normal, e agora não conseguimos obter

108
00:05:04,180 --> 00:05:06,060
‫nenhuma resposta, e isso

109
00:05:06,060 --> 00:05:09,320
‫é claro porque temos esse erro aqui, e

110
00:05:09,320 --> 00:05:13,083
‫então, vamos muito tire rapidamente essa linha de código.

111
00:05:14,750 --> 00:05:16,050
‫E agora o erro desapareceu.

112
00:05:17,326 --> 00:05:19,400
‫E agora ele deve

113
00:05:19,400 --> 00:05:22,000
‫rodar, e de fato agora temos

114
00:05:22,000 --> 00:05:25,120
‫esse usuário, com a função de usuário, ok?

115
00:05:25,120 --> 00:05:26,293
‫Esse é o nosso

116
00:05:27,920 --> 00:05:29,883
‫padrão, mas agora vamos criar um administrador aqui.

117
00:05:30,860 --> 00:05:32,330
‫E para deixar

118
00:05:32,330 --> 00:05:34,630
‫isso bem claro, vamos colocá-lo aqui no e-mail

119
00:05:34,630 --> 00:05:36,780
‫também, e agora precisamos realmente especificar a

120
00:05:40,100 --> 00:05:41,603
‫função e defini-la como admin.

121
00:05:42,860 --> 00:05:47,360
‫Envie isso e agora temos aqui o nosso administrador de sistema.

122
00:05:47,360 --> 00:05:48,193
‫Legal.

123
00:05:48,193 --> 00:05:52,930
‫Então, vamos voltar aqui, colocar este código de volta, e agora faremos

124
00:05:52,930 --> 00:05:55,210
‫isso de forma que possamos

125
00:05:55,210 --> 00:05:58,360
‫realmente passar vários argumentos para este strictTo.

126
00:05:58,360 --> 00:06:01,220
‫Portanto, quero que o administrador possa excluir os passeios,

127
00:06:01,220 --> 00:06:02,974
‫mas também excluir um guia.

128
00:06:02,974 --> 00:06:04,000
‫Tudo bem?

129
00:06:04,000 --> 00:06:05,750
‫E então vamos adicionar isso aqui também.

130
00:06:08,070 --> 00:06:09,130
‫OK?

131
00:06:09,130 --> 00:06:12,210
‫Assim, o administrador e o guia líder agora podem

132
00:06:12,210 --> 00:06:16,200
‫excluir passeios, mas não os guias normais e também não os usuários normais.

133
00:06:16,200 --> 00:06:17,140
‫Tudo bem?

134
00:06:17,140 --> 00:06:20,220
‫Então é assim que o strictTo vai

135
00:06:20,220 --> 00:06:22,423
‫funcionar, vamos prosseguir e implementá-lo.

136
00:06:25,270 --> 00:06:28,563
‫Portanto, as exportações. restrTo, e

137
00:06:30,470 --> 00:06:34,120
‫agora, como vamos realmente implementar isso?

138
00:06:34,120 --> 00:06:36,510
‫Porque normalmente, não podemos passar

139
00:06:36,510 --> 00:06:38,910
‫argumentos para uma função de middleware, certo?

140
00:06:38,910 --> 00:06:41,010
‫Mas, neste caso, realmente queremos.

141
00:06:41,010 --> 00:06:42,640
‫Queremos repassar os

142
00:06:42,640 --> 00:06:46,100
‫papéis, quem tem permissão para acessar o recurso, certo?

143
00:06:46,100 --> 00:06:48,800
‫Portanto, neste caso, o administrador e o guia principal.

144
00:06:48,800 --> 00:06:51,940
‫Portanto, precisamos basicamente passar argumentos para a função

145
00:06:51,940 --> 00:06:54,050
‫de middleware de uma forma

146
00:06:54,050 --> 00:06:55,830
‫que geralmente não funcione.

147
00:06:55,830 --> 00:06:57,658
‫Então, como vamos fazer isso?

148
00:06:57,658 --> 00:07:00,600
‫Bem, aqui, vamos realmente criar como uma

149
00:07:00,600 --> 00:07:03,410
‫função de wrapper, que retornará

150
00:07:03,410 --> 00:07:07,033
‫a função de middleware que realmente queremos criar, ok?

151
00:07:08,070 --> 00:07:10,540
‫Portanto, esta é a função restrictedTo, e

152
00:07:10,540 --> 00:07:12,160
‫aqui queremos passar

153
00:07:12,160 --> 00:07:14,150
‫um número arbitrário de argumentos.

154
00:07:14,150 --> 00:07:15,870
‫Então, basicamente, de papéis.

155
00:07:15,870 --> 00:07:18,196
‫E então podemos usar a sintaxe do

156
00:07:18,196 --> 00:07:20,793
‫parâmetro rest, que é nova no ES6, e

157
00:07:21,950 --> 00:07:23,240
‫isso criará um

158
00:07:23,240 --> 00:07:26,053
‫array de todos os argumentos que foram especificados, ok?

159
00:07:28,740 --> 00:07:30,350
‫Portanto, estamos criando

160
00:07:30,350 --> 00:07:33,960
‫essa função e, imediatamente, retornaremos uma nova função.

161
00:07:33,960 --> 00:07:36,730
‫E esta é a própria função de middleware.

162
00:07:36,730 --> 00:07:40,573
‫Então, solicitação, resposta e próximo.

163
00:07:43,000 --> 00:07:43,833
‫OK?

164
00:07:43,833 --> 00:07:44,890
‫Faz sentido?

165
00:07:44,890 --> 00:07:47,190
‫E então essa função

166
00:07:47,190 --> 00:07:49,643
‫aqui basicamente terá acesso ao parâmetro

167
00:07:49,643 --> 00:07:53,310
‫dessa função aqui, porque há um encerramento, ok?

168
00:07:53,310 --> 00:07:55,780
‫Assim, apenas como um comentário aqui para

169
00:07:55,780 --> 00:07:58,160
‫explicar, funções são uma matriz.

170
00:07:58,160 --> 00:08:01,338
‫Então, por exemplo, pode ser,

171
00:08:01,338 --> 00:08:06,338
‫neste caso, administrador e guia de leads, certo?

172
00:08:08,670 --> 00:08:12,490
‫Então, quando daremos a um usuário acesso a uma determinada rota?

173
00:08:12,490 --> 00:08:15,410
‫Bem, basicamente, quando seu papel de

174
00:08:15,410 --> 00:08:19,900
‫usuário está dentro desta matriz de papéis que passamos certo?

175
00:08:19,900 --> 00:08:21,930
‫Digamos que agora tenhamos o usuário

176
00:08:21,930 --> 00:08:24,930
‫normal, que tem a função de simplesmente usuário, então

177
00:08:24,930 --> 00:08:26,300
‫vamos escrever aqui.

178
00:08:26,300 --> 00:08:29,397
‫A função agora é apenas do usuário.

179
00:08:29,397 --> 00:08:32,520
‫Basicamente, não está contido neste array

180
00:08:32,520 --> 00:08:36,490
‫e, portanto, esse usuário não tem permissão, certo?

181
00:08:36,490 --> 00:08:38,320
‫E então, vamos escrever isso em código.

182
00:08:38,320 --> 00:08:39,670
‫Na verdade, é muito simples.

183
00:08:40,650 --> 00:08:45,650
‫Então, se não papéis. inclui, e ok, mais uma

184
00:08:47,072 --> 00:08:50,660
‫vez, includes é um método de array muito bom

185
00:08:50,660 --> 00:08:54,850
‫que está disponível em Java Script em todos os arrays, ok?

186
00:08:54,850 --> 00:08:57,010
‫Portanto, se esta matriz de funções

187
00:08:57,010 --> 00:08:58,900
‫não inclui a função do

188
00:08:58,900 --> 00:09:01,800
‫usuário atual, não damos permissão para esse usuário.

189
00:09:01,800 --> 00:09:04,740
‫E onde está armazenada a função do usuário atual?

190
00:09:04,740 --> 00:09:07,247
‫Bem, vamos lembrar a linha de código

191
00:09:07,247 --> 00:09:09,394
‫que colocamos aqui, bem no

192
00:09:09,394 --> 00:09:11,620
‫final, onde concedemos acesso à rota

193
00:09:11,620 --> 00:09:12,900
‫protegida, armazenamos

194
00:09:12,900 --> 00:09:16,460
‫o usuário atual na solicitação. do utilizador.

195
00:09:16,460 --> 00:09:18,520
‫E lembre-se de como esse

196
00:09:18,520 --> 00:09:21,929
‫middleware de proteção sempre é executado antes de strictTo, certo?

197
00:09:21,929 --> 00:09:25,330
‫Então, aqui, primeiro temos proteger e,

198
00:09:25,330 --> 00:09:27,391
‫em seguida, restringirTo.

199
00:09:27,391 --> 00:09:30,600
‫E então, no momento em que esta função de middleware

200
00:09:30,600 --> 00:09:32,660
‫aqui é executada, esta já foi

201
00:09:32,660 --> 00:09:35,830
‫concluída e colocou o usuário atual no objeto de solicitação.

202
00:09:35,830 --> 00:09:38,740
‫E agora, podemos usar isso aqui.

203
00:09:38,740 --> 00:09:42,480
‫Então, peça. do utilizador. Função.

204
00:09:42,480 --> 00:09:45,050
‫Então é aí que a função é armazenada.

205
00:09:45,050 --> 00:09:45,953
‫Tão simples.

206
00:09:46,950 --> 00:09:50,993
‫Nesse caso, criamos um novo erro.

207
00:09:52,970 --> 00:09:55,932
‫Assim como antes, e agora

208
00:09:55,932 --> 00:10:00,932
‫dizemos que você não tem permissão para realizar esta ação.

209
00:10:03,680 --> 00:10:07,000
‫E agora um novo código de status, que é 403.

210
00:10:07,000 --> 00:10:09,790
‫E este significa proibido, ok?

211
00:10:09,790 --> 00:10:11,400
‫Portanto, há realmente

212
00:10:11,400 --> 00:10:14,480
‫um código de status http específico

213
00:10:14,480 --> 00:10:18,180
‫apenas para este caso, para autorização basicamente, certo?

214
00:10:18,180 --> 00:10:22,423
‫E, bem, caso contrário, simplesmente ligamos em seguida.

215
00:10:24,090 --> 00:10:25,580
‫E é isso mesmo.

216
00:10:25,580 --> 00:10:27,910
‫Então é tão simples quanto é.

217
00:10:27,910 --> 00:10:30,160
‫Então, vamos recapitular rapidamente o que acabamos de fazer aqui.

218
00:10:31,650 --> 00:10:35,140
‫Portanto, aqui, primeiro executamos o middleware de proteção.

219
00:10:35,140 --> 00:10:36,770
‫Em seguida, restrinja o middleware,

220
00:10:36,770 --> 00:10:39,410
‫e somente se esses dois middlewares passarem para o

221
00:10:39,410 --> 00:10:41,100
‫próximo, iremos para o tour principal.

222
00:10:41,100 --> 00:10:42,830
‫E então, basicamente, este

223
00:10:42,830 --> 00:10:45,419
‫manipulador de rota, ou este controlador de rota,

224
00:10:45,419 --> 00:10:47,790
‫é protegido e também é restrito por

225
00:10:47,790 --> 00:10:49,750
‫este middleware que acabamos de criar.

226
00:10:49,750 --> 00:10:50,800
‫Então, para

227
00:10:50,800 --> 00:10:52,650
‫esta função, passamos todas as

228
00:10:52,650 --> 00:10:55,730
‫funções que têm permissão para interagir com este recurso.

229
00:10:55,730 --> 00:10:57,794
‫Então, basicamente, quais têm permissão

230
00:10:57,794 --> 00:11:00,310
‫para executar essa função de manipulador, certo?

231
00:11:00,310 --> 00:11:03,370
‫E então, essa função restringirTo será

232
00:11:03,370 --> 00:11:06,910
‫executada e retornará a própria função de middleware, certo?

233
00:11:06,910 --> 00:11:11,140
‫E essa função de middleware em si é realmente esta.

234
00:11:11,140 --> 00:11:13,010
‫Então, por causa

235
00:11:13,010 --> 00:11:16,500
‫do encerramento, terá acesso aos papéis, ok?

236
00:11:16,500 --> 00:11:19,350
‫E então, digamos que a função do usuário atual, que

237
00:11:19,350 --> 00:11:24,180
‫é, lembre-se, armazenada em req. do utilizador. papel, certo?

238
00:11:24,180 --> 00:11:27,020
‫Então, digamos que sua função seja

239
00:11:27,020 --> 00:11:29,970
‫usuário e, como essa função não está no

240
00:11:29,970 --> 00:11:32,920
‫array desta função, bem, obteremos este erro, certo?

241
00:11:32,920 --> 00:11:37,583
‫E é assim que funciona. inclui testes aqui para, ok?

242
00:11:38,450 --> 00:11:40,410
‫Mas é claro que, se

243
00:11:40,410 --> 00:11:42,860
‫estiver incluído, passaremos para o próximo middleware.

244
00:11:42,860 --> 00:11:46,130
‫Que, novamente, é o próprio manipulador de rota.

245
00:11:46,130 --> 00:11:46,963
‫Legal.

246
00:11:46,963 --> 00:11:48,120
‫Então, espero que faça sentido.

247
00:11:48,120 --> 00:11:50,453
‫Vamos agora testar isso rapidamente.

248
00:11:51,390 --> 00:11:52,580
‫OK?

249
00:11:52,580 --> 00:11:54,340
‫Então, agora, temos

250
00:11:54,340 --> 00:11:58,420
‫esse token aqui, armazenado na variável JTW, certo?

251
00:11:58,420 --> 00:12:00,890
‫Portanto, lembre-se disso na última aula.

252
00:12:00,890 --> 00:12:03,233
‫Então, estamos neste ambiente

253
00:12:03,233 --> 00:12:06,230
‫de desenvolvimento e aqui está essa variável.

254
00:12:06,230 --> 00:12:08,080
‫Então, exatamente aquele que está aqui embaixo.

255
00:12:09,540 --> 00:12:10,373
‫Tudo bem?

256
00:12:10,373 --> 00:12:12,600
‫Portanto, se agora quiséssemos

257
00:12:12,600 --> 00:12:16,914
‫excluir um passeio, teríamos que especificar essa variável lá, certo?

258
00:12:16,914 --> 00:12:19,936
‫Então, vamos para a autorização, o token

259
00:12:19,936 --> 00:12:21,970
‫do portador, e ele

260
00:12:21,970 --> 00:12:24,470
‫já o coloca aqui para nós.

261
00:12:24,470 --> 00:12:25,980
‫Então ele já sabe

262
00:12:25,980 --> 00:12:28,480
‫que é esse que a gente quer usar,

263
00:12:28,480 --> 00:12:30,544
‫porque, bom, já usamos antes, ok?

264
00:12:30,544 --> 00:12:32,960
‫Agora, quero começar mostrando que

265
00:12:32,960 --> 00:12:36,710
‫um usuário comum não pode excluir um tour agora, certo?

266
00:12:36,710 --> 00:12:40,183
‫E então vamos começar fazendo login como um usuário regular.

267
00:12:41,300 --> 00:12:44,253
‫E isso é oi, certo?

268
00:12:45,530 --> 00:12:50,530
‫Lembre-se, agora temos hello @ jonas. io, que é um usuário normal, e

269
00:12:50,670 --> 00:12:54,410
‫temos admin @ jonas. Io.

270
00:12:54,410 --> 00:12:58,350
‫E ainda temos este antigo aqui, vamos nos livrar dele.

271
00:12:58,350 --> 00:12:59,183
‫Tudo bem.

272
00:12:59,183 --> 00:13:01,803
‫E então vou começar com hello @ jonas. Io.

273
00:13:03,630 --> 00:13:04,650
‫OK?

274
00:13:04,650 --> 00:13:08,470
‫Então, logando, esse token será armazenado na variável de

275
00:13:08,470 --> 00:13:10,770
‫ambiente, e agora estamos prontos

276
00:13:10,770 --> 00:13:12,670
‫para deletar um tour.

277
00:13:13,530 --> 00:13:16,440
‫Na verdade, também precisamos obter um ID agora,

278
00:13:16,440 --> 00:13:18,940
‫então vamos pegar um rapidamente daqui,

279
00:13:18,940 --> 00:13:22,063
‫então vamos basicamente deletar um de nossos tours aqui.

280
00:13:25,450 --> 00:13:27,420
‫Então, vamos usar o último aqui.

281
00:13:27,420 --> 00:13:28,683
‫Então, o observador de estrelas.

282
00:13:31,356 --> 00:13:32,189
‫OK?

283
00:13:32,189 --> 00:13:35,570
‫E vamos ver se recebemos nossa mensagem de erro.

284
00:13:35,570 --> 00:13:38,290
‫E, de fato, você não tem permissão para

285
00:13:38,290 --> 00:13:39,620
‫realizar esta ação.

286
00:13:39,620 --> 00:13:41,610
‫Então, 403.

287
00:13:41,610 --> 00:13:44,823
‫Então, de fato, está funcionando, certo?

288
00:13:46,150 --> 00:13:47,630
‫Mas, para

289
00:13:47,630 --> 00:13:50,433
‫completar agora, vamos logar como administrador.

290
00:13:52,830 --> 00:13:53,823
‫Então, administrador.

291
00:13:55,480 --> 00:13:56,540
‫Conecte-se.

292
00:13:56,540 --> 00:14:00,000
‫E então este token agora está armazenado nesta variável.

293
00:14:00,000 --> 00:14:01,500
‫Portanto, se você

294
00:14:01,500 --> 00:14:04,910
‫executar isso agora, poderemos excluir o passeio de forma eficaz.

295
00:14:04,910 --> 00:14:05,743
‫Quero ver?

296
00:14:07,720 --> 00:14:09,240
‫E se foi.

297
00:14:09,240 --> 00:14:11,920
‫Portanto, temos um código de 204, sem conteúdo,

298
00:14:11,920 --> 00:14:13,999
‫que é o padrão ao excluir,

299
00:14:13,999 --> 00:14:16,259
‫mas agora se conseguirmos todos os

300
00:14:16,259 --> 00:14:19,090
‫nossos passeios, agora devemos ver um número oito aqui,

301
00:14:19,090 --> 00:14:20,460
‫portanto, apenas oito

302
00:14:20,460 --> 00:14:24,350
‫resultados, e isso significa que o último agora é se foi, ok?

303
00:14:24,350 --> 00:14:26,520
‫E agora, como acabamos de

304
00:14:26,520 --> 00:14:28,496
‫provar, um administrador tem

305
00:14:28,496 --> 00:14:31,671
‫permissão para excluir efetivamente os passeios, certo?

306
00:14:31,671 --> 00:14:34,372
‫E, eu realmente não posso enfatizar o

307
00:14:34,372 --> 00:14:38,060
‫suficiente o quão importante é este trecho de código aqui.

308
00:14:38,060 --> 00:14:40,980
‫Então, basicamente, de onde tiramos a função do

309
00:14:40,980 --> 00:14:43,550
‫usuário atual do middleware antes, certo?

310
00:14:43,550 --> 00:14:46,804
‫Portanto, armazenar o usuário na solicitação como fizemos

311
00:14:46,804 --> 00:14:48,770
‫aqui é realmente crucial

312
00:14:48,770 --> 00:14:52,170
‫para que a próxima etapa realmente funcione, certo?

313
00:14:52,170 --> 00:14:55,760
‫Portanto, o ID que é codificado no token da web Jason é o que

314
00:14:55,760 --> 00:14:57,990
‫faz nosso código saber se o usuário que

315
00:14:57,990 --> 00:15:01,470
‫está tentando executar a ação é um usuário, ou se é um administrador,

316
00:15:01,470 --> 00:15:04,900
‫ou se é um guia de chumbo, ou o que quer que seja.

317
00:15:04,900 --> 00:15:06,790
‫Novamente, porque esses

318
00:15:06,790 --> 00:15:09,730
‫dados vêm desse middleware de proteção.

319
00:15:09,730 --> 00:15:10,563
‫Excelente.

320
00:15:10,563 --> 00:15:13,790
‫Essa foi mais uma peça importante do quebra-cabeça

321
00:15:13,790 --> 00:15:17,040
‫na implementação de nosso fluxo de trabalho de autenticação aqui.

322
00:15:17,040 --> 00:15:19,821
‫E claro, você quer restringir

323
00:15:19,821 --> 00:15:23,479
‫várias outras rotas, por exemplo, atualizar aqui, ok?

324
00:15:23,479 --> 00:15:25,300
‫Mas vou deixar isso para

325
00:15:25,300 --> 00:15:27,320
‫um ponto posterior do curso, ok?

326
00:15:27,320 --> 00:15:29,420
‫Bem aqui, eu só queria

327
00:15:29,420 --> 00:15:31,663
‫mostrar como tudo isso funciona, ok?

328
00:15:32,730 --> 00:15:35,600
‫Então, acho que fiz isso com sucesso.

329
00:15:35,600 --> 00:15:38,620
‫Espero que você tenha entendido como isso funcionava e,

330
00:15:38,620 --> 00:15:41,668
‫claro, se não, você sempre pode fazer uma pergunta

331
00:15:41,668 --> 00:15:44,300
‫na seção oficial de perguntas e respostas.

332
00:15:44,300 --> 00:15:47,840
‫De qualquer forma, há mais conteúdo excelente chegando agora e então,

333
00:15:47,840 --> 00:15:49,483
‫vamos seguir em frente.

