示例#1
0
        public async Task<IActionResult> Post(
            [FromRoute]Guid userAccountId,
            [FromBody]ChangeEmailInputModel inputModel)
        {
            // Check if user account to change exists
            UserAccount userAccount = await this._userAccountService
                .LoadByIdAsync(userAccountId);

            if (userAccount == null)
            {
                return this.NotFound();
            }

            // Check if new email address is already taken
            if (await this._userAccountService
                .LoadByEmailAsync(inputModel.Email) != null)
            {
                return this.BadRequest(
                    nameof(inputModel.Email),
                    "The Email field is invalid, Email already taken."
                );
            }

            // Send confirmation mail to user 
            if (!inputModel.Force)
            {
                return await this.DoubleOptInAsync(userAccount, inputModel);
            }

            // Update user directly without sending confirmation email 
            await this._userAccountService.SetNewEmailAsync(
               userAccount,
               inputModel.Email.ToLower()
            );

            return this.Ok();
        }