﻿1
00:00:00,890 --> 00:00:04,850
‫-: Erlauben wir also nach dem Update auch dem aktuellen

2
00:00:04,850 --> 00:00:07,293
‫Benutzer, seinen Account grundsätzlich zu löschen.

3
00:00:09,070 --> 00:00:12,069
‫Wenn ein Benutzer nun beschließt, sein Konto

4
00:00:12,069 --> 00:00:16,390
‫zu löschen, löschen wir dieses Dokument tatsächlich nicht aus der Datenbank.

5
00:00:16,390 --> 00:00:20,580
‫Aber stattdessen haben wir das Konto eigentlich nur auf inaktiv gesetzt.

6
00:00:20,580 --> 00:00:23,170
‫Damit der Nutzer den Account

7
00:00:23,170 --> 00:00:26,910
‫irgendwann wieder aktivieren kann und wir auch in Zukunft

8
00:00:26,910 --> 00:00:29,820
‫grundsätzlich auf den Account zugreifen können,

9
00:00:29,820 --> 00:00:33,450
‫auch wenn offiziell, sagen wir mal, gelöscht wurde.

10
00:00:33,450 --> 00:00:34,440
‫Okay?

11
00:00:34,440 --> 00:00:36,380
‫Um dies zu implementieren, müssen

12
00:00:36,380 --> 00:00:39,430
‫wir zunächst eine neue Eigenschaft in unserem Schema erstellen.

13
00:00:39,430 --> 00:00:40,850
‫Also, lass uns

14
00:00:40,850 --> 00:00:42,090
‫dorthin gehen.

15
00:00:42,090 --> 00:00:43,740
‫Und jetzt wollen wir

16
00:00:45,440 --> 00:00:47,163
‫ein Feld namens active haben.

17
00:00:48,210 --> 00:00:49,043
‫Okay.

18
00:00:50,550 --> 00:00:52,150
‫Welches sollte vom Typ

19
00:00:54,370 --> 00:00:55,550
‫Boolean sein.

20
00:00:55,550 --> 00:00:57,430
‫Okay, und standardmäßig wird

21
00:00:57,430 --> 00:00:58,263
‫es

22
00:00:59,170 --> 00:01:00,040
‫wahr sein.

23
00:01:00,040 --> 00:01:02,180
‫Jeder neu erstellte Benutzer ist

24
00:01:02,180 --> 00:01:04,430
‫also natürlich ein aktiver Benutzer und

25
00:01:04,430 --> 00:01:07,300
‫daher wird der Boolesche Wert auf true gesetzt.

26
00:01:07,300 --> 00:01:11,360
‫Außerdem möchten wir dies nicht in der Ausgabe anzeigen, okay.

27
00:01:11,360 --> 00:01:13,350
‫Weil wir dieses Implementierungsdetail

28
00:01:13,350 --> 00:01:16,077
‫im Grunde vor dem Benutzer verbergen wollen.

29
00:01:16,077 --> 00:01:17,260
‫Okay?

30
00:01:17,260 --> 00:01:19,920
‫Und deshalb wollen wir nicht, dass

31
00:01:19,920 --> 00:01:24,390
‫irgendjemand erfährt, dass diese Flagge, also diese aktive Flagge, hier ist, okay.

32
00:01:24,390 --> 00:01:28,930
‫Also sagen wir select und setzen es auf false, in Ordnung.

33
00:01:28,930 --> 00:01:29,883
‫Um

34
00:01:30,830 --> 00:01:33,140
‫den Benutzer jetzt zu löschen,

35
00:01:33,140 --> 00:01:35,400
‫müssen wir im Grunde nur

36
00:01:35,400 --> 00:01:38,210
‫das aktive Flag auf false setzen.

37
00:01:38,210 --> 00:01:39,043
‫Okay.

38
00:01:40,130 --> 00:01:42,390
‫Lassen Sie uns diese Funktion hier

39
00:01:42,390 --> 00:01:43,223
‫erstellen, Exporte. deleteMe, also

40
00:01:44,170 --> 00:01:45,529
‫war es updateMe und

41
00:01:45,529 --> 00:01:46,930
‫jetzt ist es deleteMe

42
00:01:46,930 --> 00:01:47,763
‫und

43
00:01:47,763 --> 00:01:51,614
‫wir wissen also bereits, dass wir hier ein catchAsync verwenden, oder?

44
00:01:51,614 --> 00:01:54,410
‫Und dann Async, weil wir im

45
00:01:54,410 --> 00:01:58,570
‫Grunde schon wissen, dass wir den Benutzer aktualisieren werden.

46
00:01:58,570 --> 00:02:01,150
‫Also antwortet die Anfrage

47
00:02:01,150 --> 00:02:02,960
‫als nächstes.

48
00:02:02,960 --> 00:02:03,913
‫Warten Sie

49
00:02:06,470 --> 00:02:08,300
‫also auf den Benutzer. nach ID suchen und

50
00:02:08,300 --> 00:02:10,700
‫aktualisieren.

51
00:02:10,700 --> 00:02:12,573
‫Okay, auch hier funktioniert's

52
00:02:13,800 --> 00:02:15,960
‫natürlich nur für eingeloggte Benutzer und

53
00:02:15,960 --> 00:02:18,830
‫so wird die Benutzer-ID auf Wunsch bequem gespeichert. Benutzer. Ich würde.

54
00:02:18,830 --> 00:02:21,617
‫und die Daten, die wir aktualisieren möchten, sind

55
00:02:21,617 --> 00:02:23,800
‫einfach aktiv

56
00:02:23,800 --> 00:02:25,630
‫und setzen sie auf false.

57
00:02:26,680 --> 00:02:28,010
‫Gut.

58
00:02:28,900 --> 00:02:30,893
‫Das Zurücksenden der Antwort ist jetzt auch ziemlich einfach.

59
00:02:31,870 --> 00:02:33,280
‫Wir verwenden den

60
00:02:33,280 --> 00:02:37,560
‫204-Code für gelöscht, was es dann so macht, dass wir diese Antwort

61
00:02:37,560 --> 00:02:40,100
‫in Postman tatsächlich nicht einmal sehen, okay.

62
00:02:40,100 --> 00:02:43,280
‫Aber wir senden es trotzdem zusammen mit

63
00:02:43,280 --> 00:02:47,230
‫der Anfrage, weil dies immer die beste Vorgehensweise ist.

64
00:02:47,230 --> 00:02:49,830
‫Also, es ist immer noch ein Erfolg und dann denken

65
00:02:50,770 --> 00:02:52,720
‫Sie daran, dass wir keine Daten senden.

66
00:02:54,090 --> 00:02:56,610
‫Also einfach auf nein setzen.

67
00:02:56,610 --> 00:02:59,470
‫Alles klar, und jetzt natürlich auch zu

68
00:02:59,470 --> 00:03:01,343
‫allen Routen hier hinzufügen.

69
00:03:02,890 --> 00:03:05,080
‫Das ist also ziemlich ähnlich.

70
00:03:05,080 --> 00:03:07,193
‫Also deleteMe dann auch hier deleteMe und

71
00:03:08,850 --> 00:03:10,223
‫jetzt verwenden wir tatsächlich

72
00:03:11,840 --> 00:03:12,880
‫die delete http-Methode.

73
00:03:14,620 --> 00:03:16,420
‫Okay, und noch einmal,

74
00:03:16,420 --> 00:03:20,373
‫wir werden einen Benutzer nicht wirklich aus der Datenbank löschen.

75
00:03:21,480 --> 00:03:24,670
‫Aber solange der Benutzer nirgendwo mehr erreichbar ist, ist es immer noch

76
00:03:24,670 --> 00:03:26,570
‫in Ordnung, diese http-Methode hier zu verwenden.

77
00:03:26,570 --> 00:03:30,550
‫In Ordnung, also probieren wir es jetzt aus.

78
00:03:30,550 --> 00:03:34,277
‫Okay, auch wenn wir noch nicht 100% fertig

79
00:03:34,277 --> 00:03:37,663
‫sind, aber versuchen wir es jetzt noch.

80
00:03:38,900 --> 00:03:42,010
‫In Ordnung, also deleteMe und

81
00:03:43,080 --> 00:03:46,193
‫es ist eine geschützte Route

82
00:03:47,200 --> 00:03:50,629
‫und wir müssen uns anmelden und

83
00:03:50,629 --> 00:03:51,720
‫so

84
00:03:51,720 --> 00:03:53,530
‫erstellen wir unseren

85
00:03:53,530 --> 00:03:55,290
‫Autorisierungs-Header, Bearer Token

86
00:03:56,150 --> 00:03:59,923
‫und natürlich diesen und das war's eigentlich.

87
00:04:00,910 --> 00:04:03,350
‫Wir müssen keine Daten im Körper weitergeben.

88
00:04:04,640 --> 00:04:06,040
‫Wir müssen keine Daten in der URL übergeben.

89
00:04:06,040 --> 00:04:08,730
‫Alles klar, denn die einzigen Daten, die

90
00:04:08,730 --> 00:04:11,173
‫benötigt werden, sind die aktuelle Benutzer-ID

91
00:04:12,010 --> 00:04:15,210
‫und diese ist nicht in unserem benachbarten Web-Token codiert.

92
00:04:15,210 --> 00:04:18,560
‫Okay?

93
00:04:18,560 --> 00:04:21,150
‫Was wir also auch tun müssen, ist löschen und ja, das

94
00:04:21,150 --> 00:04:21,983
‫sollte jetzt funktionieren.

95
00:04:23,510 --> 00:04:25,720
‫Bevor wir das tun, holen

96
00:04:26,660 --> 00:04:29,240
‫wir uns die Liste aller Benutzer.

97
00:04:29,240 --> 00:04:31,830
‫In Ordnung, und das, was wir jetzt löschen,

98
00:04:31,830 --> 00:04:33,113
‫ist das letzte.

99
00:04:34,870 --> 00:04:38,110
‫Also diese, die wir gerade in der letzten Vorlesung erstellt haben.

100
00:04:38,110 --> 00:04:39,533
‫Okay, und wir

101
00:04:41,060 --> 00:04:44,300
‫arbeiten mit diesem, weil es der letzte ist, der sich

102
00:04:44,300 --> 00:04:47,270
‫eingeloggt hat, und daher ist dieser Token hier,

103
00:04:47,270 --> 00:04:49,710
‫der gerade in unserer Token-Variablen gespeichert ist.

104
00:04:49,710 --> 00:04:51,370
‫Okay, und wenn wir den Benutzer

105
00:04:51,370 --> 00:04:54,460
‫jetzt löschen, basiert es auf der ID, die von diesem Token stammt.

106
00:04:54,460 --> 00:04:57,020
‫Also versuchen wir es jetzt.

107
00:04:57,020 --> 00:05:00,163
‫Und tatsächlich bekommen wir unsere 204.

108
00:05:01,700 --> 00:05:03,093
‫Und jetzt interessiert

109
00:05:06,080 --> 00:05:08,690
‫mich, ob sich die Select-Eigenschaft hier geändert hat.

110
00:05:08,690 --> 00:05:11,600
‫Und hier sieht es tatsächlich genauso aus.

111
00:05:11,600 --> 00:05:13,763
‫Und das liegt daran, dass

112
00:05:15,290 --> 00:05:17,820
‫wir das Auswahlfeld nicht an den Benutzer weitergeben.

113
00:05:17,820 --> 00:05:19,760
‫Und deshalb müssen wir es hier wirklich sehen.

114
00:05:19,760 --> 00:05:22,460
‫Okay und tatsächlich haben wir hier aktiv auf false gesetzt.

115
00:05:22,460 --> 00:05:25,053
‫Okay, das wollte ich schon mal sagen.

116
00:05:26,180 --> 00:05:31,110
‫Wir geben also nicht die aktiven Felder an den

117
00:05:31,110 --> 00:05:34,560
‫Benutzer weiter, nicht das Auswahlfeld.

118
00:05:34,560 --> 00:05:37,640
‫Aktiv ist also nur für uns hier im Kompass

119
00:05:37,640 --> 00:05:40,020
‫sichtbar, nicht aber für den Benutzer.

120
00:05:40,020 --> 00:05:42,230
‫Als letzten Schritt wollen wir

121
00:05:42,230 --> 00:05:45,280
‫dann natürlich nicht die inaktiven Benutzer in dieser

122
00:05:45,280 --> 00:05:46,920
‫Ausgabe anzeigen, richtig.

123
00:05:46,920 --> 00:05:50,080
‫Und wie könnten wir das Ihrer Meinung nach umsetzen?

124
00:05:50,080 --> 00:05:53,960
‫Nun, wir werden etwas verwenden, das weit zurück liegt,

125
00:05:53,960 --> 00:05:57,400
‫über das wir vor zwei oder drei

126
00:05:57,400 --> 00:06:00,500
‫Abschnitten gesprochen haben, nämlich Abfrage-Middleware, okay.

127
00:06:00,500 --> 00:06:03,400
‫Die Abfrage-Middleware ist also perfekt dafür, weil wir

128
00:06:03,400 --> 00:06:06,140
‫jetzt im Grunde genommen einen Schritt vor

129
00:06:06,140 --> 00:06:08,940
‫jeder anderen Abfrage hinzufügen können, die wir dann

130
00:06:08,940 --> 00:06:11,380
‫irgendwo in unserer Anwendung durchführen.

131
00:06:11,380 --> 00:06:14,160
‫Gehen wir also zu unserem Benutzermodell hier und

132
00:06:14,160 --> 00:06:16,500
‫fügen wir diese Middleware hier hinzu.

133
00:06:16,500 --> 00:06:19,810
‫Also userSchema. pre, also etwas, das vor einer Abfrage passiert und

134
00:06:19,810 --> 00:06:21,763
‫diese Abfrage ein Find ist.

135
00:06:25,310 --> 00:06:26,657
‫Okay, das macht diese Abfrage-Middleware aus.

136
00:06:29,339 --> 00:06:32,850
‫Dann eine normale Funktion, denn denken

137
00:06:32,850 --> 00:06:37,760
‫Sie daran, dass wir sonst keinen Zugriff auf den

138
00:06:37,760 --> 00:06:40,583
‫Discord haben oder zumindest nicht

139
00:06:42,330 --> 00:06:44,670
‫den Wert haben, den

140
00:06:44,670 --> 00:06:46,390
‫wir erwarten.

141
00:06:46,390 --> 00:06:49,600
‫Und denken Sie daran, dass wir hier zuvor tatsächlich einen regulären

142
00:06:49,600 --> 00:06:51,460
‫Ausdruck verwendet haben, um zu

143
00:06:51,460 --> 00:06:53,560
‫sagen, dass diese Middleware-Funktion auf jede Abfrage

144
00:06:53,560 --> 00:06:55,440
‫angewendet werden soll, die mit find beginnt.

145
00:06:55,440 --> 00:06:57,820
‫Also nicht nur suchen, sondern auch Sachen wie

146
00:06:57,820 --> 00:07:00,520
‫Suchen und Aktualisieren, Suchen und Löschen und alle Abfragen wie diese.

147
00:07:00,520 --> 00:07:03,850
‫Okay, und deshalb verwenden wir einen regulären Ausdruck, um

148
00:07:03,850 --> 00:07:07,290
‫nach Wörtern oder Zeichenfolgen zu suchen, die mit find beginnen.

149
00:07:07,290 --> 00:07:10,290
‫Das ist es, was dieses Symbol hier tut.

150
00:07:10,290 --> 00:07:14,670
‫Und dann beenden Sie den regulären Ausdruck.

151
00:07:14,670 --> 00:07:18,600
‫Also ein ganz einfaches.

152
00:07:18,600 --> 00:07:20,883
‫Dies ist diejenige, die sogar ich schreiben kann, ohne

153
00:07:22,080 --> 00:07:24,250
‫zuerst zu Google zu gehen und zu versuchen,

154
00:07:24,250 --> 00:07:25,720
‫sie dort zu finden.

155
00:07:25,720 --> 00:07:27,650
‫Okay, denken Sie also daran,

156
00:07:27,650 --> 00:07:30,600
‫dass dies eine Abfrage-Middleware ist und daher auf

157
00:07:30,600 --> 00:07:32,480
‫die aktuelle Abfrage verweist.

158
00:07:32,480 --> 00:07:36,760
‫Okay, also lass uns schnell hierher zurückkehren,

159
00:07:36,760 --> 00:07:40,840
‫um zu sehen, wie es funktioniert.

160
00:07:42,350 --> 00:07:43,183
‫Also haben

161
00:07:43,183 --> 00:07:47,070
‫wir hier alle User hier und hier haben wir natürlich eine Suchabfrage.

162
00:07:47,070 --> 00:07:48,970
‫Und jetzt, bevor diese

163
00:07:48,970 --> 00:07:52,900
‫Abfrage tatsächlich ausgeführt wird, möchten wir ihr etwas hinzufügen.

164
00:07:52,900 --> 00:07:55,880
‫Das heißt, wir wollen nur Dokumente finden, bei

165
00:07:55,880 --> 00:07:58,840
‫denen die active-Eigenschaft auf true gesetzt ist.

166
00:07:58,840 --> 00:08:00,540
‫Alles klar, das ist einfach.

167
00:08:00,540 --> 00:08:03,260
‫Hier ist es.

168
00:08:03,260 --> 00:08:05,823
‫Und

169
00:08:07,100 --> 00:08:09,840
‫das also. find und dann natürlich unser Filterobjekt nur Dokumente, bei denen

170
00:08:09,840 --> 00:08:10,673
‫active auf true

171
00:08:11,610 --> 00:08:12,443
‫gesetzt ist.

172
00:08:13,610 --> 00:08:15,037
‫Und das ist es.

173
00:08:15,037 --> 00:08:15,980
‫Aufruf der nächsten Middleware und fertig.

174
00:08:15,980 --> 00:08:17,910
‫Okay, und wenn wir jetzt dieselbe

175
00:08:19,930 --> 00:08:24,180
‫Abfrage durchführen, sollte diese letzte nicht mehr auftauchen, da sie wieder aktiv auf false

176
00:08:24,180 --> 00:08:25,013
‫gesetzt ist.

177
00:08:27,610 --> 00:08:31,410
‫Es wird also nicht mit der Abfrage übereinstimmen,

178
00:08:31,410 --> 00:08:34,350
‫die wir gerade geschrieben haben.

179
00:08:34,350 --> 00:08:36,840
‫Okay, jetzt bekommen wir hier keine Benutzer

180
00:08:36,840 --> 00:08:40,240
‫und ich denke, das liegt daran, dass die anderen nicht

181
00:08:40,240 --> 00:08:42,180
‫explizit die aktive Eigenschaft auf true

182
00:08:42,180 --> 00:08:43,223
‫gesetzt haben.

183
00:08:45,400 --> 00:08:48,530
‫Machen wir also das, was wir in dem anderen Abschnitt taten, in

184
00:08:48,530 --> 00:08:51,230
‫dem wir sagen, dass aktiv nicht falsch sein sollte.

185
00:08:51,230 --> 00:08:53,360
‫Okay, wir verwenden

186
00:08:53,360 --> 00:08:55,810
‫also den ungleich-Operator und der

187
00:08:55,810 --> 00:08:58,950
‫sollte natürlich in einem eigenen Objekt sein.

188
00:08:58,950 --> 00:09:02,230
‫Also nicht gleich false.

189
00:09:02,230 --> 00:09:03,690
‫Okay, das ist hier in diesem Fall also ganz anders.

190
00:09:03,690 --> 00:09:05,900
‫In Ordnung, also sollten jetzt alle

191
00:09:05,900 --> 00:09:09,343
‫Dokumente angezeigt werden, bei denen aktiv nicht gleich false ist, und

192
00:09:10,290 --> 00:09:12,690
‫die anderen beiden sollten jetzt zurück sein.

193
00:09:12,690 --> 00:09:16,540
‫Und tatsächlich sind sie hier.

194
00:09:16,540 --> 00:09:18,790
‫Okay, und so löschen wir grundsätzlich unsere

195
00:09:18,790 --> 00:09:21,642
‫Benutzer, während wir sie effektiv nicht aus der Datenbank löschen.

196
00:09:21,642 --> 00:09:24,883
‫Okay, wir löschen keine Dokumente, sondern markieren

197
00:09:24,883 --> 00:09:27,390
‫sie nur als inaktiv.

198
00:09:27,390 --> 00:09:31,190
‫Okay, lass uns das hier schnell speichern.

199
00:09:31,190 --> 00:09:34,760
‫Aktuellen Benutzer

200
00:09:34,760 --> 00:09:37,210
‫löschen.

201
00:09:37,210 --> 00:09:39,883
‫Großartig und damit haben wir den

202
00:09:41,100 --> 00:09:43,963
‫Authentifizierungs- und Autorisierungsteil dieses Abschnitts tatsächlich

203
00:09:46,180 --> 00:09:47,013
‫abgeschlossen.

204
00:09:48,680 --> 00:09:50,930
‫Also alles was mit diesen Themen zu tun hatte

205
00:09:50,930 --> 00:09:53,470
‫und auch mit Benutzern wie das Aktualisieren und Löschen von Benutzern.

206
00:09:53,470 --> 00:09:55,970
‫Das ist auch ein Teil der

207
00:09:55,970 --> 00:09:57,460
‫Authentifizierung und Autorisierung.

208
00:09:57,460 --> 00:10:00,440
‫Im Rest dieses Abschnitts werden wir

209
00:10:00,440 --> 00:10:04,410
‫nun über Sicherheit sprechen, da dies natürlich auch

210
00:10:04,410 --> 00:10:07,000
‫etwas mit der Authentifizierung zu

211
00:10:07,000 --> 00:10:08,410
‫tun hat.

212
00:10:08,410 --> 00:10:10,020
‫Okay, wir werden über

213
00:10:10,020 --> 00:10:12,210
‫ein paar Best Practices sprechen und

214
00:10:12,210 --> 00:10:14,740
‫einige davon dann auch in unser Projekt implementieren.

