Add initial password setup functionality: implement email sending for new account password setup and update user interface to include password setup button
Co-authored-by: Copilot <copilot@github.com>
This commit is contained in:
@@ -212,6 +212,34 @@ namespace FoodsharingSiegen.Server.Auth
|
||||
|
||||
#region Password Recovery
|
||||
|
||||
public async Task InitiateInitialPasswordSetup(string email, string baseUri)
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(email)) return;
|
||||
|
||||
var user = await Context.Users!.FirstOrDefaultAsync(x => x.Mail.ToLower() == email.ToLower());
|
||||
if (user == null) return; // Do not leak existence
|
||||
|
||||
var resetToken = Guid.NewGuid().ToString("N");
|
||||
user.ResetToken = resetToken;
|
||||
user.ResetTokenExpiry = DateTime.UtcNow.AddDays(7);
|
||||
|
||||
await Context.SaveChangesAsync();
|
||||
|
||||
var resetLink = $"{baseUri.TrimEnd('/')}/reset-password/{resetToken}";
|
||||
var mailBody = $"""
|
||||
Hallo {user.Name},<br>
|
||||
<br>
|
||||
für dich wurde ein neues Konto bei {_appSettings.Terms.Title} erstellt. <br>
|
||||
<br>
|
||||
Um dein Passwort festzulegen, klicke bitte auf den folgenden Link (dieser ist 7 Tage gültig):<br>
|
||||
<a href='{resetLink}'>{resetLink}</a><br>
|
||||
<br>
|
||||
Viele Grüße<br>Dein Team {_appSettings.Terms.Title}
|
||||
""";
|
||||
|
||||
await _mailService.SendEmailAsync(user.Mail, "Passwort festlegen", mailBody);
|
||||
}
|
||||
|
||||
public async Task InitiatePasswordReset(string email, string baseUri)
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(email)) return;
|
||||
|
||||
Reference in New Issue
Block a user