public async Task <ActionResult <UsuarioConToken> > Register(Usuario usuario)
        {
            usuario.Password = BCrypt.Net.BCrypt.HashPassword(usuario.Password);
            var u = context.Usuarios.Where(x => x.Email == usuario.Email || x.Username == usuario.Username).FirstOrDefault();

            if (u != null)
            {
                if (u.Email == usuario.Email)
                {
                    return(BadRequest("Este correo ya esta registrado"));
                }
                return(BadRequest("Este nombre de usuario ya esta registrado"));
            }

            context.Usuarios.Add(usuario);
            await context.SaveChangesAsync();

            usuario.Password = null;
            UsuarioConToken usuarioConToken = new UsuarioConToken
            {
                usuario = usuario,
                token   = GetNewTokenString(usuario)
            };

            return(CreatedAtAction("GetUsuario", new { id = usuario.Id }, usuarioConToken));
        }
        public async Task <ActionResult <IEnumerable <UsuarioConToken> > > Login([FromBody] UsuarioAuth usuario)
        {
            var _usuario = await context.Usuarios
                           .Where(x => x.Email == usuario.Email)
                           .FirstOrDefaultAsync();

            if (_usuario == null || !BCrypt.Net.BCrypt.Verify(usuario.Password, _usuario.Password))
            {
                return(Unauthorized("Credenciales invalidas"));
            }

            _usuario.Password = null;
            UsuarioConToken usuario_con_token = new UsuarioConToken()
            {
                usuario = _usuario,
                token   = GetNewTokenString(_usuario),
            };

            return(Ok(usuario_con_token));
        }