From 85b60a800c998277f1eff898712bf7245c20cd4b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?PontualTech=20/=20Karl=C3=A3o?= Date: Mon, 27 Apr 2026 15:37:15 -0300 Subject: [PATCH] feat(saas): multi-tenant com login/cadastro + JWT + planos free/pro/captain MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit BACKEND - bcryptjs + jsonwebtoken adicionados (JS puro, sem build nativo) - Schema users + licenses, migration adiciona user_id em todas tabelas (state, media, anchor_session, alarm_log, shares, audit_log) - User default id=1 (karlao@outlook.com) com plano captain — preserva uso pessoal pré-multi-tenant - Endpoints /api/auth/{signup,login,refresh,me} + /api/license - Middleware requireAuth aceita JWT OU BOAT_TOKEN (fallback legado mapeia ao user 1) - TODAS rotas autenticadas atualizadas pra usar req.user.id (state, media, anchor, share, alarm, audit) - Dead-man switch agora itera todos anchor_sessions ativos (multi-user) - 3 planos definidos em auth.js: free (Âncora), pro (R$19/mês), captain (R$39/mês) FRONTEND - state.auth + state.license persistidos em localStorage - cloudFetch usa JWT preferencialmente, fallback BOAT_TOKEN; auto-refresh em 401 - Nova seção 'Conta' no painel Arquivo: tabs Entrar/Cadastrar + status de plano + Logout + botão upgrade - Sincronizado em app/ e server/public/ Backward-compat 100% preservada: app legado com BOAT_TOKEN continua funcionando como user default. Próximo: webhook Asaas pra ativar licenças após pagamento PIX. Co-Authored-By: Claude Opus 4.7 (1M context) --- app/diario-bordo.html | 117 +++++++++++++++++- server/package-lock.json | 117 ++++++++++++++++++ server/package.json | 2 + server/public/index.html | 95 ++++++++++++++- server/src/auth.js | 65 ++++++++++ server/src/db.js | 235 ++++++++++++++++++++++++++---------- server/src/index.js | 205 ++++++++++++++++++++++--------- server/src/schemas/index.js | 12 ++ 8 files changed, 716 insertions(+), 132 deletions(-) create mode 100644 server/src/auth.js diff --git a/app/diario-bordo.html b/app/diario-bordo.html index cdd6b80..c2e40d7 100644 --- a/app/diario-bordo.html +++ b/app/diario-bordo.html @@ -899,6 +899,7 @@ Marque zonas de proibição (alarme alto) ou atenção (aviso suave). Detecção
+
📡 Compartilhar posição em tempo real
@@ -1289,7 +1290,7 @@ Hora: {HORA}