← Back to home

v1.1.15

By Pscodium · 8/9/2026 · 4 views

File Storage 1.1.15

v1.1.15 - OAuth2 PKCE Authentication & Microservices Architecture

🔐 Autenticação OAuth2 com PKCE

Migração completa para autenticação OAuth2 com PKCE (Proof Key for Code Exchange), oferecendo segurança significativamente melhorada.

Destaques:

  • ✅ Geração segura de code_challenge/code_verifier
  • ✅ Tokens armazenados em localStorage
  • ✅ Refresh token automático na expiração
  • ✅ Deep link support para Electron: ocs-auth://callback

🏗️ Arquitetura de Microserviços

Separação de URLs para melhor isolamento e segurança:


📍 Autenticação: http://localhost:3000

📍 Aplicação: http://localhost:12000

📍 Encurtador: http://localhost:4000

👤 Novo Sistema de Permissões

  • Estrutura de usuário: { userId, roles[], clientId }
  • Permissões baseadas em array de roles
  • Suporte para múltiplas roles por usuário
  • Exemplo: user.roles.includes('admin')

🔄 Melhorias de Fluxo

Autenticação Automática

  • Interceptor detecta 401 Unauthorized
  • Refresh token automático
  • Retry automático de requisição com novo token

Validação Obrigatória

  • Endpoints de storage agora exigem autenticação
  • Falha explícita se token não estiver presente
  • Evita downgrades silenciosos de permissões

🔌 WebSocket Sincronizado

  • Socket events agora usam UUID do JWT (userId)
  • Sincronização perfeita com autenticação

📋 Checklist de Integração

Para integrar com esta versão:

  • Configurar servidor OAuth2 em porta 3000
  • Configurar servidor de aplicação em porta 12000
  • Registrar deep link ocs-auth://callback no OAuth client
  • Atualizar .env com VITE_AUTH_ENDPOINT
  • Testar login e refresh token flow

⚠️ Breaking Changes

AntesDepois
user.id (number)user.userId (string UUID)
user.roleuser.roles[]
Tokens em cookiesTokens em localStorage
Sem autenticação obrigatóriaAutenticação exigida em endpoints

🔧 Arquivos Principais Alterados

  • src/renderer/src/services/api.ts - PKCE + refresh token logic
  • src/renderer/src/contexts/auth.tsx - Auth context atualizado
  • src/renderer/src/services/socket.ts - WebSocket com userId
  • src/renderer/src/pages/storage/index.tsx - Roles-based permissions
  • src/renderer/src/services/shorten/api.ts - localStorage tokens

🚀 Como Usar

Login

const  user  =  await  apiService.login({  email,  password  });

// Automático: tokens armazenados, refresh configurado

Requisições Autenticadas

const  folders  =  await  apiService.getFolders();

// Automático: header Authorization: Bearer ${token}

Verificação de Permissão

if  (user?.roles?.includes('admin'))  {

// Mostrar opções admin

}

v1.1.15 - Lançado em 16 de Fevereiro de 2026



Comments

No comments yet.