コード例 #1
0
        public async Task <ActionResult> ChangeContactAsync([FromBody][Required] ChangeContactContract contract)
        {
            if (m_logger.IsEnabled(LogLevel.Information))
            {
                m_logger.LogInformation(GetMethodCalledLoggingString(null, contract));
            }

            DataResult <bool> changeResult = null;

            var user = await m_identityUserManager.GetUserByIdAsync(contract.UserId);

            if (contract.ContactType == ContactTypeEnum.Email && !string.Equals(contract.NewContactValue, user.Email, StringComparison.OrdinalIgnoreCase))
            {
                changeResult = await m_identityUserManager.ChangeEmailAsync(user, contract.NewContactValue);

                if (changeResult.HasError)
                {
                    return(Error(changeResult.Error));
                }

                if (changeResult.Result)
                {
                    user = await m_identityUserManager.GetUserByIdAsync(contract.UserId); //Reload user with updated email related properties

                    AdjustTwoFactorOnEmailChange(user);
                }
            }

            if (contract.ContactType == ContactTypeEnum.Phone && contract.NewContactValue != user.PhoneNumber)
            {
                changeResult = await m_identityUserManager.ChangePhoneAsync(user, contract.NewContactValue);

                if (changeResult.HasError)
                {
                    return(Error(changeResult.Error));
                }

                if (changeResult.Result)
                {
                    user = await m_identityUserManager.GetUserByIdAsync(contract.UserId); //Reload user with updated phone related properties

                    AdjustTwoFactorOnPhoneChange(user);
                }
            }

            //If change result is null, new contact value is same as original value (this should not happen, because there is check on portal before sending request for contact change), return true as if everything went ok
            return(Json(changeResult?.Result ?? true));
        }
コード例 #2
0
        public async Task <bool> ChangeContactAsync(ChangeContactContract contract)
        {
            var fullPath = $"{BasePath}changeContact";

            return(await m_authorizationServiceHttpClient.SendRequestAsync <bool>(HttpMethod.Post, fullPath, contract));
        }