public async Task Login([FromBody] JsonDocument request) { JObject jValue = WebMessageHelpers.GetJObjectFromBody(request); Response.Headers.Add("Access-Control-Allow-Headers", "*"); Response.Headers.Add("Content-Type", "application/json"); User userAuth = new User(0, jValue.GetValue("login").ToString(), jValue.GetValue("password").ToString()); var user = _context.User.FirstOrDefault(row => row.Login == userAuth.Login); byte[] body; if (user != null) { string hashPassword = UserHelpers.HashPassword(userAuth.Login, userAuth.Password); if (user.Password != hashPassword) { Response.StatusCode = 401; body = UserHelpers.WrongPasswordOrLogin(); await Response.Body.WriteAsync(body, 0, body.Length); return; } var logedUser = _context.ActiveUser.FirstOrDefault(row => row.UserId == user.Id); string token = ""; if (logedUser != null) { token = logedUser.Token; } else { token = UserHelpers.GenerateUserToken(); ActiveUser activeUser = new ActiveUser(0, user.Id, token); _context.ActiveUser.Add(activeUser); await _context.SaveChangesAsync(); } body = UserHelpers.SuccessfulLogin(token); Response.StatusCode = 200; await Response.Body.WriteAsync(body, 0, body.Length); } else { Response.StatusCode = 401; body = UserHelpers.WrongPasswordOrLogin(); await Response.Body.WriteAsync(body, 0, body.Length); return; } }