@@ -27,13 +27,24 @@ public override void Configure()
2727 public override async Task < Results < Ok , ProblemHttpResult > > ExecuteAsync ( Request request , CancellationToken ct )
2828 {
2929 var user = await userManager . FindByEmailAsync ( request . Email . Trim ( ) ) ;
30- if ( user is null || ! await userManager . IsEmailConfirmedAsync ( user ) )
30+ if ( user is null )
3131 {
3232 logger . LogWarning ( "Possible user enumeration. Unknown email received {email}" , request . Email ) ;
3333 // Don't reveal that the user does not exist or is not confirmed
3434 return TypedResults . Ok ( ) ;
3535 }
3636
37+ var mail = await userManager . IsEmailConfirmedAsync ( user )
38+ ? await GetResetPasswordEmail ( user )
39+ : GetAcceptInviteEmail ( user ) ;
40+
41+ jobService . EnqueueSendEmail ( request . Email , mail . Subject , mail . Body ) ;
42+
43+ return TypedResults . Ok ( ) ;
44+ }
45+
46+ private async Task < EmailModel > GetResetPasswordEmail ( ApplicationUser user )
47+ {
3748 // For more information on how to enable account confirmation and password reset please
3849 // visit https://go.microsoft.com/fwlink/?LinkID=532713
3950 var code = await userManager . GeneratePasswordResetTokenAsync ( user ) ;
@@ -45,8 +56,21 @@ public override async Task<Results<Ok, ProblemHttpResult>> ExecuteAsync(Request
4556 var emailProps = new ResetPasswordEmailProps ( FullName : user . DisplayName , CdnUrl : _apiConfig . WebAppUrl , ResetPasswordUrl : passwordResetUrl ) ;
4657 var mail = emailFactory . GenerateResetPasswordEmail ( emailProps ) ;
4758
48- jobService . EnqueueSendEmail ( request . Email , mail . Subject , mail . Body ) ;
59+ return mail ;
60+ }
4961
50- return TypedResults . Ok ( ) ;
62+ private EmailModel GetAcceptInviteEmail ( ApplicationUser user )
63+ {
64+ var endpointUri = new Uri ( Path . Combine ( $ "{ _apiConfig . WebAppUrl } ", "accept-invite" ) ) ;
65+ string acceptInviteUrl =
66+ QueryHelpers . AddQueryString ( endpointUri . ToString ( ) , "invitationToken" , user . InvitationToken ) ;
67+
68+ var confirmEmailProps = new ConfirmEmailProps (
69+ CdnUrl : _apiConfig . WebAppUrl ,
70+ FullName : user . DisplayName ,
71+ ConfirmUrl : acceptInviteUrl ) ;
72+
73+ var mail = emailFactory . GenerateConfirmAccountEmail ( confirmEmailProps ) ;
74+ return mail ;
5175 }
5276}
0 commit comments