Ejemplo n.º 1
0
        public virtual async Task <IdentityUser> CreateUserAsync(string userName, string providerName)
        {
            await IdentityOptions.SetAsync();

            var externalUser = await GetUserInfoAsync(userName);

            NormalizeExternalLoginUserInfo(externalUser, userName);

            var user = new IdentityUser(
                GuidGenerator.Create(),
                userName,
                externalUser.Email,
                tenantId: CurrentTenant.Id
                );

            user.Name    = externalUser.Name;
            user.Surname = externalUser.Surname;

            user.IsExternal = true;

            user.SetEmailConfirmed(externalUser.EmailConfirmed ?? false);
            user.SetPhoneNumber(externalUser.PhoneNumber, externalUser.PhoneNumberConfirmed ?? false);

            (await UserManager.CreateAsync(user)).CheckErrors();

            if (externalUser.TwoFactorEnabled != null)
            {
                (await UserManager.SetTwoFactorEnabledAsync(user, externalUser.TwoFactorEnabled.Value)).CheckErrors();
            }

            (await UserManager.AddDefaultRolesAsync(user)).CheckErrors();
            (await UserManager.AddLoginAsync(
                 user,
                 new UserLoginInfo(
                     providerName,
                     externalUser.ProviderKey,
                     providerName
                     )
                 )
            ).CheckErrors();

            return(user);
        }