コード例 #1
0
        public async Task <IActionResult> EditAccountEmail([FromBody] AccountEditEmailDto emailDto)
        {
            var result = await _accountService.EditEmail(emailDto);

            if (!result.Success)
            {
                return(BadRequest(result.Message));
            }

            return(Ok(result.Token));
        }
コード例 #2
0
        public async Task <AccountResponse> EditEmail(AccountEditEmailDto emailDto)
        {
            Dictionary <string, string[]> errors = new Dictionary <string, string[]>();


            UserAccount user = _context.UserAccounts.AsNoTracking().FirstOrDefault(u => u.UserName == _userName);

            if (user == null)
            {
                errors.Add("User", new[] { "Podane konto nie istnieje" });
                return(new AccountResponse(errors));
            }

            var result = await _signInManager.CheckPasswordSignInAsync(user, emailDto.Password, false);

            if (!result.Succeeded)
            {
                errors.Add("Hasło", new[] { "Podałeś zle haslo" });
                return(new AccountResponse(errors));
            }

            UserAccount doExistEmail = await _context.UserAccounts.AsNoTracking().FirstOrDefaultAsync(u => u.Email == emailDto.Email);

            if (doExistEmail != null)
            {
                errors.Add("Email", new[] { "Podałeś zajety Email" });
                return(new AccountResponse(errors));
            }

            try
            {
                user.Email           = emailDto.Email;
                user.NormalizedEmail = emailDto.Email.ToUpper();
                _context.UserAccounts.Update(user);
                _context.SaveChanges();
            }
            catch (Exception ex)
            {
                errors.Add("Wystąpił nieoczekiwany błąd", new[] { ex.Message });
                return(new AccountResponse(errors));
            }

            JwtTokenDto response = new JwtTokenDto
            {
                Token = GenerateJwtToken(user.Email, user)
            };

            return(new AccountResponse(response));
        }