public async Task <AuthResponseDto> Login(UserForAuthDto userForAuthentication) { var content = JsonSerializer.Serialize(userForAuthentication); var bodyContent = new StringContent(content, Encoding.UTF8, "application/json"); var authResult = await _httpClient.PostAsync("account/login", bodyContent); var authContent = await authResult.Content.ReadAsStringAsync(); var result = JsonSerializer.Deserialize <AuthResponseDto>(authContent, new JsonSerializerOptions { PropertyNameCaseInsensitive = true }); if (!authResult.IsSuccessStatusCode) { return(result); } await _localStorage.SetItemAsync("authToken", result.Token); await _localStorage.SetItemAsync("refreshToken", result.RefreshToken); ((AuthStateProvider)_authenticationState).NotifyUserAuthentication(result.Token); _httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("bearer", result.Token); return(new AuthResponseDto { IsAuthSuccessful = true }); }
public async Task <IActionResult> Login(UserForAuthDto userForLoginDto) { userForLoginDto.email = userForLoginDto.email.ToLower(); var userFromRepo = await _repo.Login(userForLoginDto.email, userForLoginDto.password); if (userFromRepo == null) { return(Unauthorized()); } var claims = new[] { new Claim(ClaimTypes.NameIdentifier, userFromRepo.id.ToString()), new Claim(ClaimTypes.Name, userFromRepo.email) }; var key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_config.GetSection("AppSettings:secretKey").Value)); var creds = new SigningCredentials(key, SecurityAlgorithms.HmacSha512Signature); var tokenDescripter = new SecurityTokenDescriptor { Subject = new ClaimsIdentity(claims), Expires = DateTime.Now.AddDays(1), SigningCredentials = creds }; var tokenHandler = new JwtSecurityTokenHandler(); var token = tokenHandler.CreateToken(tokenDescripter); return(Ok(new{ token = tokenHandler.WriteToken(token) })); }
public async Task <IActionResult> DeleteUser(UserForAuthDto userForDeleteDto) { userForDeleteDto.email = userForDeleteDto.email.ToLower(); var userFromRepo = await _repo.Login(userForDeleteDto.email, userForDeleteDto.password); if (userFromRepo == null) { return(Unauthorized()); } if (await _repo.DeleteUser(userForDeleteDto.email, userForDeleteDto.password)) { return(Ok()); } else { return(BadRequest()); } }