Namų darbas — pasenink žetoną, pamatyk slog klaidą
Padaryk savą.
-
Pasenink žetoną ranka. Paprašyk atstatymo, bet prieš atidarydamas nuorodą paleisk
UPDATE password_reset_tokens SET expires_at = now() - interval '1 hour';. Atidaryk nuorodą → invalid puslapis.GetValidPasswordResetexpires_at > now()sąlyga atliko darbą. Atstatymo žetonai negyvena amžinai — pavogta nuoroda po valandos bevertė. -
Pamatyk slog klaidą pats.
ConsoleSender.Sendlaikinai pakeiskfmt.Fprintfciklą įs.log.Info("email", "body", msg.Text)(reikėtų paduoti registratorių). Sukelk atstatymą ir pažiūrėk į log'ą: visas laiškas — su nuoroda — viena eilutė su raidiniais\n, o URL nepaspaudžiamas ir sunkiai kopijuojamas. Štai kodėl konsolės siuntėjas rašo tiesiai į stdout. Grąžink. -
Prijunk tikrą el. paštą (nebūtina). Gauk nemokamą Resend API raktą, tada paleisk
EMAIL_SENDER=resend RESEND_API_KEY=... go run ./cmd/signflow. Paleidimo log'as persijungia į „using Resend sender", o atstatymas tikrai atsiunčia laišką. Ta patiSendersąsaja, kita realizacija — apdorotojo kodas visai nepasikeitė. Persijunk atgal į konsolę (pašalink kintamuosius), ir srautas vis tiek veikia, be rakto.
Kur einam toliau — dokumentų fazė. Autentifikacija baigta: registracija, prisijungimas, atsijungimas, slaptažodžio atstatymas, sesijos, CSRF — visa tikra, viskas išbandyta. SignFlow dabar žino, kas yra kiekviena užklausa. Kita fazė duoda tiems vartotojams ką veikti: įkelti dokumentą. Pastatysi storage.Store sąsają (ta pati dev-realizacijos/prod-realizacijos siūlė kaip el. paštas), srautu rašysi įkeltą failą į diską maišydamas jį SHA-256 tuo pačiu perėjimu, ir pastatysi savininko dokumentų skydelį, kur svetimo dokumento ID grąžina 404, ne 403. Maiša, kurią užfiksuoji įkeliant, yra tai, ką 11 pamokos parašai pririš — ir ką klastojimo aptikimo demonstracija atskleis.