33using System . Text ;
44using System . Text . Encodings . Web ;
55using EssentialCSharp . Web . Areas . Identity . Data ;
6+ using EssentialCSharp . Web . Services . Referrals ;
67using Microsoft . AspNetCore . Authorization ;
78using Microsoft . AspNetCore . Identity ;
89using Microsoft . AspNetCore . Identity . UI . Services ;
@@ -19,7 +20,8 @@ public class ExternalLoginModel(
1920 IUserStore < EssentialCSharpWebUser > userStore ,
2021 ILogger < ExternalLoginModel > logger ,
2122 IEmailSender emailSender ,
22- IUserEmailStore < EssentialCSharpWebUser > emailStore ) : PageModel
23+ IUserEmailStore < EssentialCSharpWebUser > emailStore ,
24+ IReferralService referralService ) : PageModel
2325{
2426 private InputModel ? _Input ;
2527 [ BindProperty ]
@@ -73,6 +75,12 @@ public async Task<IActionResult> OnGetCallbackAsync(string? returnUrl = null, st
7375 if ( result . Succeeded )
7476 {
7577 logger . LogInformation ( "{Name} logged in with {LoginProvider} provider." , info . Principal . Identity ? . Name , info . LoginProvider ) ;
78+ // Ensure referral ID is set for the user
79+ var user = await userManager . FindByLoginAsync ( info . LoginProvider , info . ProviderKey ) ;
80+ if ( user != null )
81+ {
82+ await referralService . EnsureReferralIdAsync ( user ) ;
83+ }
7684 return LocalRedirect ( returnUrl ) ;
7785 }
7886 if ( result . IsLockedOut )
0 commit comments