28 рджрд┐рд╕ре░ 2024┬╖8 рдорд┐рдирдЯ рдкрдврд╝рдиреЗ рдореЗрдВ

рдЯреНрд░рд╛рдВрдЬрд╝реИрдХреНрд╢рдирд▓ рдИрдореЗрд▓ рдлрд╝реНрд▓реЛ рдЬреЛ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ: рдЯреЛрдХрди, рд╕реАрдорд╛рдПрдБ, рдбрд┐рд▓рд┐рд╡рд░реА

рд╡реЗрд░рд┐рдлрд┐рдХреЗрд╢рди, рдирд┐рдордВрддреНрд░рдг рдФрд░ рдореИрдЬрд┐рдХ рд▓рд┐рдВрдХ рдИрдореЗрд▓реНрд╕ рдХреЛ рд╕реБрд░рдХреНрд╖рд┐рдд рдЯреЛрдХрди, рд╕реНрдкрд╖реНрдЯ рд╕рдорд╛рдкреНрддрд┐, рд░реА-рд╕реЗрдиреНрдб рд╕реАрдорд╛рдПрдБ рдФрд░ рддреНрд╡рд░рд┐рдд рдбрд┐рд▓рд┐рд╡рд░реЗрдмрд┐рд▓рд┐рдЯреА рдЪреЗрдХреНрд╕ рдХреЗ рд╕рд╛рде рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд░реЗрдВ рддрд╛рдХрд┐ рдЯреНрд░рд╛рдВрдЬрд╝реИрдХреНрд╢рдирд▓ рдИрдореЗрд▓ рдлрд╝реНрд▓реЛ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд╣реЛрдВред

рдЯреНрд░рд╛рдВрдЬрд╝реИрдХреНрд╢рдирд▓ рдИрдореЗрд▓ рдлрд╝реНрд▓реЛ рдЬреЛ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ: рдЯреЛрдХрди, рд╕реАрдорд╛рдПрдБ, рдбрд┐рд▓рд┐рд╡рд░реА

рд╕рддреНрдпрд╛рдкрди рдФрд░ рдореИрдЬрд┐рдХ рд▓рд┐рдВрдХ рдЕрд╕рд▓ рдЬрд╝рд┐рдиреНрджрдЧреА рдореЗрдВ рдХреНрдпреЛрдВ рдлреЗрд▓ рд╣реЛрддреЗ рд╣реИрдВ

рдЬрд╝реНрдпрд╛рджрд╛рддрд░ рдЯреВрдЯреЗ рд╣реБрдП рд╕рд╛рдЗрди-рдЕрдк рдФрд░ рд╕рд╛рдЗрди-рдЗрди рдЕрдиреБрднрд╡ рдХрд╛ рдХрд╛рд░рдг "рдЦрд░рд╛рдм рдИрдореЗрд▓" рдирд╣реАрдВ рд╣реЛрддрд╛ред рд╡реЗ рдЗрд╕рд▓рд┐рдП рдлреЗрд▓ рд╣реЛрддреЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рд╕рд┐рд╕реНрдЯрдо рд╕рд╛рдорд╛рдиреНрдп рдорд╛рдирд╡реАрдп рд╡реНрдпрд╡рд╣рд╛рд░ рд╕рдВрднрд╛рд▓ рдирд╣реАрдВ рдкрд╛рддрд╛: рд▓реЛрдЧ рджреЛ рдмрд╛рд░ рдХреНрд▓рд┐рдХ рдХрд░ рджреЗрддреЗ рд╣реИрдВ, рд▓рд┐рдВрдХ рдХрд┐рд╕реА рджреВрд╕рд░реА рдбрд┐рд╡рд╛рдЗрд╕ рдкрд░ рдЦреЛрд▓рддреЗ рд╣реИрдВ, рдмрд╣реБрдд рджреЗрд░ рдХрд░ рджреЗрддреЗ рд╣реИрдВ, рдпрд╛ рдмрд╛рдж рдореЗрдВ рдЗрдирдмреЙрдХреНрд╕ рдореЗрдВ рдЦреЛрдЬрдХрд░ рдХреЛрдИ рдкреБрд░рд╛рдирд╛ рд╕рдВрджреЗрд╢ рдЙрдкрдпреЛрдЧ рдХрд░ рд▓реЗрддреЗ рд╣реИрдВред

рдпреЗ рд╡рд┐рдлрд▓рддрд╛рдПрдБ рдЫреЛрдЯреА рджрд┐рдЦрддреА рд╣реИрдВ, рдкрд░ рдЬреЛрдбрд╝рдХрд░ рдмрдбрд╝рд╛ рдЕрд╕рд░ рдкрдбрд╝рддрд╛ рд╣реИ:

  • рд▓рд┐рдВрдХ рдмрд╣реБрдд рдЬрд▓реНрджреА рдПрдХреНрд╕рдкрд╛рдпрд░ рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ (рдпрд╛ рдХрднреА рдПрдХреНрд╕рдкрд╛рдпрд░ рд╣реА рдирд╣реАрдВ рд╣реЛрддреЗ)ред
  • рдЯреЛрдХрди рдЧрд▓рддреА рд╕реЗ рджреЛрдмрд╛рд░рд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ (рдХрдИ рдХреНрд▓рд┐рдХ, рдХрдИ рдЯреИрдм, рдлреЙрд░рд╡рд░реНрдб рдХрд┐рдпреЗ рдЧрдП рдИрдореЗрд▓)ред
  • рдИрдореЗрд▓ рджреЗрд░ рд╕реЗ рдкрд╣реБрдБрдЪрддреЗ рд╣реИрдВ, рд╕реНрдкреИрдо рдореЗрдВ рдЬрд╛рддреЗ рд╣реИрдВ, рдпрд╛ рдХрднреА рджрд┐рдЦрд╛рдИ рд╣реА рдирд╣реАрдВ рджреЗрддреЗред
  • рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдиреЗ рдЧрд▓рдд рдкрддрд╛ рдЯрд╛рдЗрдк рдХрд┐рдпрд╛ рдФрд░ рдРрдк рд╕реНрдкрд╖реНрдЯ рдЕрдЧрд▓рд╛ рдХрджрдо рдирд╣реАрдВ рдмрддрд╛рддрд╛ред
  • рдПрдХ рд░реА-рд╕реЗрдиреНрдб рдмрдЯрди рдЖрдкрдХреЗ рд╕рд┐рд╕реНрдЯрдо (рдФрд░ рдИрдореЗрд▓ рдкреНрд░реЛрд╡рд╛рдЗрдбрд░) рдкрд░ рд╕реНрдкреИрдо рдЬреИрд╕рд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рдкреИрджрд╛ рдХрд░ рджреЗрддрд╛ рд╣реИред

рдпреЗ рдлрд╝реНрд▓реЛ рдиреНрдпреВрдЬрд╝рд▓реЗрдЯрд░реНрд╕ рд╕реЗ рдЕрдзрд┐рдХ рдЬреЛрдЦрд┐рдо рд░рдЦрддреЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдПрдХ рд╣реА рдХреНрд▓рд┐рдХ рд╕реЗ рдЕрдХрд╛рдЙрдВрдЯ рдПрдХреНрд╕реЗрд╕ рдорд┐рд▓ рд╕рдХрддрд╛ рд╣реИ рдпрд╛ рдкрд╣рдЪрд╛рди рдкрдХреНрдХреА рд╣реЛ рд╕рдХрддреА рд╣реИред рдЕрдЧрд░ рдорд╛рд░реНрдХреЗрдЯрд┐рдВрдЧ рдИрдореЗрд▓ рджреЗрд░ рд╕реЗ рдкрд╣реБрдВрдЪреЗ рддреЛ рдпрд╣ рдХрд╖реНрдЯрдкреНрд░рдж рд╣реИред рдЕрдЧрд░ рдореИрдЬрд┐рдХ рд▓рд┐рдВрдХ рджреЗрд░ рд╕реЗ рдЖрдпреЗ рддреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕рд╛рдЗрди рдЗрди рдирд╣реАрдВ рдХрд░ рдкрд╛рдПрдЧрд╛ред

рдЬрдм рдЯреАрдореЗрдВ рднрд░реЛрд╕реЗрдордВрдж рдЯреНрд░рд╛рдВрдЬрд╝реИрдХреНрд╢рдирд▓ рдИрдореЗрд▓ рдлрд╝реНрд▓реЛ рдмреЛрд▓рддреА рд╣реИрдВ, рддреЛ рдЖрдорддреМрд░ рдкрд░ рд╡реЗ рддреАрди рдЪреАрдЬреЗрдВ рдЪрд╛рд╣рддреА рд╣реИрдВ:

  1. рд╕реБрд░рдХреНрд╖рд┐рдд: рд▓рд┐рдВрдХ рдЕрдиреБрдорд╛рдирд┐рдд, рдЪреБрд░рд╛рдП рдпрд╛ рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рддрд░реАрдХреЛрдВ рд╕реЗ рдкреБрди: рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗред

  2. рдкреВрд░реНрд╡рд╛рдиреБрдореЗрдп: рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╣рдореЗрд╢рд╛ рдЬрд╛рдиреЗрдВ рдХрд┐ рдХреНрдпрд╛ рд╣реБрдЖ (рднреЗрдЬрд╛ рдЧрдпрд╛, рд╕рдорд╛рдкреНрдд, рдкрд╣рд▓реЗ рд╕реЗ рдЗрд╕реНрддреЗрдорд╛рд▓ рд╣реБрдЖ, рдЧрд▓рдд рдИрдореЗрд▓) рдФрд░ рдЕрдЧрд▓рд╛ рдХрджрдо рдХреНрдпрд╛ рд╣реИред

  3. рдЯреНрд░реЗрд╕реЗрдмрд▓: рдЖрдк рд▓реЙрдЧ рдФрд░ рд╕реНрдкрд╖реНрдЯ рд╕реНрдЯреЗрдЯрд╕ рдЪреЗрдХреНрд╕ рд╕реЗ рдЬрд╡рд╛рдм рджреЗ рд╕рдХреЗрдВтАФтАЬрдЗрд╕ рдИрдореЗрд▓ рдХреЗ рд╕рд╛рде рдХреНрдпрд╛ рд╣реБрдЖ?тАЭ

рдЬреНрдпрд╛рджрд╛рддрд░ рдкреНрд░реЛрдбрдХреНрдЯ рдЕрдВрддрддрдГ рд╡рд╣реА рдореВрд▓ рдлрд╝реНрд▓реЛ рдмрдирд╛рддреЗ рд╣реИрдВ: рдИрдореЗрд▓ рд╕рддреНрдпрд╛рдкрди (рдорд╛рд▓рд┐рдХрд╛рдирд╛ рд╕рд╛рдмрд┐рдд рдХрд░рдирд╛), рдирд┐рдордВрддреНрд░рдг (рд╡рд░реНрдХрд╕реНрдкреЗрд╕ рдпрд╛ рдкреЛрд░реНрдЯрд▓ рдореЗрдВ рдЬреБрдбрд╝рдирд╛), рдФрд░ рдореИрдЬрд┐рдХ рд▓рд┐рдВрдХ (рдкрд╛рд╕рд╡рд░реНрдбрд▓реЗрд╕ рд╕рд╛рдЗрди-рдЗрди)ред рдмреНрд▓реВрдкреНрд░рд┐рдВрдЯ рд╕рдорд╛рди рд╣реИ: рд╕реНрдкрд╖реНрдЯ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реНрдЯреЗрдЯреНрд╕, рдареЛрд╕ рдЯреЛрдХрди рдбрд┐рдЬрд╝рд╛рдЗрди, рд╕рдордЭрджрд╛рд░реА рд╡рд╛рд▓реА рдПрдХреНрд╕рдкрд╛рдпрд░реА рдирд┐рдпрдо, рд░реА-рд╕реЗрдиреНрдб рд▓рд┐рдорд┐рдЯреНрд╕, рдФрд░ рдмреБрдирд┐рдпрд╛рджреА рдбрд┐рд▓рд┐рд╡рд░реЗрдмрд┐рд▓рд┐рдЯреА рд╡рд┐рдЬрд┐рдмрд┐рд▓рд┐рдЯреАред

рдПрдХ рд╕рд░рд▓ рдлреНрд▓реЛ рдореИрдк рдФрд░ рд╕реНрдкрд╖реНрдЯ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реНрдЯреЗрдЯреНрд╕ рд╕реЗ рд╢реБрд░реВ рдХрд░реЗрдВ

рднрд░реЛрд╕реЗрдордВрдж рдЯреНрд░рд╛рдВрдЬрд╝реИрдХреНрд╢рдирд▓ рдИрдореЗрд▓ рдлрд╝реНрд▓реЛ рдХрд╛рдЧрдЬрд╝ рдкрд░ рд╢реБрд░реВ рд╣реЛрддреЗ рд╣реИрдВред рдЕрдЧрд░ рдЖрдк рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдпрд╣ рдирд╣реАрдВ рдмрддрд╛ рд╕рдХрддреЗ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреНрдпрд╛ рдкреНрд░рдорд╛рдгрд┐рдд рдХрд░ рд░рд╣рд╛ рд╣реИ рдФрд░ рдХреНрд▓рд┐рдХ рдХреЗ рдмрд╛рдж рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдХреНрдпрд╛ рдмрджрд▓рддрд╛ рд╣реИ, рддреЛ рдХрд┐рдирд╛рд░реЗ рдХреА рд╕реНрдерд┐рддрд┐рдпрд╛рдБ рдлрд╝реНрд▓реЛ рддреЛрдбрд╝ рджреЗрдВрдЧреАред

рдПрдХ рдЫреЛрдЯрд╛ рд╕реЗрдЯ рд╕реНрдЯреЗрдЯреНрд╕ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВ, рдФрд░ рдЙрдиреНрд╣реЗрдВ рдирд╛рдо рджреЗрдВ рддрд╛рдХрд┐ рд╕рдкреЛрд░реНрдЯ рдЬрд▓реНрджреА рд╕рдордЭ рд╕рдХреЗ:

  • New (рдЦрд╛рддрд╛ рдмрдирд╛рдпрд╛ рдЧрдпрд╛, рд╕рддреНрдпрд╛рдкрд┐рдд рдирд╣реАрдВ)
  • Invited (рдирд┐рдордВрддреНрд░рдг рднреЗрдЬрд╛ рдЧрдпрд╛, рд╕реНрд╡реАрдХрд╛рд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛)
  • Verified (рдИрдореЗрд▓ рд╕реНрд╡рд╛рдорд┐рддреНрд╡ рдХреА рдкреБрд╖реНрдЯрд┐)
  • Locked (рдЬреЛрдЦрд┐рдо рдпрд╛ рдЬрд╝реНрдпрд╛рджрд╛ рдкреНрд░рдпрд╛рд╕реЛрдВ рдХреЗ рдХрд╛рд░рдг рдЕрд╕реНрдерд╛рдпреА рд░реВрдк рд╕реЗ рдмреНрд▓реЙрдХ)

рдлрд┐рд░ рддрдп рдХрд░реЗрдВ рдХрд┐ рд╣рд░ рдИрдореЗрд▓ рдХреНрдпрд╛ рд╕рд╛рдмрд┐рдд рдХрд░рддрд╛ рд╣реИ:

  • Verification рдИрдореЗрд▓ рдИрдореЗрд▓ рдХреЗ рд╕реНрд╡рд╛рдорд┐рддреНрд╡ рдХреЛ рд╕рд╛рдмрд┐рдд рдХрд░рддрд╛ рд╣реИред
  • Invite рдпрд╣ рд╕рд╛рдмрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рднреЗрдЬрдиреЗ рд╡рд╛рд▓реЗ рдиреЗ рдХрд┐рд╕реА рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЪреАрдЬрд╝ рдХреЗ рд▓рд┐рдП рдПрдХреНрд╕реЗрд╕ рджрд┐рдпрд╛ рд╣реИред
  • Magic link рдЙрд╕ рд╕рдордп рдЗрдирдмреЙрдХреНрд╕ рдХрд╛ рдирд┐рдпрдВрддреНрд░рдг рд╕рд╛рдмрд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬрдм рд╕рд╛рдЗрди-рдЗрди рд╣реЛ рд░рд╣рд╛ рд╣реИред рдЗрд╕реЗ рдЪреБрдкрдЪрд╛рдк рдИрдореЗрд▓ рдПрдбреНрд░реЗрд╕ рдирд╣реАрдВ рдмрджрд▓рдирд╛ рдЪрд╛рд╣рд┐рдП рдпрд╛ рдирдИ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдБ рдирд╣реАрдВ рджреЗрдиреА рдЪрд╛рд╣рд┐рдПред

рдЗрд╕рдХреЗ рдмрд╛рдж рдХреНрд▓рд┐рдХ рд╕реЗ рд╕рдлрд▓рддрд╛ рддрдХ рдХрд╛ рдиреНрдпреВрдирддрдо рдкрд╛рде рдореИрдк рдХрд░реЗрдВ:

  • рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд▓рд┐рдВрдХ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рддрд╛ рд╣реИред
  • рдЖрдкрдХрд╛ рдРрдк рдЯреЛрдХрди рдХреЛ рд╡реИрд▓рд┐рдбреЗрдЯ рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╡рд░реНрддрдорд╛рди рд╕реНрдЯреЗрдЯ рдЪреЗрдХ рдХрд░рддрд╛ рд╣реИред
  • рдЖрдк рдареАрдХ рдПрдХ рд╕реНрдЯреЗрдЯ рдкрд░рд┐рд╡рд░реНрддрди рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВ (рдЙрджрд╛., Invited -> Active)ред
  • рдЖрдк рдПрдХ рд╕рд░рд▓ рд╕рдлрд▓рддрд╛ рд╕реНрдХреНрд░реАрди рджрд┐рдЦрд╛рддреЗ рд╣реИрдВ рдЬрд┐рд╕рдореЗрдВ рдЕрдЧрд▓рд╛ рдХрджрдо рдмрддрд╛рдпрд╛ рд╣реЛ (рдРрдк рдЦреЛрд▓реЗрдВ, рдЬрд╛рд░реА рд░рдЦреЗрдВ, рдкрд╛рд╕рд╡рд░реНрдб рд╕реЗрдЯ рдХрд░реЗрдВ)ред

"рдкрд╣рд▓реЗ рд╕реЗ рд╣реЛ рдЪреБрдХрд╛" рдорд╛рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ рд╕реЗ рдпреЛрдЬрдирд╛ рдмрдирд╛рдПрдВред рдЕрдЧрд░ рдХреЛрдИ рд╡реНрдпрдХреНрддрд┐ рджреЛ рдмрд╛рд░ invite рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗ, рддреЛ "Invite already used" рджрд┐рдЦрд╛рдПрдБ рдФрд░ рдЙрдиреНрд╣реЗрдВ рд╕рд╛рдЗрди рдЗрди рдкрд░ рднреЗрдЬ рджреЗрдВред рдЕрдЧрд░ рд╡реЗ рд╕рддреНрдпрд╛рдкрди рд▓рд┐рдВрдХ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рддреЗ рд╣реИрдВ рдЬрдмрдХрд┐ рд╡реЗ рдкрд╣рд▓реЗ рд╕реЗ рд╕рддреНрдпрд╛рдкрд┐рдд рд╣реИрдВ, рддреЛ рдЙрдиреНрд╣реЗрдВ рдкреБрд╖реНрдЯ рдХрд░реЗрдВ рдФрд░ рдЖрдЧреЗ рдорд╛рд░реНрдЧрджрд░реНрд╢рд┐рдд рдХрд░реЗрдВ рдмрдЬрд╛рдп рддреНрд░реБрдЯрд┐ рджрд┐рдЦрд╛рдиреЗ рдХреЗред

рдЕрдЧрд░ рдЖрдк рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рдЪреИрдирд▓ рд╕рдкреЛрд░реНрдЯ рдХрд░рддреЗ рд╣реИрдВ (рдИрдореЗрд▓ рдкреНрд▓рд╕ SMS, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП), рддреЛ рд╕реНрдЯреЗрдЯреНрд╕ рд╕рд╛рдЭрд╛ рд░рдЦреЗрдВ рддрд╛рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдлрд╝реНрд▓реЛ рдХреЗ рдмреАрдЪ рдЙрдЫрд▓ рдХрд░ рдлрдБрд╕ рди рдЬрд╛рдПрдБред

рдЯреЛрдХрди рдбрд┐рдЬрд╝рд╛рдЗрди рдХреА рдмреБрдирд┐рдпрд╛рджреА рдмрд╛рддреЗрдВ (рдХреНрдпрд╛ рд╕реНрдЯреЛрд░ рдХрд░реЗрдВ, рдХреНрдпрд╛ рдЯрд╛рд▓реЗрдВ)

рдЯреНрд░рд╛рдВрдЬрд╝реИрдХреНрд╢рдирд▓ рдИрдореЗрд▓ рдлрд╝реНрд▓реЛ рдЕрдХреНрд╕рд░ рдЯреЛрдХрди рдбрд┐рдЬрд╝рд╛рдЗрди рдкрд░ рд╣реА рд╕рдлрд▓ рдпрд╛ рдЕрд╕рдлрд▓ рд╣реЛрддреЗ рд╣реИрдВред рдПрдХ рдЯреЛрдХрди рдПрдХ рдЕрд╕реНрдерд╛рдпреА рдХреБрдВрдЬреА рд╣реИ рдЬреЛ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХреНрд░рд┐рдпрд╛ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИ: рдИрдореЗрд▓ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдирд╛, рдирд┐рдордВрддреНрд░рдг рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдирд╛, рдпрд╛ рд╕рд╛рдЗрди рдЗрди рдХрд░рдирд╛ред

рддреАрди рдЖрд╡рд╢реНрдпрдХрддрд╛рдПрдБ рдЕрдзрд┐рдХрддрд░ рд╕рдорд╕реНрдпрд╛рдПрдБ рдХрд╡рд░ рдХрд░ рджреЗрддреА рд╣реИрдВ:

  • рдордЬрдмреВрдд рд░реИрдВрдбрдордиреЗрд╕ рддрд╛рдХрд┐ рдЯреЛрдХрди рдХрд╛ рдЕрдиреБрдорд╛рди рди рд▓рдЧрд╛рдпрд╛ рдЬрд╛ рд╕рдХреЗред
  • рд╕реНрдкрд╖реНрдЯ рдкреНрд░рдпреЛрдЬрди рддрд╛рдХрд┐ invite рдЯреЛрдХрди рд▓реЙрдЧрд┐рди рдпрд╛ рдкрд╛рд╕рд╡рд░реНрдб рд░реАрд╕реЗрдЯ рдХреЗ рд▓рд┐рдП рдкреБрди: рдЙрдкрдпреЛрдЧ рди рд╣реЛ рд╕рдХреЗред
  • рдПрдХ рд╕рдорд╛рдкреНрддрд┐ рд╕рдордп рддрд╛рдХрд┐ рдкреБрд░рд╛рдиреЗ рдИрдореЗрд▓ рд╕реНрдерд╛рдпреА рдмреИрдХрдбреЛрд░ рди рдмрдиреЗрдВред

рдУрдкреИрдХ рдмрдирд╛рдо рд╕рд╛рдЗрди рдХрд┐рдП рд╣реБрдП рдЯреЛрдХрди

рдУрдкреИрдХ рдЯреЛрдХрди рдЕрдзрд┐рдХрд╛рдВрд╢ рдЯреАрдореЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рд╕рд░рд▓ рд╣реИ: рдПрдХ рд▓рдВрдмрд╛ рд░реИрдВрдбрдо рд╕реНрдЯреНрд░рд┐рдВрдЧ рдмрдирд╛рдПрдВ, рдЙрд╕реЗ рд╕рд░реНрд╡рд░ рдкрд░ рд╕реНрдЯреЛрд░ рдХрд░реЗрдВ, рдФрд░ рдЬрдм рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреНрд▓рд┐рдХ рдХрд░реЗ рддреЛ рд▓реБрдХрдЕрдк рдХрд░реЗрдВред рдЗрд╕реЗ рдПрдХ-рдмрд╛рд░ рдЗрд╕реНрддреЗрдорд╛рд▓ рд╣реЛрдиреЗ рд╡рд╛рд▓рд╛ рдФрд░ рд╕рд╛рдзрд╛рд░рдг рд░рдЦреЗрдВред

рд╕рд╛рдЗрди рдХрд┐рдпрд╛ рд╣реБрдЖ рдЯреЛрдХрди (рдПрдХ рдХрдореНрдкреИрдХреНрдЯ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдЬрд┐рд╕рдореЗрдВ рд╕рд┐рдЧреНрдиреЗрдЪрд░ рд╣реЛ) рддрдм рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬрдм рдЖрдк рд╣рд░ рдХреНрд▓рд┐рдХ рдкрд░ рдбреЗрдЯрд╛рдмреЗрд╕ рд▓реБрдХрдЕрдк рд╕реЗ рдмрдЪрдирд╛ рдЪрд╛рд╣реЗрдВ, рдпрд╛ рдЯреЛрдХрди рдореЗрдВ рд╕рдВрд░рдЪрд┐рдд рдбреЗрдЯрд╛ рд░рдЦрдирд╛ рдЪрд╛рд╣реЗрдВред рд╡реНрдпрд╛рдкрд╛рд░-рдСрдиреНрдЯреНрд░реЗрдбрд╝ рдСрдлрд╝ рдЬрдЯрд┐рд▓рддрд╛ рд╣реИ: рд╕рд╛рдЗрдирд┐рдВрдЧ рдХреАрдЬрд╝, рд╡реИрд░рд┐рдлрд┐рдХреЗрд╢рди рдирд┐рдпрдо, рдФрд░ рд╕рд╛рдлрд╝ рд░рд┐рд╡реЛрдХреЗрд╢рди рд╕реНрдЯреЛрд░реАред рдХрдИ рдЯреНрд░рд╛рдВрдЬрд╝реИрдХреНрд╢рдирд▓ рдореЗрд▓ рдлрд╝реНрд▓реЛ рдХреЗ рд▓рд┐рдП, рдУрдкреИрдХ рдЯреЛрдХрди рдХреЛ рд╕рдордЭрдирд╛ рдФрд░ рд░рд┐рд╡реЛрдХ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд░рд╣рддрд╛ рд╣реИред

URL рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдбреЗрдЯрд╛ рди рдбрд╛рд▓реЗрдВред рдИрдореЗрд▓ рдкрддреЗ, user IDs, рд░реЛрд▓реНрд╕ рдпрд╛ рдХреЛрдИ рднреА рдРрд╕реА рдЬрд╛рдирдХрд╛рд░реА рдЬреЛ рд╡реНрдпрдХреНрддрд┐ рдХреМрди рд╣реИ рдпрд╛ рдХрд┐рд╕ рдПрдХреНрд╕реЗрд╕ рдХреЗ рдкрд╛рд╕ рд╣реИ рд╡рд╣ рдкреНрд░рдХрдЯ рдХрд░реЗ, рди рдбрд╛рд▓реЗрдВред URL рдХреЙрдкреА рд╣реЛрддреЗ рд╣реИрдВ, рд▓реЙрдЧ рд╣реЛрддреЗ рд╣реИрдВ, рдФрд░ рдХрднреА-рдХрднреА рд╕рд╛рдЭрд╛ рднреА рд╣реЛрддреЗ рд╣реИрдВред

рдЯреЛрдХрди рдХреЛ рдПрдХ-рдмрд╛рд░ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдмрдирд╛рдЗрдПред рд╕рдлрд▓рддрд╛ рдХреЗ рдмрд╛рдж рдЯреЛрдХрди рдХреЛ consumed рдорд╛рд░реНрдХ рдХрд░ рджреЗрдВ рдФрд░ рдмрд╛рдж рдХреЗ рдХрд┐рд╕реА рднреА рдкреНрд░рдпрд╛рд╕ рдХреЛ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░ рджреЗрдВред рдпрд╣ рдлреЙрд░рд╡рд░реНрдб рдХрд┐рдП рдЧрдП рдИрдореЗрд▓ рдФрд░ рдкреБрд░рд╛рдиреЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдЯреИрдм рд╕реЗ рд╕реБрд░рдХреНрд╖рд╛ рдХрд░рддрд╛ рд╣реИред

рдбрд┐рдмрдЧрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдореЗрдЯрд╛рдбреЗрдЯрд╛ рд╕реНрдЯреЛрд░ рдХрд░реЗрдВ рддрд╛рдХрд┐ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рди рдкрдбрд╝реЗ:

  • purpose (verify, invite, magic link login)
  • created_at рдФрд░ expires_at
  • used_at (рд╕рдлрд▓ рдЙрдкрдпреЛрдЧ рддрдХ null)
  • рдирд┐рд░реНрдорд╛рдг рдФрд░ рдЙрдкрдпреЛрдЧ рдХреЗ рд╕рдордп request IP рдФрд░ user agent
  • status (active, consumed, expired, revoked)

рдпрджрд┐ рдЖрдк AppMaster рдЬреИрд╕реЗ рдиреЛ-рдХреЛрдб рдЯреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдЖрдорддреМрд░ рдкрд░ Tokens рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рд╕рд╛рдлрд╝ рдореИрдк рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ consume рд╕реНрдЯреЗрдк рдПрдХ Business Process рдореЗрдВ рд╣реИрдВрдбрд▓ рдХрд░ рд▓реЗрдВ рддрд╛рдХрд┐ рдпрд╣ рд╕рдлрд▓рддрд╛ рдХреНрд░рд┐рдпрд╛ рдХреЗ рд╕рд╛рде рдПрдЯреЙрдорд┐рдХ рд╣реЛред

рд╕реБрд░рдХреНрд╖рд╛ рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдзреИрд░реНрдп рдХреЗ рдмреАрдЪ рд╕рдВрддреБрд▓рди рдмрдирд╛рдиреЗ рд╡рд╛рд▓реА рдПрдХреНрд╕рдкрд╛рдпрд░реА рдирд┐рдпрдо

рдПрдХреНрд╕рдкрд╛рдпрд░реА рд╡рд╣ рдЬрдЧрд╣ рд╣реИ рдЬрд╣рд╛рдБ рдпреЗ рдлрд╝реНрд▓реЛ рдЕрдХреНрд╕рд░ рдмрд╣реБрдд рдЕрд╕реБрд░рдХреНрд╖рд┐рдд (рдмрд╣реБрдд рд▓рдВрдмреЗ) рдпрд╛ рдкрд░реЗрд╢рд╛рди рдХрд░рдиреЗ рд╡рд╛рд▓реЗ (рдмрд╣реБрдд рдЫреЛрдЯреЗ) рд▓рдЧрддреЗ рд╣реИрдВред рд▓рд╛рдЗрдлрдЯрд╛рдЗрдо рдХреЛ рдЬреЛрдЦрд┐рдо рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдХрд┐рдП рдЬрд╛ рд░рд╣реЗ рдХрд╛рд░реНрдп рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдорд┐рд▓рд╛рдПрдБред

рдПрдХ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд╢реБрд░реВрдЖрддреА рдмрд┐рдВрджреБ:

  • рдореИрдЬрд┐рдХ рд▓реЙрдЧрд┐рди рд▓рд┐рдВрдХ: 10тАУ20 рдорд┐рдирдЯ
  • рдкрд╛рд╕рд╡рд░реНрдб рд░реАрд╕реЗрдЯ: 30тАУ60 рдорд┐рдирдЯ
  • рд╡рд░реНрдХрд╕реНрдкреЗрд╕/рдЯреАрдо рдореЗрдВ рдЬреБрдбрд╝рдиреЗ рдХрд╛ рдирд┐рдордВрддреНрд░рдг: 1тАУ7 рджрд┐рди
  • рд╕рд╛рдЗрди-рдЕрдк рдХреЗ рдмрд╛рдж рдИрдореЗрд▓ рд╕рддреНрдпрд╛рдкрди: 24тАУ72 рдШрдВрдЯреЗ

рдЫреЛрдЯреА рд▓рд╛рдЗрдлрдЯрд╛рдЗрдо рддрднреА рдХрд╛рдо рдХрд░рддреА рд╣реИ рдЬрдм рдПрдХреНрд╕рдкрд╛рдпрд░реНрдб рдЕрдиреБрднрд╡ рджрдпрд╛рд▓реБ рд╣реЛред рдЬрдм рдЯреЛрдХрди рдорд╛рдиреНрдп рдирд╣реАрдВ рд░рд╣рд╛, рддреЛ рд╕реНрдкрд╖реНрдЯ рдмрддрд╛рдПрдВ рдФрд░ рдПрдХ рдЖрд╕рд╛рди рдЕрдЧрд▓рд╛ рдХрджрдо рдСрдлрд╝рд░ рдХрд░реЗрдВ: рдирдпрд╛ рдИрдореЗрд▓ рдЕрдиреБрд░реЛрдз рдХрд░реЗрдВред рдЕрд╕реНрдкрд╖реНрдЯ рддреНрд░реБрдЯрд┐рдпреЛрдВ рд╕реЗ рдмрдЪреЗрдВ рдЬреИрд╕реЗ "Invalid link."ред

рдХреНрд▓реЙрдХ рдЗрд╢реНрдпреВрдЬрд╝ рдХрдИ рдбрд┐рд╡рд╛рдЗрд╕ рдФрд░ рдХреЙрд░реНрдкреЛрд░реЗрдЯ рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рдкрд░реЗрд╢рд╛рдиреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╕рд░реНрд╡рд░ рд╕рдордп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡реИрд▓рд┐рдбреЗрдЯ рдХрд░реЗрдВ, рдФрд░ рджреЗрд░реА рд╕реЗ рд╣реЛрдиреЗ рд╡рд╛рд▓реА рдЧрд▓рдд рдЕрд╕рдлрд▓рддрд╛рдУрдВ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЫреЛрдЯрд╛ рд╕рд╛ рдЧреНрд░реЗрд╕ рд╡рд┐рдВрдбреЛ (1тАУ2 рдорд┐рдирдЯ) рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред рдЧреНрд░реЗрд╕ рд╡рд┐рдВрдбреЛ рдХреЛ рдЫреЛрдЯрд╛ рд░рдЦреЗрдВ рддрд╛рдХрд┐ рдпрд╣ рдЕрд╕рд▓реА рд╕реБрд░рдХреНрд╖рд╛ рдЧреИрдк рди рдмрди рдЬрд╛рдПред

рдЬрдм рдЖрдк рдирдпрд╛ рдЯреЛрдХрди рдЬрд╛рд░реА рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рддрдп рдХрд░реЗрдВ рдХрд┐ рдХреНрдпрд╛ рдкреБрд░рд╛рдиреЗ рдЯреЛрдХрди рдХреЛ рдЕрдорд╛рдиреНрдп рдХрд░рдирд╛ рд╣реИред рдореИрдЬрд┐рдХ рд▓рд┐рдВрдХ рдФрд░ рдкрд╛рд╕рд╡рд░реНрдб рд░реАрд╕реЗрдЯ рдХреЗ рд▓рд┐рдП рдЕрдХрд╕рд░ рд╕рдмрд╕реЗ рдирдпрд╛ рдЯреЛрдХрди рдЬреАрддрддрд╛ рд╣реИред рдИрдореЗрд▓ рд╕рддреНрдпрд╛рдкрди рдХреЗ рд▓рд┐рдП рдкреБрд░рд╛рдиреЗ рдЯреЛрдХрди рдЕрдорд╛рдиреНрдп рдХрд░рдиреЗ рд╕реЗ рдпрд╣ рднреА рдХрдо рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЙрд▓рдЭрди рдореЗрдВ рдкрдбрд╝реЗрдВтАФ"рдХрд┐рд╕ рдИрдореЗрд▓ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реВрдБ?"ред

рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдкрд░реЗрд╢рд╛рди рдХрд┐рдП рдмрд┐рдирд╛ рд░реАрд╕реЗрдВрдб рд▓рд┐рдорд┐рдЯ рдФрд░ рд░реЗрдЯ-рд▓рд┐рдорд┐рдЯрд┐рдВрдЧ

Prevent resend abuse gently
Add cooldowns and daily caps by email and IP in one shared workflow.
Add Limits

рд░реАрд╕реЗрдВрдб рд▓рд┐рдорд┐рдЯреНрд╕ рдЖрдкрдХреЛ рджреБрд░реБрдкрдпреЛрдЧ рд╕реЗ рдмрдЪрд╛рддреА рд╣реИрдВ, рд▓рд╛рдЧрдд рдШрдЯрд╛рддреА рд╣реИрдВ, рдФрд░ рдЖрдкрдХреЗ рдбреЛрдореЗрди рдХреЛ рд╕рдВрджрд┐рдЧреНрдз рдмрд░реНрд╕реНрдЯ рд╕реЗ рдмрдЪрд╛рддреА рд╣реИрдВред рд╡реЗ рдЧрд▓рддреА рд╕реЗ рд▓реВрдк рдореЗрдВ рдлрдБрд╕рдиреЗ рдХреЛ рднреА рд░реЛрдХрддреА рд╣реИрдВ рдЬрдм рдХреЛрдИ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдмрд╛рд░-рдмрд╛рд░ рд░реА-рд╕реЗрдиреНрдб рдХреНрд▓рд┐рдХ рдХрд░рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЙрд╕реЗ рдИрдореЗрд▓ рдирд╣реАрдВ рдорд┐рд▓ рд░рд╣рд╛ред

рдЕрдЪреНрдЫреА рд╕реАрдорд╛рдПрдБ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рдЕрдХреНрд╖ рдкрд░ рдХрд╛рдо рдХрд░рддреА рд╣реИрдВред рдпрджрд┐ рдЖрдк рдХреЗрд╡рд▓ user account рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдорд┐рдЯ рд▓рдЧрд╛рддреЗ рд╣реИрдВ, рддреЛ рд╣рдорд▓рд╛рд╡рд░ рдИрдореЗрд▓ рдХреЛ рдШреБрдорд╛рдХрд░ рд╣рдорд▓рд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдЕрдЧрд░ рдЖрдк рдХреЗрд╡рд▓ рдИрдореЗрд▓ рдкрддреЗ рджреНрд╡рд╛рд░рд╛ рд╕реАрдорд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рд╡реЗ IP рдмрджрд▓рдХрд░ рдЖрдЧреЗ рдмрдврд╝ рд╕рдХрддреЗ рд╣реИрдВред рдЪреЗрдХреНрд╕ рдХреЛ рд╕рдВрдпреЛрдЬрд┐рдд рдХрд░реЗрдВ рддрд╛рдХрд┐ рд╕рд╛рдорд╛рдиреНрдп рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╢рд╛рдпрдж рд╣реА рдиреЛрдЯрд┐рд╕ рдХрд░реЗрдВ, рдкрд░ рджреБрд░реБрдкрдпреЛрдЧ рдорд╣рдБрдЧрд╛ рдкрдбрд╝рдиреЗ рд▓рдЧреЗред

рдпреЗ рдЧрд╛рд░реНрдбрд░реЗрд▓реНрд╕ рдХрдИ рдЙрддреНрдкрд╛рджреЛрдВ рдХреЗ рд▓рд┐рдП рдХрд╛рдлреА рд╣реИрдВ:

  • рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкреНрд░рддрд┐ рдХреВрд▓рдбрд╛рдЙрди: рдЙрд╕реА рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рднреЗрдЬрдиреЗ рдХреЗ рдмреАрдЪ 60 рд╕реЗрдХрдВрдб
  • рдИрдореЗрд▓ рдкрддреЗ рдкреНрд░рддрд┐ рдХреВрд▓рдбрд╛рдЙрди: 60тАУ120 рд╕реЗрдХрдВрдб
  • IP рд░реЗрдЯ рд▓рд┐рдорд┐рдЯ: рдПрдХ рдЫреЛрдЯрд╛ рдмрд░реНрд╕реНрдЯ рдЕрдиреБрдорддрд┐ рджреЗрдВ, рдлрд┐рд░ рдзреАрдорд╛ рдХрд░реЗрдВ (рдЦрд╛рд╕рддреМрд░ рдкрд░ рд╕рд╛рдЗрдирдЕрдк рдкрд░)
  • рдИрдореЗрд▓ рдкрддреЗ рдкреНрд░рддрд┐ рджрд┐рди рдХреИрдк: 5тАУ10 рднреЗрдЬреЗ рдЧрдП рд╕рдВрджреЗрд╢ (verification, magic link, рдпрд╛ invite рд╕рд╣рд┐рдд)
  • рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкреНрд░рддрд┐ рджрд┐рди рдХреИрдк: рд╕рднреА рдИрдореЗрд▓ рдХреНрд░рд┐рдпрд╛рдУрдВ рдореЗрдВ рдорд┐рд▓рд╛рдХрд░ 10тАУ20 рднреЗрдЬреЗ рдЧрдП рд╕рдВрджреЗрд╢

рдЬрдм рдХреЛрдИ рд▓рд┐рдорд┐рдЯ рдЯреНрд░рд┐рдЧрд░ рд╣реЛ, рддреЛ рдЖрдкрдХреА UX рдХреЙрдкреА рдмреИрдХреЗрдВрдб рдЬрд┐рддрдиреА рд╣реА рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реЛрддреА рд╣реИред рд╕реНрдкрд╖реНрдЯ рдФрд░ рд╢рд╛рдВрддрд┐рдкреВрд░реНрдг рдмрдиреЗрдВред

рдЙрджрд╛рд╣рд░рдг: "рд╣рдордиреЗ [email protected] рдкрд░ рдЕрднреА рдПрдХ рдИрдореЗрд▓ рднреЗрдЬрд╛ рд╣реИред рдЖрдк 60 рд╕реЗрдХрдВрдб рдореЗрдВ рджреВрд╕рд░рд╛ рдЕрдиреБрд░реЛрдз рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред" рдпрджрд┐ рдЬрд╝рд░реВрд░реА рд╣реЛ рддреЛ рдЬреЛрдбрд╝реЗрдВ: "рд╕реНрдкреИрдо рдпрд╛ рдкреНрд░рдореЛрд╢рдиреНрд╕ рдЪреЗрдХ рдХрд░реЗрдВ, рдФрд░ рд╡рд┐рд╖рдп рдХреЗ рд▓рд┐рдП 'рд╕рд╛рдЗрди рдЗрди рд▓рд┐рдВрдХ' рдЦреЛрдЬреЗрдВред"

рдпрджрд┐ рджреИрдирд┐рдХ рдХреИрдк рд╣рд┐рдЯ рд╣реЛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдХрд┐рд╕реА рдореГрдд Resend рдмрдЯрди рдХреЛ рдмрд╛рд░-рдмрд╛рд░ рди рджрд┐рдЦрд╛рдПрдБред рдЙрд╕реЗ рдПрдХ рд╕рдВрджреЗрд╢ рд╕реЗ рдмрджрд▓ рджреЗрдВ рдЬреЛ рдЕрдЧрд▓рд╛ рд╕реБрд░рдХреНрд╖рд┐рдд рдХрджрдо рдмрддрд╛рдП (рдХрд▓ рддрдХ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдВ, рдпрд╛ рдкрддрд╛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдкреЛрд░реНрдЯ рд╕реЗ рд╕рдВрдкрд░реНрдХ рдХрд░реЗрдВ)ред

рдпрджрд┐ рдЖрдк рдЗрд╕реЗ рдПрдХ рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╡рд░реНрдХрдлрд╝реНрд▓реЛ рдореЗрдВ рд▓рд╛рдЧреВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рд▓рд┐рдорд┐рдЯ рдЪреЗрдХреНрд╕ рдХреЛ рдПрдХ рд╕рд╛рдЭрд╛ рд╕реНрдЯреЗрдк рдореЗрдВ рд░рдЦреЗрдВ рддрд╛рдХрд┐ verification рдИрдореЗрд▓, invites, рдФрд░ magic links рд╕реБрд╕рдВрдЧрдд рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░реЗрдВред

рдЯреНрд░рд╛рдВрдЬрд╝реИрдХреНрд╢рдирд▓ рдИрдореЗрд▓ рдХреЗ рд▓рд┐рдП рдбрд┐рд▓рд┐рд╡рд░реЗрдмрд┐рд▓рд┐рдЯреА рдЪреЗрдХ

рдЬреНрдпрд╛рджрд╛рддрд░ "рдпрд╣ рдХрднреА рдирд╣реАрдВ рдЖрдпрд╛" рд░рд┐рдкреЛрд░реНрдЯ рдЕрд╕рд▓ рдореЗрдВ "рд╣рдо рдпрд╣ рдирд╣реАрдВ рдмрддрд╛ рдкрд╛ рд░рд╣реЗ рдХрд┐ рдХреНрдпрд╛ рд╣реБрдЖ" рд╣реЛрддреА рд╣реИрдВред рдбрд┐рд▓рд┐рд╡рд░реЗрдмрд┐рд▓рд┐рдЯреА рджреГрд╢реНрдпрддрд╛ рд╕реЗ рд╢реБрд░реВ рд╣реЛрддреА рд╣реИ рддрд╛рдХрд┐ рдЖрдк рджреЗрд░реА, рдмрд╛рдЙрдВрд╕ рдФрд░ рд╕реНрдкреИрдо рдлрд╝рд┐рд▓реНрдЯрд░рд┐рдВрдЧ рдХреЛ рдЕрд▓рдЧ рдХрд░ рд╕рдХреЗрдВред

рд╣рд░ рднреЗрдЬреЗ рдЧрдП рдИрдореЗрд▓ рдХреЗ рд▓рд┐рдП рдЗрддрдирд╛ рд╡рд┐рд╡рд░рдг рд▓реЙрдЧ рдХрд░реЗрдВ рдХрд┐ рдмрд╛рдж рдореЗрдВ рдХрд╣рд╛рдиреА рдХреЛ рд░реАрдкреНрд▓реЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗ: user id (рдпрд╛ рдИрдореЗрд▓ рд╣реИрд╢), рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╕рдЯреАрдХ рдЯреЗрдореНрдкрд▓реЗрдЯ/рд╡рд░реНрд╢рди, рдкреНрд░реЛрд╡рд╛рдЗрдбрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛, рдФрд░ рдкреНрд░реЛрд╡рд╛рдЗрдбрд░ message idред purpose рднреА рд╕реНрдЯреЛрд░ рдХрд░реЗрдВ, рдХреНрдпреЛрдВрдХрд┐ рдореИрдЬрд┐рдХ рд▓рд┐рдВрдХ рдФрд░ invite рдХреЗ рд▓рд┐рдП рдЕрдкреЗрдХреНрд╖рд╛рдПрдБ рдЕрд▓рдЧ рд╣реЛрддреА рд╣реИрдВред

рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рдПрдХ рд╕рд╛рдорд╛рди "failed" рд╕реНрдерд┐рддрд┐ рди рдорд╛рдиреЗрдВтАФрдЙрдиреНрд╣реЗрдВ рдЕрд▓рдЧ рдмрдХреЗрдЯ рд╕рдордЭреЗрдВред рдПрдХ рд╣рд╛рд░реНрдб рдмрд╛рдЙрдВрд╕ рдХреЗ рд▓рд┐рдП рдЕрдЧрд▓рд╛ рдХрджрдо рдЯреЗрдореНрдкрд▓реЗрдЯ рдпрд╛ рд╕рд░реНрд╡рд░-рд╕реНрддрд░ рдХрд╛рд░реНрд░рд╡рд╛рдИ рд╕реЗ рдЕрд▓рдЧ рд╣реЛрдЧрд╛, рдФрд░ рд╕реНрдкреИрдо рд╢рд┐рдХрд╛рдпрдд рдПрдХрджрдо рдЕрд▓рдЧред рдЕрдирд╕рдмреНрд╕рдХреНрд░рд╛рдЗрдмреНрд╕ рдХреЛ рдЕрд▓рдЧ рдЯреНрд░реИрдХ рдХрд░реЗрдВ рддрд╛рдХрд┐ рд╕рдкреЛрд░реНрдЯ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реЗ рди рдХрд╣реЗ "рд╕реНрдкреИрдо рдЪреЗрдХ рдХрд░реЗрдВ" рдЬрдмрдХрд┐ рдЖрдк рд╕рд╣реА рддрд░рд╣ рд╕реЗ рдореЗрд▓ suppress рдХрд░ рд░рд╣реЗ рд╣реЛрдВред

рд╕рдкреЛрд░реНрдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд░рд▓ delivery status рджреГрд╢реНрдп рдХреЛ рдЗрди рд╕рд╡рд╛рд▓реЛрдВ рдХрд╛ рдЬрд╡рд╛рдм рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдП:

  • рдХреНрдпрд╛ рднреЗрдЬрд╛ рдЧрдпрд╛ рдерд╛, рдХрдм рдФрд░ рдХреНрдпреЛрдВ (рдЯреЗрдореНрдкрд▓реЗрдЯ + рдкреНрд░рдпреЛрдЬрди)
  • рдкреНрд░реЛрд╡рд╛рдЗрдбрд░ рдиреЗ рдХреНрдпрд╛ рдХрд╣рд╛ (message id + status)
  • рдХреНрдпрд╛ рдпрд╣ рдмрд╛рдЙрдВрд╕ рд╣реБрдЖ, рдмреНрд▓реЙрдХ рд╣реБрдЖ, рдпрд╛ рд╢рд┐рдХрд╛рдпрдд рд╣реБрдИ
  • рдХреНрдпрд╛ рдкрддрд╛ suppress рд╣реИ (unsubscribe/bounce рд╕реВрдЪреА)
  • рдЕрдЧрд▓рд╛ рд╕реБрд░рдХреНрд╖рд┐рдд рдХрджрдо рдХреНрдпрд╛ рд╣реИ (рд░реА-рд╕реЗрдиреНрдб рдЕрдиреБрдордд рд╣реИ, рдпрд╛ рд░реЛрдХ рджреЗрдВ)

рдПрдХ рд╣реА рдореЗрд▓рдмреЙрдХреНрд╕ рдкрд░ рднрд░реЛрд╕рд╛ рди рдХрд░реЗрдВред рдореБрдЦреНрдп рдкреНрд░реЛрд╡рд╛рдЗрдбрд░реЛрдВ рдХреЗ across рдЯреЗрд╕реНрдЯ рдЗрдирдмреЙрдХреНрд╕ рд░рдЦреЗрдВ рдФрд░ рдЬрдм рдЖрдк рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕ рдпрд╛ рднреЗрдЬрдиреЗ рдХреА рд╕реЗрдЯрд┐рдВрдЧ рдмрджрд▓реЗрдВ рддреЛ рдПрдХ рддреНрд╡рд░рд┐рдд рдЪреЗрдХ рдЪрд▓рд╛рдПрдБред рдЕрдЧрд░ Gmail рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣рд╛ рд╣реИ рдкрд░ Outlook рдмреНрд▓реЙрдХ рдХрд░ рд░рд╣рд╛ рд╣реИ, рддреЛ рдпрд╣ рд╕рд╛рдордЧреНрд░реА, рд╣реЗрдбрд░реНрд╕ рдФрд░ рдбреЛрдореЗрди рдкреНрд░рддрд┐рд╖реНрдард╛ рдХреА рд╕рдореАрдХреНрд╖рд╛ рдХрд╛ рд╕рдВрдХреЗрдд рд╣реИред

рд╕реЗрдВрдбрд░-рдбреЛрдореЗрди рд╕реЗрдЯрдЕрдк рдХреЛ рдПрдХ рдЪреЗрдХрд▓рд┐рд╕реНрдЯ рдЖрдЗрдЯрдо рдорд╛рдиреЗрдВ, рдПрдХ рдмрд╛рд░ рдХрд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдирд╣реАрдВред рдкреБрд╖реНрдЯрд┐ рдХрд░реЗрдВ рдХрд┐ SPF, DKIM, рдФрд░ DMARC рдореМрдЬреВрдж рд╣реИрдВ рдФрд░ рдЙрд╕ рдбреЛрдореЗрди рдХреЗ рд╕рд╛рде align рдХрд░рддреЗ рд╣реИрдВ рдЬрд┐рд╕рд╕реЗ рдЖрдк рднреЗрдЬ рд░рд╣реЗ рд╣реИрдВред рдмреЗрд╣рддрд░реАрди рдЯреЛрдХрди рдХреЗ рдмрд╛рд╡рдЬреВрдж рдХрдордЬреЛрд░ рдбреЛрдореЗрди рд╕реЗрдЯрдЕрдк рд╕рддреНрдпрд╛рдкрди рдФрд░ invite рдИрдореЗрд▓реНрд╕ рдХреЛ рдЧрд╛рдпрдм рдХрд░рд╡рд╛ рд╕рдХрддрд╛ рд╣реИред

рд╕реНрдкрд╖реНрдЯ, рд╕реБрд░рдХреНрд╖рд┐рдд рдФрд░ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрдо рд╣реЛрдиреЗ рд╡рд╛рд▓рд╛ рдИрдореЗрд▓ рдХрдВрдЯреЗрдВрдЯ

Handle double clicks safely
Make double clicks and old emails harmless with an atomic Business Process.
Create Workflow

рдХрдИ рдИрдореЗрд▓ "рдЯреВрдЯреЗ" рдирд╣реАрдВ рд╣реЛрддреЗред рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╣рд┐рдЪрдХрддреЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рд╕рдВрджреЗрд╢ рдЕрдкрд░рд┐рдЪрд┐рдд рджрд┐рдЦрддрд╛ рд╣реИ, рдХреНрд░рд┐рдпрд╛ рдЫрд┐рдкреА рд░рд╣рддреА рд╣реИ, рдпрд╛ рдЯреЗрдХреНрд╕реНрдЯ рдЬреЛрдЦрд┐рдо рднрд░рд╛ рд▓рдЧрддрд╛ рд╣реИред рдЕрдЪреНрдЫреЗ рдЯреНрд░рд╛рдВрдЬрд╝реИрдХреНрд╢рдирд▓ рдИрдореЗрд▓Predictable wording рдФрд░ layout рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рддреЗрдЬрд╝реА рд╕реЗ рдФрд░ рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рдХрд╛рд░реНрдп рдХрд░ рд╕рдХреЗрдВред

рд╡рд┐рд╖рдп рдкрдВрдХреНрддрд┐рдпрд╛рдБ рдлреНрд▓реЛ рдХреЗ рд╣рд┐рд╕рд╛рдм рд╕реЗ рд╕реБрд╕рдВрдЧрдд рд░рдЦреЗрдВред рдпрджрд┐ рдЖрдЬ рдЖрдк "Verify your email" рднреЗрдЬ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдХрд▓ "Action required!!!" рдкрд░ рд╕реНрд╡рд┐рдЪ рди рдХрд░реЗрдВред рд╕реБрд╕рдВрдЧрддрддрд╛ рдкрд╣рдЪрд╛рди рдмрдирд╛рддреА рд╣реИ рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдлрд╝рд┐рд╢рд┐рдВрдЧ spot рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддреА рд╣реИред

рдкреНрд░рд╛рдердорд┐рдХ рдХреНрд░рд┐рдпрд╛ рдХреЛ рдКрдкрд░ рд░рдЦреЗрдВ: рдПрдХ рдЫреЛрдЯреА рд╕реА рдкрдВрдХреНрддрд┐ рдЬреЛ рдмрддрд╛рдпреЗ рдХрд┐ рдЙрдиреНрд╣реЗрдВ рдпрд╣ рдИрдореЗрд▓ рдХреНрдпреЛрдВ рдорд┐рд▓рд╛, рдлрд┐рд░ рдмрдЯрди рдпрд╛ рд▓рд┐рдВрдХред invites рдХреЗ рд▓рд┐рдП рдмрддрд╛рдПрдВ рдХрд┐ рдХрд┐рд╕рдиреЗ рдЙрдиреНрд╣реЗрдВ рдирд┐рдордВрддреНрд░рд┐рдд рдХрд┐рдпрд╛ рдФрд░ рдХрд┐рд╕ рдЪреАрдЬ рдХреЗ рд▓рд┐рдПред

рдПрдХ рдкреНрд▓реЗрди-рдЯреЗрдХреНрд╕реНрдЯ рдлреЙрд▓рдмреИрдХ рдФрд░ рджрд┐рдЦрд╛рдИ рджреЗрдиреЗ рд╡рд╛рд▓рд╛ raw URL рд╢рд╛рдорд┐рд▓ рдХрд░реЗрдВред рдХреБрдЫ рдХреНрд▓рд╛рдЗрдВрдЯ рдмрдЯрдиреЛрдВ рдХреЛ рдмреНрд▓реЙрдХ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдХреБрдЫ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ copy/paste рдкрд╕рдВрдж рдХрд░рддреЗ рд╣реИрдВред URL рдХреЛ рдЕрдкрдиреА рдЕрд▓рдЧ рдкрдВрдХреНрддрд┐ рдкрд░ рд░рдЦреЗрдВ рдФрд░ рдкрдардиреАрдп рд░рдЦреЗрдВред рдпрджрд┐ рд╕рдВрднрд╡ рд╣реЛ рддреЛ рдЯреЗрдХреНрд╕реНрдЯ рдореЗрдВ рдбреЗрд╕реНрдЯрд┐рдиреЗрд╢рди рдбреЛрдореЗрди рджрд┐рдЦрд╛рдПрдБ (рдЙрджрд╛., "рдпрд╣ рд▓рд┐рдВрдХ рдЖрдкрдХреЗ рдкреЛрд░реНрдЯрд▓ рдХреЛ рдЦреБрд▓реЗрдЧрд╛")ред

рдПрдХ рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реА рд╕рдВрд░рдЪрдирд╛:

  • рд╡рд┐рд╖рдп: рдПрдХ рд╕реНрдкрд╖реНрдЯ рдЙрджреНрджреЗрд╢реНрдп (Verify, Sign in, Accept invite)
  • рдкрд╣рд▓реА рдкрдВрдХреНрддрд┐: рдЙрдиреНрд╣реЗрдВ рдИрдореЗрд▓ рдХреНрдпреЛрдВ рдорд┐рд▓рд╛
  • рдкреНрд░рд╛рдердорд┐рдХ рдмрдЯрди/рд▓рд┐рдВрдХ: рдКрдкрд░ рдирд┐рдХрдЯ
  • рдмреИрдХрдЕрдк raw URL: рджрд┐рдЦрд╛рдИ рджреЗрдиреЗ рдпреЛрдЧреНрдп рдФрд░ рдХреЙрдкреА рдХрд░рдиреЗ рдпреЛрдЧреНрдп
  • "DidnтАЩt request this?" рдорд╛рд░реНрдЧрджрд░реНрд╢рди: рдПрдХ рд╕реНрдкрд╖реНрдЯ рдкрдВрдХреНрддрд┐

рдЕрддреНрдпрдзрд┐рдХ рдлрд╝реЙрд░реНрдореИрдЯрд┐рдВрдЧ рд╕реЗ рдмрдЪреЗрдВред рдЕрддрд┐рд░рд┐рдХреНрдд рд╡рд┐рд░рд╛рдо рдЪрд┐рд╣реНрди, рд╕рднреА рдХреИрдкреНрд╕, рдФрд░ "urgent" рдЬреИрд╕реЗ рд╢рдмреНрдж рдлрд╝рд┐рд▓реНрдЯрд░ рдЯреНрд░рд┐рдЧрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдореЗрдВ рд╕рдВрджреЗрд╣ рдкреИрджрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЯреНрд░рд╛рдВрдЬрд╝реИрдХреНрд╢рдирд▓ рдИрдореЗрд▓ рд╢рд╛рдВрдд рдФрд░ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЯреЛрди рдореЗрдВ рд╣реЛрдВред

рд╣рдореЗрд╢рд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдмрддрд╛рдПрдВ рдХрд┐ рдпрджрд┐ рдЙрдиреНрд╣реЛрдВрдиреЗ рдпрд╣ рдЕрдиреБрд░реЛрдз рдирд╣реАрдВ рдХрд┐рдпрд╛ рддреЛ рдХреНрдпрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдореИрдЬрд┐рдХ рд▓рд┐рдВрдХ рдХреЗ рд▓рд┐рдП рдпрд╣ рднреА рдХрд╣реЗрдВ: "рдЗрд╕ рд▓рд┐рдВрдХ рдХреЛ рд╕рд╛рдЭрд╛ рди рдХрд░реЗрдВред"

рдЪрд░рдг-рджрд░-рдЪрд░рдг: рдПрдХ рд╕реБрд░рдХреНрд╖рд┐рдд рд╕рддреНрдпрд╛рдкрди рдпрд╛ рдореИрдЬрд┐рдХ рд▓рд┐рдВрдХ рдлрд╝реНрд▓реЛ рдмрдирд╛рдПрдВ

Build reliable magic links
Model tokens, expiry, and one-time use with visual workflows in AppMaster.
Try AppMaster

рд╕рддреНрдпрд╛рдкрди, invites, рдФрд░ рдореИрдЬрд┐рдХ рд▓рд┐рдВрдХ рдХреЛ рдПрдХ рд╣реА рдкреИрдЯрд░реНрди рдорд╛рдиреЗрдВ: рдПрдХ-рдмрд╛рд░ рдЗрд╕реНрддреЗрдорд╛рд▓ рд╣реЛрдиреЗ рд╡рд╛рд▓рд╛ рдЯреЛрдХрди рдЬреЛ рдПрдХ рдЕрдиреБрдорддрд┐ рдкреНрд░рд╛рдкреНрдд рдХреНрд░рд┐рдпрд╛ рдЯреНрд░рд┐рдЧрд░ рдХрд░рддрд╛ рд╣реИред

1) рдЖрд╡рд╢реНрдпрдХ рдбреЗрдЯрд╛ рдмрдирд╛рдПрдВ

рдЕрд▓рдЧ рд░рд┐рдХреЙрд░реНрдб рдмрдирд╛рдЗрдП, рднрд▓реЗ рд╣реА рдЖрдк рд▓рдЬреАрдЬрд╝ рд╣реЛрдХрд░ "рдмрд╕ рдЯреЛрдХрди рдХреЛ рдпреВрдЬрд╝рд░ рдкрд░ рд╕реНрдЯреЛрд░ рдХрд░ рджреВрдБ" рдХрд╣рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реЛрдВред рдЕрд▓рдЧ рддрд╛рд▓рд┐рдХрд╛рдПрдБ рдСрдбрд┐рдЯ, рд▓рд┐рдорд┐рдЯреНрд╕, рдФрд░ рдбрд┐рдмрдЧрд┐рдВрдЧ рдХреЛ рдмрд╣реБрдд рдЖрд╕рд╛рди рдмрдирд╛рддреА рд╣реИрдВред

  • Users: email, status (unverified/active), last_login
  • Tokens: user_id (рдпрд╛ email), purpose (verify/login/invite), token_hash, expires_at, used_at, created_at, optional ip_created
  • Send log: user_id/email, template name, created_at, provider_message_id, provider_status, error text (рдпрджрд┐ рдХреЛрдИ)

2) рдЬрдирд░реЗрдЯ рдХрд░реЗрдВ, рднреЗрдЬреЗрдВ, рдлрд┐рд░ рд╡реИрд▓рд┐рдбреЗрдЯ рдХрд░реЗрдВ

рдЬрдм рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд▓рд┐рдВрдХ рдЕрдиреБрд░реЛрдз рдХрд░реЗ (рдпрд╛ рдЖрдк invite рдмрдирд╛рдПрдВ), рдПрдХ рд░реИрдВрдбрдо рдЯреЛрдХрди рдЬрдирд░реЗрдЯ рдХрд░реЗрдВ, рдХреЗрд╡рд▓ рдЙрд╕рдХрд╛ рд╣реИрд╢ рд╕реНрдЯреЛрд░ рдХрд░реЗрдВ, рдПрдХреНрд╕рдкрд╛рдпрд░реА рд╕реЗрдЯ рдХрд░реЗрдВ, рдФрд░ рдЗрд╕реЗ unused рд░рдЦреЗрдВред рдИрдореЗрд▓ рднреЗрдЬреЗрдВ рдФрд░ рдЕрдкрдиреЗ send log рдореЗрдВ рдкреНрд░реЛрд╡рд╛рдЗрдбрд░ рд░рд┐рд╕реНрдкреЙрдиреНрд╕ рдореЗрдЯрд╛рдбреЗрдЯрд╛ рд╕реЗрд╡ рдХрд░реЗрдВред

рдХреНрд▓рд┐рдХ рдкрд░ рд╣реИрдВрдбрд▓рд░ рдХреЛ рд╕рдЦреНрдд рдФрд░ рдкреВрд░реНрд╡рд╛рдиреБрдореЗрдп рд░рдЦреЗрдВ:

  • рдЖрдиреЗ рд╡рд╛рд▓реЗ рдЯреЛрдХрди рдХрд╛ рд╣реИрд╢ рд▓реЗрдХрд░ purpose рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд░рд┐рдХреЙрд░реНрдб рдЦреЛрдЬреЗрдВред
  • рдпрджрд┐ рдПрдХреНрд╕рдкрд╛рдпрд░, рдкрд╣рд▓реЗ рд╕реЗ рдЗрд╕реНрддреЗрдорд╛рд▓ рдпрд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рд╕реНрдерд┐рддрд┐ рдЙрд╕ рдХреНрд░рд┐рдпрд╛ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддреА рддреЛ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░реЗрдВред
  • рдпрджрд┐ рд╡реИрдз рд╣реЛ, рддреЛ рдХреНрд░рд┐рдпрд╛ рд▓рд╛рдЧреВ рдХрд░реЗрдВ (verify, accept invite, рдпрд╛ sign in) рдФрд░ рдлрд┐рд░ token рдХреЛ consumed рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП used_at рд╕реЗрдЯ рдХрд░реЗрдВред
  • рд╕рд╛рдЗрди-рдЗрди рдХреЗ рд▓рд┐рдП session рдмрдирд╛рдПрдВ рдпрд╛ verify/invite рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрдкрд╖реНрдЯ done state рдмрдирд╛рдПрдВред

рджреЛ рд╕реНрдХреНрд░реАрди рдореЗрдВ рд╕реЗ рдПрдХ рд▓реМрдЯрд╛рдПрдБ: рд╕рдлрд▓рддрд╛, рдпрд╛ рдПрдХ recovery рд╕реНрдХреНрд░реАрди рдЬреЛ рдПрдХ рд╕реБрд░рдХреНрд╖рд┐рдд рдЕрдЧрд▓рд╛ рдХрджрдо рдСрдлрд░ рдХрд░реЗ (рдирдпрд╛ рд▓рд┐рдВрдХ рдЕрдиреБрд░реЛрдз рдХрд░реЗрдВ, рдЫреЛрдЯреЗ рдХреВрд▓рдбрд╛рдЙрди рдХреЗ рдмрд╛рдж рд░реА-рд╕реЗрдиреНрдб, рдпрд╛ рд╕рдкреЛрд░реНрдЯ рд╕реЗ рд╕рдВрдкрд░реНрдХ рдХрд░реЗрдВ)ред рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдЗрддрдиреЗ рд╡реНрдпрд╛рдкрдХ рди рд░рдЦреЗрдВ рдХрд┐ рдЖрдк рдпрд╣ рд▓реАрдХ рдХрд░ рджреЗрдВ рдХрд┐ рдИрдореЗрд▓ рдЖрдкрдХреЗ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдореМрдЬреВрдж рд╣реИ рдпрд╛ рдирд╣реАрдВред

рдЙрджрд╛рд╣рд░рдг рдкрд░рд┐рджреГрд╢реНрдп: рдЧреНрд░рд╛рд╣рдХ рдкреЛрд░реНрдЯрд▓ рдХреЗ рд▓рд┐рдП рдирд┐рдордВрддреНрд░рдг

рдПрдХ рдореИрдиреЗрдЬрд░ рдХрд┐рд╕реА рдареЗрдХреЗрджрд╛рд░ рдХреЛ рдЧреНрд░рд╛рд╣рдХ рдкреЛрд░реНрдЯрд▓ рдореЗрдВ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдЕрдкрд▓реЛрдб рдХрд░рдиреЗ рдФрд░ рдЬреЙрдм рд╕реНрдЯреЗрдЯрд╕ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдордВрддреНрд░рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИред рдареЗрдХреЗрджрд╛рд░ рдирд┐рдпрдорд┐рдд рдХрд░реНрдордЪрд╛рд░реА рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП invite рдХреЛ рдЙрдкрдпреЛрдЧ рдореЗрдВ рдЖрд╕рд╛рди рдкрд░ рдХрдард┐рди-рд╕реЗ-рдЧрд╝рд▓рдд рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрдард┐рди рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдПрдХ рднрд░реЛрд╕реЗрдордВрдж invite рдлреНрд▓реЛ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:

  • рдореИрдиреЗрдЬрд░ рдареЗрдХреЗрджрд╛рд░ рдХрд╛ рдИрдореЗрд▓ рдбрд╛рд▓рддрд╛ рд╣реИ рдФрд░ Send invite рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рддрд╛ рд╣реИред
  • рд╕рд┐рд╕реНрдЯрдо рдПрдХ single-use invite token рдмрдирд╛рддрд╛ рд╣реИ рдФрд░ рдЙрд╕ рдИрдореЗрд▓ рдФрд░ рдкреЛрд░реНрдЯрд▓ рдХреЗ рд▓рд┐рдП рдкреБрд░рд╛рдиреЗ invites рдХреЛ рдЕрдорд╛рдиреНрдп рдХрд░ рджреЗрддрд╛ рд╣реИред
  • рдИрдореЗрд▓ 72 рдШрдВрдЯреЗ рдХреА рдПрдХреНрд╕рдкрд╛рдпрд░реА рдХреЗ рд╕рд╛рде рднреЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИред
  • рдареЗрдХреЗрджрд╛рд░ рд▓рд┐рдВрдХ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рддрд╛ рд╣реИ, рдкрд╛рд╕рд╡рд░реНрдб рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ (рдпрд╛ рдПрдХ-рдмрд╛рд░ рдХреЛрдб рд╕реЗ рдкреБрд╖реНрдЯрд┐ рдХрд░рддрд╛ рд╣реИ), рдФрд░ рдЯреЛрдХрди рдХреЛ used рдорд╛рд░реНрдХ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
  • рдареЗрдХреЗрджрд╛рд░ рдкреЛрд░реНрдЯрд▓ рдореЗрдВ рдЙрддрд░рддрд╛ рд╣реИ рдФрд░ рдкрд╣рд▓реЗ рд╕реЗ рд╕рд╛рдЗрди рдЗрди рд╣реЛрддрд╛ рд╣реИред

рдпрджрд┐ рдареЗрдХреЗрджрд╛рд░ 72 рдШрдВрдЯреЗ рдХреЗ рдмрд╛рдж рдХреНрд▓рд┐рдХ рдХрд░реЗ, рддреЛ рдбрд░рд╛рд╡рдиреА рддреНрд░реБрдЯрд┐ рди рджрд┐рдЦрд╛рдПрдБред рджрд┐рдЦрд╛рдПрдБ "рдпрд╣ invite рдПрдХреНрд╕рдкрд╛рдпрд░ рд╣реЛ рдЪреБрдХрд╛ рд╣реИ" рдФрд░ рдПрдХ рд╕реНрдкрд╖реНрдЯ рдХрд╛рд░реНрд░рд╡рд╛рдИ рджреЗрдВ рдЬреЛ рдЖрдкрдХреА рдиреАрддрд┐ рд╕реЗ рдореЗрд▓ рдЦрд╛рддреА рд╣реЛ (рдирдпрд╛ invite рдЕрдиреБрд░реЛрдз рдХрд░реЗрдВ, рдпрд╛ рдореИрдиреЗрдЬрд░ рд╕реЗ рд░реА-рд╕реЗрдиреНрдб рдХрд░рдиреЗ рдХреЛ рдХрд╣реЗрдВ)ред

рджреВрд╕рд░рд╛ invite рднреЗрдЬрдиреЗ рдкрд░ рдкреБрд░рд╛рдиреЗ рдЯреЛрдХрди рдХреЛ рдЕрдорд╛рдиреНрдп рдХрд░рдирд╛ рдЗрд╕ рддрд░рд╣ рдХреА рдЙрд▓рдЭрди рд╕реЗ рдмрдЪрд╛рддрд╛ рд╣реИ рдХрд┐ "рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рдИрдореЗрд▓ рдкрд░ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛, рдЕрдм рджреВрд╕рд░рд╛ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИред" рдпрд╣ рдкреБрд░рд╛рдиреЗ рдлрд╝реЙрд░рд╡рд░реНрдб рдХрд┐рдП рдЧрдП рд▓рд┐рдВрдХ рд╕реЗ misuse рдХреА рд╡рд┐рдВрдбреЛ рднреА рд╕реАрдорд┐рдд рдХрд░рддрд╛ рд╣реИред

рд╕рдкреЛрд░реНрдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд░рд▓ send log рд░рдЦреЗрдВ: invite рдХрдм рдмрдирд╛рдпрд╛ рдЧрдпрд╛, рдХреНрдпрд╛ рдкреНрд░реЛрд╡рд╛рдЗрдбрд░ рдиреЗ рдИрдореЗрд▓ рд╕реНрд╡реАрдХрд╛рд░ рдХрд┐рдпрд╛, рдХреНрдпрд╛ рд▓рд┐рдВрдХ рдкрд░ рдХреНрд▓рд┐рдХ рд╣реБрдЖ, рдФрд░ рдХреНрдпрд╛ рд╡рд╣ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ред

рд╕рд╛рдорд╛рдиреНрдп рдЧрд▓рддрд┐рдпрд╛рдБ рдФрд░ рдЬрд╛рд▓ рдЬрд┐рдирд╕реЗ рдмрдЪреЗрдВ

Generate production-ready source code
Generate Go, Vue3, and native mobile code while staying no-code in AppMaster.
Try Builder

рдЬреНрдпрд╛рджрд╛рддрд░ рдЯреВрдЯреЗ рд╣реБрдП рдЯреНрд░рд╛рдВрдЬрд╝реИрдХреНрд╢рдирд▓ рдИрдореЗрд▓ рдлрд╝реНрд▓реЛ рдЙрдмрд╛рдК рдХрд╛рд░рдгреЛрдВ рд╕реЗ рдлреЗрд▓ рд╣реЛрддреЗ рд╣реИрдВ: рдПрдХ рд╢реЙрд░реНрдЯрдХрдЯ рдЬреЛ рдЯреЗрд╕реНрдЯ рдореЗрдВ рдареАрдХ рд▓рдЧрд╛ рдкрд░ рд╕реНрдХреЗрд▓ рдкрд░ рд╕рдкреЛрд░реНрдЯ рдЯрд┐рдХрдЯ рдмрди рдЧрдпрд╛ред

рдЗрди рдмрд╛рд░-рдмрд╛рд░ рд╣реЛрдиреЗ рд╡рд╛рд▓реА рд╕рдорд╕реНрдпрд╛рдУрдВ рд╕реЗ рдмрдЪреЗрдВ:

  • рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдпреЛрдЬрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╣реА рдЯреЛрдХрди рдХрд╛ рдкреБрди: рдЙрдкрдпреЛрдЧ (login vs verify vs invite)
  • рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдХрдЪреНрдЪреЗ рдЯреЛрдХрди рд╕реНрдЯреЛрд░ рдХрд░рдирд╛ред рдХреЗрд╡рд▓ рд╣реИрд╢ рд╕реНрдЯреЛрд░ рдХрд░реЗрдВ рдФрд░ рдХреНрд▓рд┐рдХ рдкрд░ рд╣реИрд╢ рдХреА рддреБрд▓рдирд╛ рдХрд░реЗрдВред
  • рдореИрдЬрд┐рдХ рд▓рд┐рдВрдХ рдХреЛ рджрд┐рдиреЛрдВ рддрдХ рдЬрд┐рдВрджрд╛ рд░рдЦрдирд╛ред рд▓рд╛рдЗрдлрдЯрд╛рдЗрдо рдЫреЛрдЯреЗ рд░рдЦреЗрдВ рдФрд░ рддрд╛рдЬрд╝рд╛ рд▓рд┐рдВрдХ рдЬрд╛рд░реА рдХрд░реЗрдВред
  • рдЕрд╕реАрдорд┐рдд рд░реА-рд╕реЗрдиреНрдб рдЬреЛ рдИрдореЗрд▓ рдкреНрд░реЛрд╡рд╛рдЗрдбрд░реЛрдВ рдХреЗ рд▓рд┐рдП рджреБрд░реБрдкрдпреЛрдЧ рдЬреИрд╕рд╛ рджрд┐рдЦреЗред
  • рд╕рдлрд▓рддрд╛ рдХреЗ рдмрд╛рдж рдЯреЛрдХрди рдХреЛ consume рди рдХрд░рдирд╛ред
  • рдЯреЛрдХрди рд╕реНрд╡реАрдХрд╛рд░ рдХрд░ рд▓реЗрдирд╛ рдмрд┐рдирд╛ рдкреНрд░рдпреЛрдЬрди, рдПрдХреНрд╕рдкрд╛рдпрд░реА, рдФрд░ рдЙрдкрдпреЛрдЧ рд╕реНрдерд┐рддрд┐ рдЬрд╛рдВрдЪреЗред

рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╡рд┐рдлрд▓рддрд╛ рд╣реИ "рдлреЛрди рдлрд┐рд░ рдбреЗрд╕реНрдХрдЯреЙрдк" рдХреНрд▓рд┐рдХред рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдлреЛрди рдкрд░ invite рдЯреИрдк рдХрд░рддрд╛ рд╣реИ, рдлрд┐рд░ рдмрд╛рдж рдореЗрдВ рдбреЗрд╕реНрдХрдЯреЙрдк рдкрд░ рдЙрд╕реА рдИрдореЗрд▓ рдкрд░ рдЯреИрдк рдХрд░рддрд╛ рд╣реИред рдЕрдЧрд░ рдЖрдк рдкрд╣рд▓реЗ рдЙрдкрдпреЛрдЧ рдкрд░ рдЯреЛрдХрди consume рдирд╣реАрдВ рдХрд░рддреЗ, рддреЛ рдЖрдк рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдЕрдХрд╛рдЙрдВрдЯ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рдПрдХреНрд╕реЗрд╕ рдХреЛ рдЧрд▓рдд рд╕рддреНрд░ рд╕реЗ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред

рддреНрд╡рд░рд┐рдд рдЪреЗрдХрд▓рд┐рд╕реНрдЯ рдФрд░ рдЕрдЧрд▓реЗ рдХрджрдо

рд╕рдкреЛрд░реНрдЯ рдорд╛рдирд╕рд┐рдХрддрд╛ рдХреЗ рд╕рд╛рде рдПрдХ рдЖрдЦрд┐рд░реА рдкрд╛рд╕ рдХрд░реЗрдВ: рдорд╛рди рд▓реЗрдВ рд▓реЛрдЧ рджреЗрд░ рд╕реЗ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВрдЧреЗ, рдИрдореЗрд▓ рдлреЙрд░рд╡рд░реНрдб рдХрд░реЗрдВрдЧреЗ, рд░реА-рд╕реЗрдиреНрдб рдкрд╛рдБрдЪ рдмрд╛рд░ рджрдмрд╛рдПрдБрдЧреЗ, рдФрд░ рдЬрдм рдХреБрдЫ рдирд╣реАрдВ рдЖрддрд╛ рддреЛ рдорджрдж рдорд╛рдБрдЧреЗрдВрдЧреЗред

рдЪреЗрдХрд▓рд┐рд╕реНрдЯ:

  • Tokens: рдЙрдЪреНрдЪ-рдПрдВрдЯреНрд░реЙрдкреА рд░реИрдВрдбрдо рд╡реИрд▓реНрдпреВ, single-purpose, рдХреЗрд╡рд▓ рд╣реИрд╢ рд╕реНрдЯреЛрд░ рдХрд░реЗрдВ, рдПрдХ-рдмрд╛рд░ рдЙрдкрдпреЛрдЧред
  • Expiry rules: рдлрд╝реНрд▓реЛ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЕрд▓рдЧ рдПрдХреНрд╕рдкрд╛рдпрд░реА, рдФрд░ рдПрдХреНрд╕рдкрд╛рдпрд░реНрдб рд▓рд┐рдВрдХ рдХреЗ рд▓рд┐рдП рд╕реНрдкрд╖реНрдЯ recovery pathред
  • Resends and rate limits: рдЫреЛрдЯреЗ рдХреВрд▓рдбрд╛рдЙрди, рджреИрдирд┐рдХ рдХреИрдк, IP рдФрд░ рдИрдореЗрд▓ рдкрддреЗ рджреНрд╡рд╛рд░рд╛ рд╕реАрдорд╛рдПрдБред
  • Deliverability basics: SPF/DKIM/DMARC рд╕реЗрдЯрдЕрдк, рдмрд╛рдЙрдВрд╕/рдмреНрд▓реЙрдХреНрд╕/рд╢рд┐рдХрд╛рдпрддреЛрдВ рдХреЛ рдЯреНрд░реИрдХ рдХрд░реЗрдВред
  • Observability: рд╕реЗрдВрдб рд▓реЙрдЧреНрд╕ рдФрд░ рдЯреЛрдХрди-рдЙрдкрдпреЛрдЧ рд▓реЙрдЧреНрд╕ (created, sent, clicked, redeemed, failed reason)ред

рдЕрдЧрд▓реЗ рдХрджрдо:

  1. рдХрдо рд╕реЗ рдХрдо рддреАрди рдореЗрд▓рдмреЙрдХреНрд╕ рдкреНрд░реЛрд╡рд╛рдЗрдбрд░реЛрдВ рдФрд░ рдореЛрдмрд╛рдЗрд▓ рдкрд░ end-to-end рдЯреЗрд╕реНрдЯ рдХрд░реЗрдВред
  2. рдЕрдирд╣реИрдкреНрдкреА рдкрд╛рдереНрд╕ рдЯреЗрд╕реНрдЯ рдХрд░реЗрдВ: рдПрдХреНрд╕рдкрд╛рдпрд░реНрдб рдЯреЛрдХрди, рдкрд╣рд▓реЗ-рд╕реЗ-рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЯреЛрдХрди, рдЬрд╝реНрдпрд╛рджрд╛-рд░реА-рд╕реЗрдиреНрдб, рдЧрд▓рдд рдИрдореЗрд▓, рдлреЙрд░рд╡рд░реНрдб рдХрд┐рдпрд╛ рд╣реБрдЖ рдИрдореЗрд▓ред
  3. рдПрдХ рдЫреЛрдЯрд╛ рд╕рдкреЛрд░реНрдЯ рдкреНрд▓реЗрдмреБрдХ рд▓рд┐рдЦреЗрдВ: рд▓реЙрдЧ рдХрд╣рд╛рдБ рджреЗрдЦрдирд╛ рд╣реИ, рдХреНрдпрд╛ рд░реА-рд╕реЗрдиреНрдб рдХрд░рдирд╛ рд╣реИ, рдХрдм рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реЗ рдлрд╝рд┐рд▓реНрдЯрд░ рдЪреЗрдХ рдХрд░рдиреЗ рдХреЛ рдХрд╣реЗрдВред

рдпрджрд┐ рдЖрдк AppMaster (appmaster.io) рдореЗрдВ рдпреЗ рдлрд╝реНрд▓реЛ рдмрдирд╛ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдЖрдк Data Designer рдореЗрдВ рдЯреЛрдХрди рдФрд░ send logs рдореЙрдбрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдПрдХ рд╣реА Business Process рдореЗрдВ рдПрдХ-рдмрд╛рд░ рдЙрдкрдпреЛрдЧ, рдПрдХреНрд╕рдкрд╛рдпрд░реА рдФрд░ рд░реЗрдЯ рд▓рд┐рдорд┐рдЯ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдлреНрд▓реЛ рд╕реНрдерд┐рд░ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рдПрдХ рдЫреЛрдЯрд╛ рдкрд╛рдпрд▓рдЯ рдЪрд▓рд╛рдПрдБ рдФрд░ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЕрдкрдиреА рдХреЙрдкреА рдФрд░ рд╕реАрдорд╛рдУрдВ рдХреЛ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░реЗрдВред

рд╕рд╛рдорд╛рдиреНрдп рдкреНрд░рд╢реНрди

Why do verification and magic links fail even when email sending is working?

рдЬрд╝реНрдпрд╛рджрд╛рддрд░ рд╡рд┐рдлрд▓рддрд╛рдПрдБ рдЙрд╕ рд╕рд╛рдорд╛рдиреНрдп рд╡реНрдпрд╡рд╣рд╛рд░ рд╕реЗ рдЖрддреА рд╣реИрдВ рдЬрд┐рд╕рдХрд╛ рдЖрдкрдХрд╛ рдлрд╝реНрд▓реЛ рдЕрдиреБрдорд╛рди рдирд╣реАрдВ рд▓рдЧрд╛рддрд╛: рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджреЛ рдмрд╛рд░ рдХреНрд▓рд┐рдХ рдХрд░ рджреЗрддреЗ рд╣реИрдВ, рдИрдореЗрд▓ рджреВрд╕рд░реА рдбрд┐рд╡рд╛рдЗрд╕ рдкрд░ рдЦреЛрд▓рддреЗ рд╣реИрдВ, рдШрдВрдЯреЛрдВ рдмрд╛рдж рд╡рд╛рдкрд╕ рдЖрддреЗ рд╣реИрдВ, рдпрд╛ рд░реА-рд╕реЗрдиреНрдб рдХреЗ рдмрд╛рдж рдкреБрд░рд╛рдирд╛ рд╕рдВрджреЗрд╢ рдЙрдкрдпреЛрдЧ рдХрд░ рджреЗрддреЗ рд╣реИрдВред рдпрджрд┐ рдЖрдкрдХреА рд╕рд┐рд╕реНрдЯрдо тАЬрдкрд╣рд▓реЗ рд╕реЗ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛тАЭ, тАЬрдкрд╣рд▓реЗ рд╕реЗ рд╕рддреНрдпрд╛рдкрд┐рддтАЭ, рдФрд░ тАЬрд╕рдорд╛рдкреНрддтАЭ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рд╕рд╛рдлрд╝-рд╕рд╛рдлрд╝ рд╣реИрдВрдбрд▓ рдирд╣реАрдВ рдХрд░рддреА, рддреЛ рдЫреЛрдЯреА рдХрд┐рдирд╛рд░реЛрдВ рдХреА рд╕реНрдерд┐рддрд┐рдпрд╛рдБ рдмрдбрд╝реЗ рд╕рдкреЛрд░реНрдЯ рдЯрд┐рдХрдЯ рдмрди рдЬрд╛рддреА рд╣реИрдВред

What expiration times should I use for magic links, verification, and invites?

рдЬреЛрдЦрд┐рдо рд╡рд╛рд▓реЗ рдХрд╛рдореЛрдВ рдХреЗ рд▓рд┐рдП рдЫреЛрдЯреА рдЕрд╡рдзрд┐ рдФрд░ рдХрдо рдЬреЛрдЦрд┐рдо рдХреЗ рд▓рд┐рдП рд▓рдВрдмреА рдЕрд╡рдзрд┐ рд░рдЦреЗрдВред рдПрдХ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдбрд┐рдлрд╝реЙрд▓реНрдЯ: рдореИрдЬрд┐рдХ рд╕рд╛рдЗрди-рдЗрди рд▓рд┐рдВрдХ рдХреЗ рд▓рд┐рдП 10тАУ20 рдорд┐рдирдЯ, рдкрд╛рд╕рд╡рд░реНрдб рд░реАрд╕реЗрдЯ рдХреЗ рд▓рд┐рдП 30тАУ60 рдорд┐рдирдЯ, рдирдП рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдИрдореЗрд▓ рд╕рддреНрдпрд╛рдкрди рдХреЗ рд▓рд┐рдП 24тАУ72 рдШрдВрдЯреЗ, рдФрд░ рдирд┐рдордВрддреНрд░рдг рдХреЗ рд▓рд┐рдП 1тАУ7 рджрд┐рди; рдлрд┐рд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдУрдВ рдФрд░ рдЖрдкрдХреЗ рдЬреЛрдЦрд┐рдо рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░реЗрдВред

How do I handle users clicking the same link multiple times?

рдЯреЛрдХрди рдХреЛ рдПрдХ-рдмрд╛рд░ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдмрдирд╛рдЗрдП рдФрд░ рд╕рдлрд▓рддрд╛ рдкрд░ рдПрдЯреЙрдорд┐рдХ рддрд░реАрдХреЗ рд╕реЗconsume рдХрд░реЗрдВ, рдлрд┐рд░ рдмрд╛рдж рдХреЗ рдХреНрд▓рд┐рдХ рдХреЛ рд╕рд╛рдорд╛рдиреНрдп, рд╕реБрд░рдХреНрд╖рд┐рдд рд╕реНрдерд┐рддрд┐ рдорд╛рдиреЗрдВред рддреНрд░реБрдЯрд┐ рджрд┐рдЦрд╛рдиреЗ рдХреА рдмрдЬрд╛рдп рд╕реНрдкрд╖реНрдЯ рд╕рдВрджреЗрд╢ рджреЗрдВ рдЬреИрд╕реЗ тАЬрдпрд╣ рд▓рд┐рдВрдХ рдкрд╣рд▓реЗ рдЗрд╕реНрддреЗрдорд╛рд▓ рд╣реЛ рдЪреБрдХрд╛ рд╣реИтАЭ рдФрд░ рд╡реНрдпрдХреНрддрд┐ рдХреЛ рд╕рд╛рдЗрди рдЗрди рдпрд╛ рдЖрдЧреЗ рдмрдврд╝рдиреЗ рдХрд╛ рд░рд╛рд╕реНрддрд╛ рджрд┐рдЦрд╛рдЗрдП, рддрд╛рдХрд┐ рдбрдмрд▓-рдХреНрд▓рд┐рдХ рдФрд░ рдХрдИ рдЯреИрдм рдЕрдиреБрднрд╡ рдХреЛ рдирд╣реАрдВ рддреЛрдбрд╝реЗрдВред

What should a token contain, and what should I avoid putting in the URL?

рдкреНрд░рддреНрдпреЗрдХ рдЙрджреНрджреЗрд╢реНрдп рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ рдЯреЛрдХрди рдмрдирд╛рдЗрдП рдФрд░ рдЬрд╣рд╛рдБ рддрдХ рд╕рдВрднрд╡ рд╣реЛ рдЙрдиреНрд╣реЗрдВ opaque рд░рдЦреЗрдВред рд▓рдВрдмрд╛ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдорд╛рди рдЬрдирд░реЗрдЯ рдХрд░реЗрдВ, рдХреЗрд╡рд▓ рдЙрд╕рдХрд╛ рд╣реИрд╢ рд╕рд░реНрд╡рд░-рд╕рд╛рдЗрдб рд░рдЦреЗрдВ, рдФрд░ рд░рд┐рдХреЙрд░реНрдб рдореЗрдВ purpose рдФрд░ expiry рд░рдЦреЗрдВ; URL рдореЗрдВ рдИрдореЗрд▓, user ID, рд░реЛрд▓ рдпрд╛ рдРрд╕рд╛ рдХреБрдЫ рди рдбрд╛рд▓реЗрдВ рдЬреЛ рдкрд╣рдЪрд╛рди рджреЗрддрд╛ рд╣реЛ, рдХреНрдпреЛрдВрдХрд┐ рд▓рд┐рдВрдХ рдХреЙрдкреА, рд▓реЙрдЧ рдФрд░ рдлрд╝реЙрд░рд╡рд░реНрдб рд╣реЛрддреЗ рд╣реИрдВред

Should I use opaque tokens or signed tokens for email links?

Opaque рдЯреЛрдХрди рдЕрдХреНрд╕рд░ рд╕рдмрд╕реЗ рд╕рд░рд▓ рд╣реЛрддреЗ рд╣реИрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ revoke рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЖрдк рдЙрдиреНрд╣реЗрдВ рдЕрдкрдиреЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдЦреЛрдЬрдХрд░ рдЕрд╡реИрдз рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред Signed рдЯреЛрдХрди DB lookup рдШрдЯрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдкрд░ рд╡реЗ key management, рдХрдбрд╝рд╛рдИ рд╕реЗ validation рдФрд░ revoked рдХрд░рдиреЗ рдХреА рдХрдард┐рдирд╛рдЗрдпрд╛рдБ рд▓рд╛рддреЗ рд╣реИрдВ; рдЕрдзрд┐рдХрд╛рдВрд╢ verification, invite рдФрд░ magic-link рдлрд╝реНрд▓реЛ рдХреЗ рд▓рд┐рдП opaque рдЯреЛрдХрди рд╕рд┐рд╕реНрдЯрдо рдХреЛ рд╕рдордЭрдиреЗ рдореЗрдВ рдЖрд╕рд╛рди рд░рдЦрддреЗ рд╣реИрдВред

Why should I store only a hash of the token instead of the raw token?

рдпрджрд┐ рдЖрдкрдХрд╛ рдбреЗрдЯрд╛рдмреЗрд╕ рд▓реАрдХ рд╣реЛ рдЬрд╛рдП рддреЛ рдХреЗрд╡рд▓ рд╣реИрд╢ рд╕реНрдЯреЛрд░ рдХрд░рдиреЗ рд╕реЗ рдиреБрдХрд╕рд╛рди рдХрдо рд╣реЛрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╣рдорд▓рд╛рд╡рд░ рдХрдЪреНрдЪреЗ рдЯреЛрдХрди рдХреЛ рдХреЙрдкреА рдХрд░рдХреЗ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рдкрд╛рдПрдВрдЧреЗред lookup рдХреЗ рд▓рд┐рдП рддреЗрдЬрд╝ рд╣реИрд╢ (рдЙрджрд╛. keyed hash) рдпрд╛ рд╕реБрд░рдХреНрд╖рд┐рдд one-way рд╣реИрд╢ рдХрд╛ рдкреНрд░рдпреЛрдЧ рдХрд░реЗрдВ, рдлрд┐рд░ рдХреНрд▓рд┐рдХ рдкрд░ рд╣реИрд╢ рдХреА рддреБрд▓рдирд╛ рдХрд░рдХреЗ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░реЗрдВ рдФрд░expired/used/revoked рдЪреАрдЬрд╝реЛрдВ рдХреЛ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░реЗрдВред

How do I add resend limits without annoying real users?

рдПрдХ рдЫреЛрдЯрд╛ cooldown рдФрд░ рджреИрдирд┐рдХ рдХреИрдк рд╕реЗ рд╢реБрд░реБрдЖрдд рдХрд░реЗрдВ рдЬреЛ рд╕рд╛рдорд╛рдиреНрдп рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рд▓рдЧрднрдЧ рдХрднреА рдкреНрд░рднрд╛рд╡рд┐рдд рди рдХрд░реЗ рдкрд░ рдмрд╛рд░-рдмрд╛рд░ рджреБрд░реБрдкрдпреЛрдЧ рдХреЛ рдмреНрд▓реЙрдХ рдХрд░реЗред рдЬрдм рдХреЛрдИ рд▓рд┐рдорд┐рдЯ рдЯреНрд░рд┐рдЧрд░ рд╣реЛ, рддреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдареАрдХ-рдареАрдХ рдмрддрд╛рдЗрдП рдХреНрдпрд╛ рд╣реБрдЖ рдФрд░ рдЕрдЧрд▓рд╛ рдХрджрдо рдХреНрдпрд╛ рд╣реИ тАФ рдЬреИрд╕реЗ рдПрдХ рдорд┐рдирдЯ рдЗрдВрддрдЬрд╝рд╛рд░ рдХрд░реЗрдВ, рд╕реНрдкреИрдо рдлрд╝реЛрд▓реНрдбрд░ рдЪреЗрдХ рдХрд░реЗрдВ, рдпрд╛ рдкрддрд╛ рд╕рд╣реА рд╣реЛрдиреЗ рдХреА рдкреБрд╖реНрдЯрд┐ рдХрд░реЗрдВ тАФ рди рдХрд┐ рдмрдЯрди рдХреЛ рдЪреБрдкрдЪрд╛рдк рдирд┐рд╖реНрдХреНрд░рд┐рдп рдХрд░ рджреЗрдВ рдпрд╛ рд╕рд╛рдорд╛рдиреНрдп рддреНрд░реБрдЯрд┐ рджрд┐рдЦрд╛рдПрдБред

What should I log to debug тАЬthe email never arrivedтАЭ reports?

рд╣рд░ рднреЗрдЬреА рдЧрдИ рдИрдореЗрд▓ рдХреЛ рдПрдХ рд╕реНрдкрд╖реНрдЯ рдЙрджреНрджреЗрд╢реНрдп, рдЯреЗрдореНрдкрд▓реЗрдЯ рд╡рд░реНрд╢рди, provider message ID рдФрд░ provider response status рдХреЗ рд╕рд╛рде рд▓реЙрдЧ рдХрд░реЗрдВ, рдлрд┐рд░ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рдЕрд▓рдЧ рдмрдХреЗрдЯ рдореЗрдВ рд░рдЦреЗрдВ рдЬреИрд╕реЗ bounce, block, complaint рдФрд░ suppressionред рдЗрд╕рд╕реЗ рд╕рдкреЛрд░реНрдЯ рдпрд╣ рдмрддрд╛ рдкрд╛рдПрдЧрд╛ рдХрд┐ тАЬрдХреНрдпрд╛ рднреЗрдЬрд╛ рдЧрдпрд╛ рдерд╛тАЭ, тАЬрдХреНрдпрд╛ provider рдиреЗ рд╕реНрд╡реАрдХрд╛рд░ рдХрд┐рдпрд╛тАЭ, рдФрд░ тАЬрдХреНрдпрд╛ рд╣рдо рдЗрд╕ рдкрддреЗ рдХреЛ suppress рдХрд░ рд░рд╣реЗ рд╣реИрдВтАЭ, рдмрдЬрд╛рдп рдпрд╣ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдиреЗ рдХреЗ рдХрд┐ рд╕рдВрджреЗрд╢ рдХрд╣рд╛рдБ рдЧрдпрд╛ред

What user states do I need for reliable verification and invite flows?

рдпреВрдЬрд╝рд░ рд╕реНрдЯреЗрдЯреНрд╕ рдХреЛ рдЫреЛрдЯрд╛ рдФрд░ рд╕реНрдкрд╖реНрдЯ рд░рдЦреЗрдВ, рдФрд░ рдПрдХ рд╕рдлрд▓ рдХреНрд▓рд┐рдХ рдХреЗ рдмрд╛рдж рдареАрдХ-рдареАрдХ рдХреНрдпрд╛ рдмрджрд▓рддрд╛ рд╣реИ рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рддрдп рдХрд░ рд▓реЗрдВред рдЖрдкрдХрд╛ рд╣реИрдВрдбрд▓рд░ рдЯреЛрдХрди рдХреЗ purpose, expiry рдФрд░ used status рдХреЛ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░реЗ, рдлрд┐рд░ рд╕рд┐рд░реНрдлрд╝ рдПрдХ state change рд▓рд╛рдЧреВ рдХрд░реЗ; рдпрджрд┐ рд╕реНрдЯреЗрдЯ рдкрд╣рд▓реЗ рд╕реЗ рдкреВрд░рд╛ рд╣реИ, рддреЛ рдореИрддреНрд░реАрдкреВрд░реНрдг рдкреБрд╖реНрдЯрд┐ рджрд┐рдЦрд╛рдЗрдП рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдЖрдЧреЗ рдмрдврд╝рд╛рдЗрдП рдмрдЬрд╛рдп рдлреНрд▓реЛ рдХреЛ рдлрд╝реИрд▓ рдХрд░рдиреЗ рдХреЗред

How can I implement these flows in AppMaster without writing custom backend code?

Tokens рдФрд░ send logs рдХреЛ рдЕрд▓рдЧ рдЯреЗрдмрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдореЙрдбрд▓ рдХрд░реЗрдВ, рдлрд┐рд░ generation, validation, consumption, expiry checks рдФрд░ rate limits рдХреЛ рдПрдХ Business Process рдХреЗ рдЕрдВрджрд░ рд▓рд╛рдЧреВ рдХрд░реЗрдВ рддрд╛рдХрд┐ verification, invites рдФрд░ magic links рдореЗрдВ рд╡реНрдпрд╡рд╣рд╛рд░ рд╕реБрд╕рдВрдЧрдд рд░рд╣реЗред рдЗрд╕рд╕реЗ рдХреНрд▓рд┐рдХ рдПрдХ рдПрдЯреЙрдорд┐рдХ рдПрдХреНрд╢рди рдмрдирддрд╛ рд╣реИтАФрдЖрдк session рдмрдирд╛рдпреЗ рдмрд┐рдирд╛ token consume рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ рдФрд░ рди рд╣реА token consume рдХрд┐рдпреЗ рдмрд┐рдирд╛ intended state change рдХрд░реЗрдВрдЧреЗред

рд╢реБрд░реВ рдХрд░рдирд╛ рдЖрд╕рд╛рди
рдХреБрдЫ рдмрдирд╛рдПрдВ рдЕрджреНрднреБрдд

рдлреНрд░реА рдкреНрд▓рд╛рди рдХреЗ рд╕рд╛рде рдРрдкрдорд╛рд╕реНрдЯрд░ рдХреЗ рд╕рд╛рде рдкреНрд░рдпреЛрдЧ рдХрд░реЗрдВред
рдЬрдм рдЖрдк рддреИрдпрд╛рд░ рд╣реЛрдВрдЧреЗ рддрдм рдЖрдк рдЙрдЪрд┐рдд рд╕рджрд╕реНрдпрддрд╛ рдЪреБрди рд╕рдХрддреЗ рд╣реИрдВред

рд╢реБрд░реВ рд╣реЛ рдЬрд╛рдУ
рдЯреНрд░рд╛рдВрдЬрд╝реИрдХреНрд╢рдирд▓ рдИрдореЗрд▓ рдлрд╝реНрд▓реЛ рдЬреЛ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ: рдЯреЛрдХрди, рд╕реАрдорд╛рдПрдБ, рдбрд┐рд▓рд┐рд╡рд░реА | AppMaster