public async Task <IActionResult> Create([FromBody] UsuarioDto usuario) { var result = await ususarioRepository.Find(x => x.Email == usuario.Email); if (result != null) { return(BadRequest("El email ya existe")); } usuario.Password = usuario.NroIdentificacion.ToString(); byte[] passwordHash, passwordSalt; SeguridadPassword.CreatePasswordHash(usuario.Password, out passwordHash, out passwordSalt); var nuevoUsuario = new Usuario { Id = Guid.NewGuid(), NroIdentificacion = usuario.NroIdentificacion, Nombres = usuario.Nombres, Apellidos = usuario.Apellidos, Email = usuario.Email, Telefono = usuario.Telefono, PasswordHash = passwordHash, PasswordSalt = passwordSalt, Activo = usuario.Activo, FechaCreacion = DateTime.Now, FechaModificacion = DateTime.Now }; await ususarioRepository.Add(nuevoUsuario); return(Ok()); }
public async Task <IActionResult> Login([FromBody] LoginDto loginInformtation) { var userSeleccionado = await usuarioRepository.ObtenerPorEmail(loginInformtation.Email); if (userSeleccionado == null) { return(Unauthorized()); } if (!SeguridadPassword.VerifyPasswordHash(loginInformtation.Password, userSeleccionado.PasswordHash, userSeleccionado.PasswordSalt)) { return(Unauthorized()); } var claims = new Claim[] { new Claim(ClaimTypes.NameIdentifier, userSeleccionado.Id.ToString()), new Claim(ClaimTypes.Name, $"{userSeleccionado.Nombres} {userSeleccionado.Apellidos}") }; var key = new SymmetricSecurityKey(Encoding.ASCII.GetBytes("Miclavedecontraseña")); var creds = new SigningCredentials(key, SecurityAlgorithms.HmacSha512Signature); var tokenDescriptor = new SecurityTokenDescriptor { Subject = new ClaimsIdentity(claims), Expires = DateTime.Now.AddDays(1), SigningCredentials = creds }; var tokenHandler = new JwtSecurityTokenHandler(); var token = tokenHandler.CreateToken(tokenDescriptor); return(Ok(new { token = tokenHandler.WriteToken(token) })); }