/// <summary> /// Abre una sesión de administrador. /// Envia al repositorio las credenciales del administrador. /// Si el repositorio reconoce las credenciales, instancia /// un token para el role Admin. /// </summary> /// <param name="admin"> /// Objeto Admin con las credenciales /// </param> /// <exception cref="WrongCredentialsException"> /// Lanza WrongCredentialsException /// </exception> /// <returns> /// retorna un objeto que contiene el token creado y /// el id del administrador /// </returns> public async Task <AdminSignInResponse> SignIn(Admin admin)//Throw WrongCredentialsException { AdminEntity adminEntity = AdminMapper.Map(admin); var signedInAdmin = await _adminRepository.Exists(adminEntity); string token = _authService .GenerateToken(signedInAdmin.AdminName + signedInAdmin.Password, Role.ADMIN); AdminSignInResponse response = new AdminSignInResponse { Id = adminEntity.Id, Token = token }; return(response); }
public async Task <IActionResult> SignIn([FromBody] Admin admin) { _logger.LogInformation("Petición de login del administrador recibida"); try { AdminSignInResponse result = await _adminService.SignIn(admin); _logger.LogInformation("Token de administrador retornado"); return(Ok(result)); } catch (WrongCredentialsException ex) { _logger.LogWarning("Credenciales de administrador incorrectas"); return(NotFound(ex.Message)); } }
private async Task <string> SignIn() { Admin admin = new Admin() { AdminName = "admin", Password = "******" }; var content = new StringContent( JsonConvert.SerializeObject(admin) , Encoding.UTF8, "application/json"); var response = await _httpClient.PostAsync("api/admins", content); string json = await response.Content.ReadAsStringAsync(); AdminSignInResponse signInResponse = JsonConvert.DeserializeObject <AdminSignInResponse>(json); return(signInResponse.Token); }