@@ -35,7 +35,7 @@ public IActionResult Index()
35
35
[ HttpGet ]
36
36
public IActionResult Login ( string provider , string returnUrl = null )
37
37
{
38
- var redirectUrl = "/ExternalAccount/ Callback";
38
+ var redirectUrl = Url . Action ( " Callback", "ExternalAccount" ) ;
39
39
var properties = _signInManager . ConfigureExternalAuthenticationProperties ( provider , redirectUrl ) ;
40
40
return new ChallengeResult ( provider , properties ) ;
41
41
}
@@ -46,7 +46,6 @@ public async Task<IActionResult> Callback(string returnUrl = null, string remote
46
46
returnUrl = returnUrl ?? Url . Content ( "~/" ) ;
47
47
if ( remoteError != null )
48
48
{
49
- //ErrorMessage = $"Error from external provider: {remoteError}";
50
49
return RedirectToPage ( "./" , new { ReturnUrl = returnUrl } ) ;
51
50
}
52
51
@@ -64,40 +63,24 @@ public async Task<IActionResult> Callback(string returnUrl = null, string remote
64
63
return LocalRedirect ( returnUrl ) ;
65
64
}
66
65
67
-
68
- // If the user does not have an account, create one.
69
66
var userEmail = info . Principal . FindFirstValue ( ClaimTypes . Email ) ;
70
67
71
- var user = new IdentityUser { Id = Guid . NewGuid ( ) . ToString ( ) , UserName = userEmail , Email = userEmail } ;
72
-
73
68
var userDb = await _userManager . FindByEmailAsync ( userEmail ) ;
74
69
75
70
if ( userDb != null )
76
71
{
77
- var emailConfirmed = await _userManager . IsEmailConfirmedAsync ( userDb ) ;
78
-
79
- if ( ! result . IsNotAllowed )
80
- {
81
- var newLoginResult = await _userManager . AddLoginAsync ( userDb , info ) ;
82
- if ( newLoginResult . Succeeded )
83
- {
84
- // Check Email Confirmation
85
- if ( emailConfirmed )
86
- {
87
- await _signInManager . SignInAsync ( userDb , isPersistent : false ) ;
88
- return LocalRedirect (
89
- $ "{ returnUrl } ?message={ info . ProviderDisplayName } has been added successfully") ;
90
- }
91
-
92
- return LocalRedirect (
93
- $ "{ returnUrl } ?message={ info . ProviderDisplayName } has been added but email confirmation is pending") ;
94
- }
95
- }
96
- else
72
+ if ( ! userDb . EmailConfirmed )
97
73
{
98
- return LocalRedirect (
99
- $ " { returnUrl } ?message=Email ( { user . Email } ) confirmation is pending&type=danger" ) ;
74
+ var code = await _userManager . GenerateEmailConfirmationTokenAsync ( userDb ) ;
75
+ await _userManager . ConfirmEmailAsync ( userDb , code ) ;
100
76
}
77
+
78
+ // Add the external provider
79
+ await _userManager . AddLoginAsync ( userDb , info ) ;
80
+
81
+ await _signInManager . SignInAsync ( userDb , isPersistent : false ) ;
82
+ return LocalRedirect (
83
+ $ "{ returnUrl } ?message={ info . ProviderDisplayName } has been added successfully") ;
101
84
}
102
85
103
86
return LocalRedirect ( $ "/register?associate={ userEmail } &loginProvider={ info . LoginProvider } &providerDisplayName={ info . ProviderDisplayName } &providerKey={ info . ProviderKey } ") ;
0 commit comments