public async Task <IActionResult> Login(ApiLoginModel model) { ApiLoginResult result = await _authenticationService.LoginAsync(model); if (string.IsNullOrEmpty(result.Token)) { return(Unauthorized()); //The external API returns a bad request instead of unauthorized when the user credentials are wrong, hence we have to use this ugly check. } result.Token = _tokenService.GenerateToken(result.Token); return(Ok(GenerateSuccessfulResponse(result))); }
[Post("/api/authentication/login")] //Refit does not support using constants. See: https://github.com/reactiveui/refit/issues/263 public async Task <HttpResponseMessage> Authenticate(ApiLoginModel loginData) { if (!string.IsNullOrEmpty(loginData.Token)) { ApiLoginResult result = new ApiLoginResult { Token = loginData.Token, Expires = 0, HasError = false, Username = loginData.Username }; HttpResponseMessage response = new HttpResponseMessage(HttpStatusCode.OK) { Content = new StringContent(JsonConvert.SerializeObject(result)) }; return(response); } return(new HttpResponseMessage(HttpStatusCode.BadRequest)); }