HDWebmobile Booking & Appointments
Venda serviços e compromissos reserváveis através do WooCommerce, com capacidade por horário que nunca pode ser excedida.
Descrição
O HDWebmobile Booking & Appointments transforma qualquer produto simples do WooCommerce em um serviço reservável. Os clientes escolhem uma data e um horário disponíveis na página do produto; a reserva é confirmada no momento em que o pedido é concluído, e eles podem visualizá-la ou cancelá-la posteriormente em Minha Conta.
Por que este plugin existe
Um plugin concorrente de reservas (Amelia) tinha uma vulnerabilidade autenticada de IDOR/mass-assignment (CVE-2026-2931, CVSS 8.8): seu endpoint de "atualizar meu perfil de reserva" aceitava um campo fornecido pelo cliente que vinculava o registro da reserva a um ID de usuário do WordPress, sem verificar se ele ainda apontava para a conta do próprio solicitante — permitindo que um cliente com privilégios baixos redefinisse a senha de qualquer usuário do WordPress, incluindo um administrador. Este plugin elimina essa classe de vulnerabilidade por construção:
- O proprietário de uma reserva é gravado em exatamente um lugar — na conclusão do pedido, a partir do ID do cliente do próprio pedido — e nunca mais. Não existe nenhum caminho de código de "atualizar reserva" neste plugin que aceite um ID de cliente, ID de usuário ou qualquer campo semelhante vindo de uma solicitação.
- Este plugin nunca toca na senha do WordPress. Não existe nenhum caminho de código aqui que chame
wp_set_password() ou algo parecido — a senha de um cliente permanece inteiramente sob a responsabilidade da própria tela de Detalhes da Conta do WordPress.
- Um cliente só pode ver ou cancelar as próprias reservas, limitadas pela sua conta conectada na própria consulta ao banco de dados — nunca por um ID vindo da solicitação.
- A capacidade por horário é aplicada com uma reivindicação atômica e segura contra condições de corrida (uma restrição de unicidade no banco de dados), de modo que dois clientes nunca podem ser confirmados no mesmo horário além da capacidade configurada. Cancelar uma reserva libera corretamente seu horário para reutilização, enquanto o registro cancelado é mantido para histórico de auditoria.
Recursos
- Transforme qualquer produto simples em um serviço reservável pela própria aba Produto > Dados do Produto > Reserva
- Dias disponíveis, horários, prazo de antecedência e quantos dias à frente oferecer, tudo configurável
- Capacidade por horário — um horário deixa de ser oferecido quando está cheio
- A reserva é confirmada automaticamente quando o pedido é marcado como Concluído
- Uma aba "Reservas" em Minha Conta para visualizar e cancelar reservas futuras
- Se um horário lotar entre o "adicionar ao carrinho" e o checkout, o pedido ainda é concluído normalmente e o administrador é notificado por e-mail para ajudar a reagendar — nenhuma reserva é jamais duplicada
Limitações (v1)
- Apenas produtos simples — sem suporte a produtos variáveis
- Sem atribuição de equipe/recursos — a capacidade de um horário é um único número compartilhado, não por membro da equipe
- Sem sincronização de calendário (Google Calendar, iCal, etc.)
Instalação
- Envie o plugin para
/wp-content/plugins/hdwebmobile-booking-appointments, ou instale pela tela de plugins do WordPress.
- Ative o plugin. O WooCommerce já deve estar instalado e ativo.
- Edite um produto simples, abra a nova aba "Reserva" em Dados do Produto e configure a disponibilidade.
Licença
GPLv2 ou posterior. Consulte LICENSE.