1
00:00:03,920 --> 00:00:07,970
Tempo para a terceira tarefa neste curso.

2
00:00:07,970 --> 00:00:13,110
Neste módulo, temos explorado a autenticação do usuário com muitos detalhes.

3
00:00:13,110 --> 00:00:14,705
Agora, nesta atribuição,

4
00:00:14,705 --> 00:00:17,905
vamos trabalhar mais na autenticação do usuário.

5
00:00:17,905 --> 00:00:22,965
Vamos adicionar mais uma categoria de contas chamada como administrador.

6
00:00:22,965 --> 00:00:26,880
Uma conta de administrador é uma conta super que tem

7
00:00:26,880 --> 00:00:31,460
muitos privilégios de executar várias operações.

8
00:00:31,460 --> 00:00:37,410
Uma conta de usuário comum só pode executar determinadas operações em nosso servidor.

9
00:00:37,410 --> 00:00:43,445
Da mesma forma, uma solicitação não registrada vinda de um cliente

10
00:00:43,445 --> 00:00:49,610
que não está conectado só pode executar determinadas operações em nosso servidor.

11
00:00:49,610 --> 00:00:52,400
Agora, vamos modificar nosso servidor de modo

12
00:00:52,400 --> 00:00:55,865
que as operações podem ser executadas por qualquer pessoa.

13
00:00:55,865 --> 00:01:00,350
Você não precisa fazer login no sistema para executar operações de get nos

14
00:01:00,350 --> 00:01:06,110
vários pontos finais da API de descanso, exceto o envio de comentários.

15
00:01:06,110 --> 00:01:11,625
Para as operações restantes nos pontos finais da API restantes,

16
00:01:11,625 --> 00:01:15,365
as operações POST colocar e excluir,

17
00:01:15,365 --> 00:01:20,190
estas serão restritas para serem executadas apenas por usuários administradores,

18
00:01:20,190 --> 00:01:23,780
um usuário comum não pode executar essas operações.

19
00:01:23,780 --> 00:01:30,215
Obviamente, você não quer que um usuário comum envie novos pratos, ou promoções,

20
00:01:30,215 --> 00:01:34,975
ou informações de líderes, ou modifique informações existentes,

21
00:01:34,975 --> 00:01:37,780
ou mesmo exclua essas informações existentes.

22
00:01:37,780 --> 00:01:45,290
Este deve ser o privilégio de apenas o administrador do sistema para o nosso servidor.

23
00:01:45,290 --> 00:01:50,870
Além disso, garantiremos que um usuário comum possa

24
00:01:50,870 --> 00:01:56,010
postar comentários sobre pratos específicos, o que é aceitável.

25
00:01:56,010 --> 00:02:03,015
Da mesma forma, um usuário comum pode atualizar e excluir comentários que ele ou ela postou.

26
00:02:03,015 --> 00:02:10,230
Outros usuários ou mesmo o administrador não podem atualizar ou excluir comentários postados por outro usuário.

27
00:02:10,230 --> 00:02:14,565
Então, esta é outra restrição que vamos colocar em nosso servidor.

28
00:02:14,565 --> 00:02:18,335
Agora, vamos em frente e examinar como vamos

29
00:02:18,335 --> 00:02:23,299
implementar isso e como exatamente nosso servidor faz essas operações.

30
00:02:23,299 --> 00:02:26,720
Em primeiro lugar, vou ilustrar para você como você

31
00:02:26,720 --> 00:02:31,240
criaria uma conta de administrador em seu sistema.

32
00:02:31,240 --> 00:02:33,770
Você vai perceber que temos que ir

33
00:02:33,770 --> 00:02:37,325
nos bastidores para criar uma conta de administrador simplesmente porque,

34
00:02:37,325 --> 00:02:41,930
não queremos que uma conta de administrador seja criada realizando

35
00:02:41,930 --> 00:02:47,030
a operação de inscrição em nossa conta de usuários/cadastro.

36
00:02:47,030 --> 00:02:50,670
Isso deixará nosso servidor vulnerável a ataques.

37
00:02:50,670 --> 00:02:54,185
Assim, uma conta de administrador só pode ser configurada

38
00:02:54,185 --> 00:02:59,085
nos bastidores acessando diretamente o banco de dados.

39
00:02:59,085 --> 00:03:02,090
Então, vamos ver como vamos fazer

40
00:03:02,090 --> 00:03:08,340
isso na ilustração que vou mostrar logo a seguir.

41
00:03:08,380 --> 00:03:11,700
Agora, para examinar nosso banco de dados,

42
00:03:11,700 --> 00:03:15,865
deixe-me iniciar o Mongo Ripple no prompt de comando,

43
00:03:15,865 --> 00:03:21,740
e então vá para a pasta de confusão e então deixe-me

44
00:03:21,740 --> 00:03:27,830
examinar os usuários que estão registrados no meu banco de dados neste momento.

45
00:03:27,830 --> 00:03:32,015
Então, você pode ver que eu tenho apenas um usuário registrado.

46
00:03:32,015 --> 00:03:35,735
Então, deixe-me configurar duas contas adicionais,

47
00:03:35,735 --> 00:03:37,695
uma para um usuário comum,

48
00:03:37,695 --> 00:03:40,280
e outra que vai ser um administrador.

49
00:03:40,280 --> 00:03:47,415
Então, vamos inscrever o administrador e o segundo usuário também do nosso ponto de inscrição,

50
00:03:47,415 --> 00:03:51,935
depois disso eles voltarão para o Mongo Ripple e, em seguida, configurar a conta de administrador

51
00:03:51,935 --> 00:03:57,110
explicitamente modificando o registro em nosso banco de dados.

52
00:03:57,110 --> 00:03:58,935
Indo para postman pin,

53
00:03:58,935 --> 00:04:03,780
deixe-me inscrever dois usuários adicionais.

54
00:04:03,780 --> 00:04:07,755
Então, tínhamos inscrito anteriormente um usuário com esse nome,

55
00:04:07,755 --> 00:04:15,660
então eu vou registrar outro usuário no meu sistema,

56
00:04:15,660 --> 00:04:20,945
e assim, um segundo usuário agora é registrado com sucesso.

57
00:04:20,945 --> 00:04:24,660
Agora, deixe-me também registrar uma conta de administrador.

58
00:04:24,660 --> 00:04:25,880
Então, para a conta de administrador,

59
00:04:25,880 --> 00:04:31,910
configurarei o nome de usuário como administrador e, em seguida, inscreverei um usuário administrador.

60
00:04:31,910 --> 00:04:38,545
Então, vemos que agora adicionamos duas novas contas ao nosso sistema.

61
00:04:38,545 --> 00:04:40,455
Indo para o Mongo Ripple,

62
00:04:40,455 --> 00:04:43,870
deixe-me repetir novamente o

63
00:04:43,870 --> 00:04:51,110
db.user.find () e deixe-me fazê-lo bonito para que pareça mais fácil de ler.

64
00:04:51,110 --> 00:04:52,845
Então, quando eu fizer isso,

65
00:04:52,845 --> 00:04:58,655
você pode ver que temos uma conta de administrador aqui com o nome de usuário como administrador.

66
00:04:58,655 --> 00:05:00,770
Ignore o primeiro nome e sobrenome,

67
00:05:00,770 --> 00:05:05,190
vou configurar este primeiro nome e sobrenome para ser o mesmo para todos os três.

68
00:05:05,190 --> 00:05:12,800
Então, temos a outra conta de usuário que configurei com o nome de usuário aqui,

69
00:05:12,800 --> 00:05:17,190
e a terceira conta de usuário que já tínhamos em nosso banco de dados.

70
00:05:17,190 --> 00:05:19,750
Então, agora temos três contas de usuário;

71
00:05:19,750 --> 00:05:22,215
duas contas de usuário aqui

72
00:05:22,215 --> 00:05:23,860
e uma conta de administrador.

73
00:05:23,860 --> 00:05:28,395
Agora, é claro, você verá que nas contas de usuário,

74
00:05:28,395 --> 00:05:32,690
temos esse sinalizador chamado como o sinalizador de administrador que está definido como false para

75
00:05:32,690 --> 00:05:38,100
qualquer conta que está registrado neste endpoint /users/signup.

76
00:05:38,100 --> 00:05:40,740
Essa é a maneira padrão que você deve configurar contas.

77
00:05:40,740 --> 00:05:44,465
Você não pode permitir que um usuário configure uma conta de administrador

78
00:05:44,465 --> 00:05:48,945
fazendo nada diretamente no endpoint da API restante.

79
00:05:48,945 --> 00:05:53,600
Em vez disso, vamos nos bastidores e, em seguida, no Mongo Ripple,

80
00:05:53,600 --> 00:06:00,510
eu vou modificar este registro para o usuário admin

81
00:06:00,510 --> 00:06:07,920
dizendo db.users.update e, em seguida,

82
00:06:07,920 --> 00:06:15,205
vamos fornecer o nome de usuário como admin aqui.

83
00:06:15,205 --> 00:06:25,470
Então, nós vamos estar atualizando o registro de verso e então vamos dizer {$set:

84
00:06:25,470 --> 00:06:31,520
recall como estávamos manipulando o MongoDB então vamos

85
00:06:31,520 --> 00:06:39,180
dizer {$set: {"admin”: “true”}}.

86
00:06:39,180 --> 00:06:42,980
Então, o que estamos fazendo aqui é que estamos procurando

87
00:06:42,980 --> 00:06:47,810
por esta conta de usuário com o admin nome de usuário

88
00:06:47,810 --> 00:06:52,190
e, em seguida, estamos configurando o sinalizador admin como true

89
00:06:52,190 --> 00:06:58,125
aqui usando a opção $set.

90
00:06:58,125 --> 00:07:02,520
Então, é assim que atualizamos uma conta para ser uma conta de administrador.

91
00:07:02,520 --> 00:07:08,010
Então, você vê que isso modificou os resultados.

92
00:07:08,010 --> 00:07:11,880
Então, vamos verificar novamente as contas.

93
00:07:11,880 --> 00:07:13,410
Agora, quando você verificar a conta,

94
00:07:13,410 --> 00:07:16,140
você verá que, para a conta de administrador,

95
00:07:16,140 --> 00:07:19,475
o sinalizador de administrador agora está definido

96
00:07:19,475 --> 00:07:22,810
como true, então é assim que você vai acabar criando uma conta de administrador.

97
00:07:22,810 --> 00:07:27,920
Agora, a conta Admin como seria de esperar tem privilégios adicionais.

98
00:07:27,920 --> 00:07:33,400
Então, uma vez que você concluir esta atribuição, em seguida,

99
00:07:33,400 --> 00:07:38,525
você notaria que a operação get pode ser realizada por qualquer usuário

100
00:07:38,525 --> 00:07:45,080
no /dishes/aspecificdishendpoint/promoções

101
00:07:45,080 --> 00:07:50,570
e o /promotions/specific promotionendpoint e da mesma forma,

102
00:07:50,570 --> 00:07:52,985
para os líderes em pontos também.

103
00:07:52,985 --> 00:07:55,590
Mas as

104
00:07:55,590 --> 00:08:02,195
operações POST, colocar e excluir nesses endpoints só podem ser executadas por usuários administradores.

105
00:08:02,195 --> 00:08:08,110
Agora, além disso, o endpoint de comentários,

106
00:08:08,110 --> 00:08:14,110
permitiremos que apenas um usuário registrado que tenha logado para

107
00:08:14,110 --> 00:08:20,835
acessar comentários para um prato específico,

108
00:08:20,835 --> 00:08:25,990
vamos permitir que um usuário conectado para postar comentários.

109
00:08:25,990 --> 00:08:28,730
Nós já configuramos isso no exercício, então,

110
00:08:28,730 --> 00:08:31,290
quando o usuário postar o comentário,

111
00:08:31,290 --> 00:08:34,150
nós garantimos que verificamos

112
00:08:34,150 --> 00:08:37,150
a autenticidade do usuário e, em seguida, quando o comentário é postado,

113
00:08:37,150 --> 00:08:44,060
nós configuramos o ID do autor para o comentário usando o ID do usuário.

114
00:08:44,060 --> 00:08:46,140
Então, já concluímos isso.

115
00:08:46,140 --> 00:08:48,625
Mas agora, além disso,

116
00:08:48,625 --> 00:08:55,220
para as operações put e delete em comentários,

117
00:08:55,220 --> 00:08:59,480
apenas o usuário que enviou o comentário específico

118
00:08:59,480 --> 00:09:04,180
poderá fazer operações de colocar e excluir em seus próprios comentários.

119
00:09:04,180 --> 00:09:08,480
Qualquer outro usuário não pode modificar os comentários de outra pessoa.

120
00:09:08,480 --> 00:09:13,355
Da mesma forma, mesmo o administrador não pode modificar os comentários de outra pessoa

121
00:09:13,355 --> 00:09:14,960
ou excluir o comentário de outra pessoa.

122
00:09:14,960 --> 00:09:18,850
Então, essa é a segunda parte desta tarefa que você vai fazer.

123
00:09:18,850 --> 00:09:22,910
A terceira parte é que um administrador pode consultar

124
00:09:22,910 --> 00:09:31,115
o ponto final /users e pedir a lista de usuários registrados,

125
00:09:31,115 --> 00:09:35,090
nenhum outro usuário comum pode fazer essa consulta.

126
00:09:35,090 --> 00:09:38,550
Então, esta é a outra restrição que vamos colocar lá.

127
00:09:38,550 --> 00:09:42,745
Agora, para verificar se um usuário é um administrador,

128
00:09:42,745 --> 00:09:46,770
primeiro verificamos se o usuário é um usuário registrado.

129
00:09:46,770 --> 00:09:51,470
Então, a função de verificação do usuário que já implementamos no

130
00:09:51,470 --> 00:09:56,450
authenticate.js deve ser aplicada mesmo onde você precisa verificar o admin.

131
00:09:56,450 --> 00:09:59,855
Primeiro, você verifica se é um usuário verificado, depois disso,

132
00:09:59,855 --> 00:10:05,795
você introduzirá outra função chamada VerifyAdmin no

133
00:10:05,795 --> 00:10:12,285
arquivo authenticate.js que irá verificar para garantir que o usuário é um administrador.

134
00:10:12,285 --> 00:10:15,190
Agora, para verificar se um usuário é um administrador,

135
00:10:15,190 --> 00:10:19,900
tudo o que você precisa fazer é verificar o rec.user que está

136
00:10:19,900 --> 00:10:24,855
no objeto de solicitação rec.user lá,

137
00:10:24,855 --> 00:10:28,325
verifique se o sinalizador admin é verdadeiro ou não.

138
00:10:28,325 --> 00:10:30,375
Se o sinalizador admin for verdadeiro,

139
00:10:30,375 --> 00:10:39,315
você permitirá que o processo normal de prosseguir para o [inaudível] aconteça.

140
00:10:39,315 --> 00:10:41,570
Se o usuário não for um administrador,

141
00:10:41,570 --> 00:10:49,075
você gerará um erro e enviará uma mensagem de erro de volta para o lado do cliente.

142
00:10:49,075 --> 00:10:53,945
Então, é assim que vamos lidar com a conta de usuários de administrador.

143
00:10:53,945 --> 00:11:03,165
Agora, quando um usuário está tentando modificar ou excluir seus próprios comentários,

144
00:11:03,165 --> 00:11:06,320
temos que verificar para ter certeza de que o autor do comentário é o

145
00:11:06,320 --> 00:11:10,245
mesmo que o usuário que está tentando modificar o comentário.

146
00:11:10,245 --> 00:11:13,085
Agora, o rec.user também tem o campo ID,

147
00:11:13,085 --> 00:11:16,860
então você precisa verificar isso com o campo autor do comentário.

148
00:11:16,860 --> 00:11:18,255
Se esses dois corresponderem,

149
00:11:18,255 --> 00:11:22,390
então você permitirá que o usuário execute as operações put ou delete.

150
00:11:22,390 --> 00:11:24,050
Se eles não corresponderem,

151
00:11:24,050 --> 00:11:31,190
então você não permitirá que as operações put ou delete nesse comentário específico.

152
00:11:31,190 --> 00:11:33,590
Então este é o outro aspecto que você

153
00:11:33,590 --> 00:11:37,185
vai implementar como parte de sua terceira tarefa.

154
00:11:37,185 --> 00:11:40,420
Vamos ver como todas essas coisas funcionam

155
00:11:40,420 --> 00:11:44,500
usando o Postman para executar várias operações em nosso servidor.

156
00:11:44,500 --> 00:11:46,545
Voltando para o Postman,

157
00:11:46,545 --> 00:11:49,725
deixe-me primeiro executar uma operação GET em

158
00:11:49,725 --> 00:11:53,920
pratos para apenas verificar para ver o que está no meu banco de dados.

159
00:11:53,920 --> 00:11:56,140
Então, se eu executar uma operação GET nos pratos,

160
00:11:56,140 --> 00:12:00,270
observe que eu não estou colocando nenhuma autenticação no cabeçalho.

161
00:12:00,270 --> 00:12:02,500
A operação GET é permitida por qualquer pessoa.

162
00:12:02,500 --> 00:12:04,420
Então, quando eu executar a operação GET,

163
00:12:04,420 --> 00:12:13,985
eu posso ver que eu já tenho um prato com um comentário já no lugar nesse prato.

164
00:12:13,985 --> 00:12:18,900
Este comentário já foi postado por este usuário.

165
00:12:18,900 --> 00:12:23,895
Então, já temos um prato no sistema lá.

166
00:12:23,895 --> 00:12:26,520
Então, isso é perfeitamente bom,

167
00:12:26,520 --> 00:12:28,405
eu vou excluir o prato.

168
00:12:28,405 --> 00:12:29,875
Agora, para excluir o prato,

169
00:12:29,875 --> 00:12:33,855
obviamente essa operação não pode ser realizada por um usuário comum.

170
00:12:33,855 --> 00:12:36,500
Então, deixe-me fazer login como,

171
00:12:36,500 --> 00:12:40,310
para que você possa ver que eu estou fazendo login como um usuário regular.

172
00:12:40,310 --> 00:12:44,940
Então, deixe-me fazer login como um usuário regular.

173
00:12:44,940 --> 00:12:47,140
Então, quando eu entrar, eu vou obter o token.

174
00:12:47,140 --> 00:12:49,725
Então, eu vou copiar este token e salvá-lo.

175
00:12:49,725 --> 00:12:53,845
Agora, que eu tenho o meu token,

176
00:12:53,845 --> 00:12:58,770
deixe-me executar uma operação DELETE nos pratos.

177
00:12:58,770 --> 00:13:01,985
Então, quando eu vou para a operação DELETE.

178
00:13:01,985 --> 00:13:07,370
Então, deixe-me selecionar este GET e, em seguida, fazer uma operação DELETE com os pratos.

179
00:13:07,370 --> 00:13:13,440
No cabeçalho, deixe-me incluir a autorização aqui e você notaria

180
00:13:13,440 --> 00:13:22,144
que quando colamos na solicitação e, em seguida, enviamos a autorização DELETE,

181
00:13:22,144 --> 00:13:27,325
você notaria que ela volta imediatamente com esta mensagem aqui,

182
00:13:27,325 --> 00:13:28,990
como você pode ver na visualização,

183
00:13:28,990 --> 00:13:33,510
ele diz “Você não está autorizado a Realize esta operação! “

184
00:13:33,510 --> 00:13:37,410
Então o código de erro é 403 proibido.

185
00:13:37,410 --> 00:13:41,540
Então, esta é uma mensagem que foi gerada

186
00:13:41,540 --> 00:13:46,470
pela função VerifyAdmin que você vai implementar como parte deste exercício.

187
00:13:46,470 --> 00:13:49,720
Então, se o usuário não é um administrador,

188
00:13:49,720 --> 00:13:53,085
então esta é a mensagem que seu VerifyAdmin

189
00:13:53,085 --> 00:13:57,880
gerará e não permitirá que a solicitação vá além desse ponto.

190
00:13:57,880 --> 00:14:04,150
Então, você pode ver que eu fechei a operação DELETE.

191
00:14:04,150 --> 00:14:05,895
Agora, como você faz isso?

192
00:14:05,895 --> 00:14:11,925
Em seu código, você viu que, a fim de aplicar o VerifyUser,

193
00:14:11,925 --> 00:14:16,270
definimos Authenticate.VerifyUser nas

194
00:14:16,270 --> 00:14:18,270
operações POST, PUT e DELETE.

195
00:14:18,270 --> 00:14:22,105
Agora, você pode encadear o middleware um após o outro.

196
00:14:22,105 --> 00:14:25,200
Então, podemos dizer Authenticate.VerifyUser vírgula

197
00:14:25,200 --> 00:14:28,905
e, em seguida, você pode dizer Authenticate.VerifyAdmin,

198
00:14:28,905 --> 00:14:32,190
para aplicar o VerifyAdmin logo após o VerifyUser.

199
00:14:32,190 --> 00:14:35,840
Então, se você quiser que uma operação seja restrita apenas ao administrador,

200
00:14:35,840 --> 00:14:39,520
primeiro faça a parte VerifyUser e, em seguida, imediatamente após isso,

201
00:14:39,520 --> 00:14:42,085
aplique o middleware VerifyAdmin.

202
00:14:42,085 --> 00:14:45,274
Logo depois disso. Então, se essas duas verificações,

203
00:14:45,274 --> 00:14:49,615
passar com sucesso, então você vai para executar a operação.

204
00:14:49,615 --> 00:14:52,240
Se a verificação VerifyAdmin falhar,

205
00:14:52,240 --> 00:14:54,870
você retornará essa mensagem de erro como você vê

206
00:14:54,870 --> 00:14:57,995
aqui e, em seguida, abortará a operação que parte.

207
00:14:57,995 --> 00:15:01,300
Então, você retornará o próximo erro de seu VerifyAdmin,

208
00:15:01,300 --> 00:15:03,260
se o usuário não for um administrador.

209
00:15:03,260 --> 00:15:08,100
Então, eu demonstrei a você como você

210
00:15:08,100 --> 00:15:12,865
usará a conta de usuários de administrador para restringir operações para operações PUT

211
00:15:12,865 --> 00:15:15,285
, POST e DELETE.

212
00:15:15,285 --> 00:15:21,935
Mesma coisa, operações POST e PUT também não será permitido em qualquer uma dessas n partes.

213
00:15:21,935 --> 00:15:26,360
Agora, então deixe-me demonstrar o outro aspecto aqui.

214
00:15:26,360 --> 00:15:28,710
Então, você viu que lá dentro,

215
00:15:28,710 --> 00:15:30,450
quando realizamos a operação GET,

216
00:15:30,450 --> 00:15:37,570
você viu que já havia um comentário que foi postado pelo nome de usuário Jogesh,

217
00:15:37,570 --> 00:15:40,230
o primeiro usuário que está no meu sistema.

218
00:15:40,230 --> 00:15:43,385
Agora, vou fazer login como o outro usuário.

219
00:15:43,385 --> 00:15:53,080
Então, eu vou entrar como na minha segunda conta que é Muppala e, em seguida, quando eu entrar,

220
00:15:53,080 --> 00:15:54,175
eu novamente obter o token.

221
00:15:54,175 --> 00:15:56,585
Então, deixe-me pegar esta ficha aqui.

222
00:15:56,585 --> 00:15:58,645
Deixe-me copiar esta ficha.

223
00:15:58,645 --> 00:16:04,685
Agora, o que eu vou fazer é eu vou fazer um GET sobre os pratos localhost.

224
00:16:04,685 --> 00:16:12,520
Então, deixe-me fazer um GET sobre os pratos localhost para mostrar-lhe o comentário específico dentro aqui.

225
00:16:12,520 --> 00:16:16,030
Então, este comentário em particular com este ID.

226
00:16:16,030 --> 00:16:17,640
Então, o que eu vou fazer é,

227
00:16:17,640 --> 00:16:20,400
eu vou copiar essa identificação prato.

228
00:16:20,400 --> 00:16:26,810
Eu também vou copiar o ID comentário a partir daqui e eu vou executar

229
00:16:26,810 --> 00:16:38,700
uma operação DELETE neste prato específico

230
00:16:38,700 --> 00:16:42,615
e lembrar que temos

231
00:16:42,615 --> 00:16:50,980
a barra comentários barra e, em seguida, este ID comentário particular.

232
00:16:50,980 --> 00:16:55,350
Agora, lembre-se que este comentário foi postado por este nome de usuário,

233
00:16:55,350 --> 00:17:01,120
mas agora eu me conectei como o outro usuário com um nome de usuário diferente.

234
00:17:01,120 --> 00:17:07,075
Então, quando eu executar agora a operação DELETE usando a outra conta,

235
00:17:07,075 --> 00:17:11,950
você perceberia imediatamente que aqui diz:

236
00:17:11,950 --> 00:17:15,550
“Você não está autorizado a excluir este comentário! “

237
00:17:15,550 --> 00:17:18,970
Então diz 403, a mesma coisa.

238
00:17:18,970 --> 00:17:24,205
Se você tentar fazer uma operação PUT nesse comentário específico conectado como outro usuário,

239
00:17:24,205 --> 00:17:30,010
ele dirá: “Você não está autorizado a atualizar este comentário!”

240
00:17:30,010 --> 00:17:35,340
Assim, tanto PUT, DELETE e UPDATE do comentário de outra pessoa não é permitido.

241
00:17:35,340 --> 00:17:41,855
Então, agora, deixe-me fazer login como o administrador neste ponto e então deixe-me tentar excluir

242
00:17:41,855 --> 00:17:50,510
esse comentário em particular e você veria que a mesma mensagem será gerada.

243
00:17:50,510 --> 00:17:55,890
Assim, um administrador também não pode excluir ou atualizar os comentários de outra pessoa.

244
00:17:55,890 --> 00:17:57,600
Então, para fazer login como administrador,

245
00:17:57,600 --> 00:18:02,785
deixe-me entrar no POST aqui e então deixe-me fazer login como administrador.

246
00:18:02,785 --> 00:18:08,585
Agora, lembre-se que esses tokens serão válidos por 33.600 segundos.

247
00:18:08,585 --> 00:18:12,620
Então, você pode salvar esses três tokens que você gera para os três usuários.

248
00:18:12,620 --> 00:18:16,270
Então, você não precisa continuar fazendo login como esse usuário específico.

249
00:18:16,270 --> 00:18:20,180
Contanto que você use o token certo no cabeçalho,

250
00:18:20,180 --> 00:18:25,670
suas operações funcionarão perfeitamente identificando os três usuários diferentes.

251
00:18:25,670 --> 00:18:28,655
Então, deixe-me fazer login como administrador aqui.

252
00:18:28,655 --> 00:18:30,670
Então, quando eu entrar como administrador,

253
00:18:30,670 --> 00:18:31,680
eu recebo o token aqui.

254
00:18:31,680 --> 00:18:34,930
Então, eu vou copiar e salvar este token.

255
00:18:35,010 --> 00:18:40,800
Basta lembrar qual token pertence a quem quando você fizer uma cópia deste.

256
00:18:40,800 --> 00:18:45,430
Agora, voltando a isso, excluir operação de comentário.

257
00:18:45,430 --> 00:18:54,575
Eu vou para o cabeçalho e, em seguida, eu vou mudar isso para o token para

258
00:18:54,575 --> 00:19:00,980
o administrador e, em seguida, tentar executar a mesma operação DELETE e, em seguida, você vê

259
00:19:00,980 --> 00:19:08,420
que mesmo o administrador não está autorizado a excluir o comentário postado por outro usuário.

260
00:19:08,420 --> 00:19:10,480
Isto é perfeitamente aceitável.

261
00:19:10,480 --> 00:19:13,095
Mas vamos tentar excluir o mesmo comentário,

262
00:19:13,095 --> 00:19:15,255
por este usuário que criou

263
00:19:15,255 --> 00:19:18,425
esse comentário e você veria que isso pode ser feito com sucesso.

264
00:19:18,425 --> 00:19:20,715
Então, vamos executar essa operação.

265
00:19:20,715 --> 00:19:24,720
Então, para fazer isso, eu vou voltar e buscar o token que eu

266
00:19:24,720 --> 00:19:30,345
tenho para o primeiro usuário e, em seguida, alterar o campo Autorização.

267
00:19:30,345 --> 00:19:33,260
Agora, para esta operação DELETE,

268
00:19:33,260 --> 00:19:35,860
eu vou mudar isso para portador,

269
00:19:35,860 --> 00:19:42,400
e então este é o token para o primeiro usuário com o nome de usuário Jogesh.

270
00:19:42,400 --> 00:19:46,100
Então, quando eu tento excluir esse comentário,

271
00:19:46,100 --> 00:19:50,850
você notará que o comentário foi excluído com sucesso.

272
00:19:50,850 --> 00:19:53,710
Então, como você pode ver nas etapas,

273
00:19:53,710 --> 00:19:57,830
o comentário só pode ser excluído pelo usuário que criou esse comentário.

274
00:19:57,830 --> 00:19:59,120
Agora, o próximo passo,

275
00:19:59,120 --> 00:20:02,345
quando fazemos a operação DELETE nos pratos,

276
00:20:02,345 --> 00:20:07,120
vimos anteriormente que se fizéssemos a operação DELETE como um usuário comum,

277
00:20:07,120 --> 00:20:09,400
você recebe uma mensagem dizendo:

278
00:20:09,400 --> 00:20:12,010
“Você não está autorizado a executar esta operação!”

279
00:20:12,010 --> 00:20:16,670
Então, eu vou mudar este token para o token do administrador e, em seguida,

280
00:20:16,670 --> 00:20:21,425
mostrar-lhe que um administrador pode executar a operação DELETE nos pratos e pote.

281
00:20:21,425 --> 00:20:23,480
Então, indo para esta solicitação,

282
00:20:23,480 --> 00:20:30,550
deixe-me alterar o token para ser o token para o usuário admin.

283
00:20:30,550 --> 00:20:34,765
Então, quando eu executar a operação DELETE como o usuário administrador,

284
00:20:34,765 --> 00:20:37,375
você notará que a operação DELETE é

285
00:20:37,375 --> 00:20:41,905
bem-sucedida e, em seguida, responde de volta com a mensagem aqui.

286
00:20:41,905 --> 00:20:45,715
Agora, quando eu faço um GET no endpoint pratos,

287
00:20:45,715 --> 00:20:52,515
você vai notar que as operações GET mostra que meus pratos foram esvaziados.

288
00:20:52,515 --> 00:20:59,285
Agora, a outra operação que você também irá implementar nesta atribuição,

289
00:20:59,285 --> 00:21:05,670
é que podemos fazer uma operação GET no ponto final de usuários de barra.

290
00:21:05,670 --> 00:21:09,285
Então, quando você faz uma operação GET no ponto final de usuários de barra,

291
00:21:09,285 --> 00:21:12,690
você notará que se você não for um usuário autorizado,

292
00:21:12,690 --> 00:21:16,450
ele dirá que você não está autorizado a executar esta operação.

293
00:21:16,450 --> 00:21:20,850
Então, o localhost: 3000/users/endpoint,

294
00:21:20,850 --> 00:21:27,355
agora você estará permitindo que isso seja executado somente pelo administrador.

295
00:21:27,355 --> 00:21:29,265
Então, se um usuário comum,

296
00:21:29,265 --> 00:21:32,420
se você fizer login como um usuário comum com o cabeçalho,

297
00:21:32,420 --> 00:21:36,510
você não terá permissão para executar esta operação.

298
00:21:36,510 --> 00:21:42,390
Agora, deixe-me alterar este token para o token

299
00:21:42,390 --> 00:21:45,345
fora do admin e, em seguida, você verá que

300
00:21:45,345 --> 00:21:48,460
o administrador terá permissão para executar esta operação.

301
00:21:48,460 --> 00:21:50,135
Então, indo para o GET,

302
00:21:50,135 --> 00:21:55,600
deixe-me alterar este token para o token para

303
00:21:55,600 --> 00:22:02,980
o usuário admin e, em seguida, quando eu executar a operação GET sobre isso, ele retorna.

304
00:22:02,980 --> 00:22:07,945
Como você pode ver, os três usuários registrados no meu sistema,

305
00:22:07,945 --> 00:22:11,015
ele mostra o usuário número um,

306
00:22:11,015 --> 00:22:13,950
usuário número dois e usuário número três.

307
00:22:13,950 --> 00:22:17,530
Claro, observe que o hash e salt são removidos,

308
00:22:17,530 --> 00:22:21,965
quando a mensagem é retornada pelo lado do servidor para o lado do cliente.

309
00:22:21,965 --> 00:22:25,490
Então, as informações de hash e sal nunca serão reveladas lá fora.

310
00:22:25,490 --> 00:22:28,755
Então, Mongos irá automaticamente cuidar de

311
00:22:28,755 --> 00:22:32,580
filtrar essas informações antes de enviar de volta as informações do usuário.

312
00:22:32,580 --> 00:22:35,890
Então, porque você não deve estar revelando as

313
00:22:35,890 --> 00:22:39,160
informações de hash e sal para o mundo exterior.

314
00:22:39,160 --> 00:22:44,510
Então, esta é a três informações de contas de usuário que é retornada.

315
00:22:44,510 --> 00:22:47,835
Então, isso é retornado somente se você executar a operação GET

316
00:22:47,835 --> 00:22:51,900
no ponto de extremidade de usuários de barra como o usuário administrador.

317
00:22:51,900 --> 00:22:56,295
Se você executar a mesma solicitação que qualquer outro usuário,

318
00:22:56,295 --> 00:22:58,055
isso não será permitido.

319
00:22:58,055 --> 00:23:01,065
Então, novamente você vai verificar primeiro,

320
00:23:01,065 --> 00:23:05,040
VerifyUser e, em seguida, verificar o VerifyAdmin e somente se for um administrador,

321
00:23:05,040 --> 00:23:08,940
então esta operação pode ser realizada neste ponto final.

322
00:23:08,940 --> 00:23:15,535
Então, estas são todas as várias tarefas que você fará como parte desta tarefa.

323
00:23:15,535 --> 00:23:22,990
Os detalhes de como eles precisam ser feitos estão documentados nas instruções de atribuição.

324
00:23:22,990 --> 00:23:27,875
Então, leia as instruções antes de prosseguir para completar a terceira tarefa.

325
00:23:27,875 --> 00:23:32,380
Divirta-se completando a terceira tarefa.