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());
        }
Exemplo n.º 2
0
        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)
            }));
        }