/// <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));
            }
        }
Exemple #3
0
        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);
        }