Пример #1
0
        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);
        }
Пример #2
0
        // 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);
        }