protected virtual async Task <SiteUser> CreateUserFromExternalLogin( ExternalLoginInfo externalLoginInfo, string providedEmail = null, bool?didAcceptTerms = null ) { var email = providedEmail; if (string.IsNullOrWhiteSpace(email)) { email = externalLoginInfo.Principal.FindFirstValue(ClaimTypes.Email); if (string.IsNullOrWhiteSpace(email)) { email = externalLoginInfo.Principal.FindFirstValue("email"); } } DateTime?termsAcceptedDate = null; if (didAcceptTerms == true && !string.IsNullOrWhiteSpace(_userManager.Site.RegistrationAgreement)) { termsAcceptedDate = DateTime.UtcNow; } if (!string.IsNullOrWhiteSpace(email) && email.Contains("@")) { var userName = await _userManager.SuggestLoginNameFromEmail(_userManager.Site.Id, email); var newUser = new SiteUser { SiteId = _userManager.Site.Id, UserName = userName, Email = email, FirstName = externalLoginInfo.Principal.FindFirstValue(ClaimTypes.GivenName), LastName = externalLoginInfo.Principal.FindFirstValue(ClaimTypes.Surname), AccountApproved = _userManager.Site.RequireApprovalBeforeLogin ? false : true, EmailConfirmed = _socialAuthEmailVerificationPolicy.HasVerifiedEmail(externalLoginInfo), AgreementAcceptedUtc = termsAcceptedDate, LastLoginUtc = DateTime.UtcNow }; //https://github.com/joeaudette/cloudscribe/issues/346 newUser.DisplayName = _displayNameResolver.ResolveDisplayName(newUser); var identityResult = await _userManager.CreateAsync(newUser); if (identityResult.Succeeded) { identityResult = await _userManager.AddLoginAsync(newUser, externalLoginInfo); return(newUser); } } return(null); }
// private ILogger log; private async Task <SiteUser> CreateUserFromExternalLogin( ExternalLoginInfo externalLoginInfo, string providedEmail = null, bool?didAcceptTerms = null ) { var email = providedEmail; if (string.IsNullOrWhiteSpace(email)) { email = externalLoginInfo.Principal.FindFirstValue(ClaimTypes.Email); } DateTime?termsAcceptedDate = null; if (didAcceptTerms == true && !string.IsNullOrWhiteSpace(userManager.Site.RegistrationAgreement)) { termsAcceptedDate = DateTime.UtcNow; } if (!string.IsNullOrWhiteSpace(email) && email.Contains("@")) { var userName = await userManager.SuggestLoginNameFromEmail(userManager.Site.Id, email); var newUser = new SiteUser { SiteId = userManager.Site.Id, UserName = userName, Email = email, DisplayName = email.Substring(0, email.IndexOf("@")), FirstName = externalLoginInfo.Principal.FindFirstValue(ClaimTypes.GivenName), LastName = externalLoginInfo.Principal.FindFirstValue(ClaimTypes.Surname), AccountApproved = userManager.Site.RequireApprovalBeforeLogin ? false : true, EmailConfirmed = socialAuthEmailVerificationPolicy.HasVerifiedEmail(externalLoginInfo), AgreementAcceptedUtc = termsAcceptedDate, LastLoginUtc = DateTime.UtcNow }; var identityResult = await userManager.CreateAsync(newUser); if (identityResult.Succeeded) { identityResult = await userManager.AddLoginAsync(newUser, externalLoginInfo); return(newUser); } } return(null); }