systentando-security-client
v2.1.2
Published
Cliente Node.js para integração com SYS-SEGURANÇA - Inclui gerenciamento automático de tokens
Maintainers
Readme
systentando-security-client
Cliente Node.js oficial para integração com o sistema SYS-SEGURANÇA da Systentando.
🚀 Instalação
# Instalação padrão
npm install systentando-security-client
# Com pnpm
pnpm add systentando-security-client
# Se houver conflitos de peer dependencies
npm install systentando-security-client --legacy-peer-deps⚠️ Problemas de compatibilidade? Consulte nosso Guia de Compatibilidade
📖 Uso Básico
Uso com Gerenciamento Automático de Tokens (Recomendado)
import { SysSegurancaClient } from 'systentando-security-client';
const client = new SysSegurancaClient({
baseURL: 'https://sua-api.com',
apiKey: 'sua-api-key',
enableTokenStorage: true // Habilita armazenamento automático
});
// Login - token é armazenado automaticamente
const authResult = await client.login({
username: '[email protected]',
password: 'senha123'
});
// Verificar permissões - token é usado automaticamente
const hasPermission = await client.hasPermission('read:users');
const isAdmin = await client.hasRole('admin');
// Logout - token é removido automaticamente
await client.logout();Uso em Aplicações React
import { useState, useEffect } from 'react';
import { SysSegurancaClient } from 'systentando-security-client';
function useAuth() {
const [client] = useState(() => new SysSegurancaClient({
baseURL: process.env.REACT_APP_API_URL,
apiKey: process.env.REACT_APP_API_KEY,
enableTokenStorage: true,
}));
const [user, setUser] = useState(null);
const [loading, setLoading] = useState(true);
useEffect(() => {
const checkAuth = async () => {
try {
const isValid = await client.isTokenValid();
if (isValid) {
const userInfo = await client.getStoredUserInfo();
setUser(userInfo);
}
} finally {
setLoading(false);
}
};
checkAuth();
}, []);
const login = async (credentials) => {
const response = await client.login(credentials);
setUser(response.user);
return response;
};
const logout = async () => {
await client.logout();
setUser(null);
};
return { user, loading, login, logout, isAuthenticated: !!user };
}🔧 Configuração
Variáveis de Ambiente
SYS_SEGURANCA_BASE_URL=https://sua-api.com
SYS_SEGURANCA_API_KEY=sua-api-keyConfiguração Manual
const client = new SysSegurancaClient({
baseUrl: process.env.SYS_SEGURANCA_BASE_URL,
apiKey: process.env.SYS_SEGURANCA_API_KEY,
timeout: 5000, // opcional
retries: 3 // opcional
});🛡️ Recursos
- ✅ Gerenciamento Automático de Tokens - Armazena e renova tokens automaticamente
- ✅ Múltiplas Estratégias de Armazenamento - localStorage, memória, customizadas
- ✅ Autenticação JWT - Login, logout, refresh automático
- ✅ Verificação de Permissões - Roles e permissões granulares
- ✅ Gerenciamento de Usuários - CRUD completo de usuários
- ✅ Controle de Dispositivos - Gerenciamento de dispositivos autorizados
- ✅ Cache Inteligente - Cache de tokens com renovação automática
- ✅ Retry Automático - Retry com backoff exponencial
- ✅ TypeScript Support - Tipagem completa
- ✅ Arquitetura Limpa - Seguindo princípios SOLID
🔄 Gerenciamento de Tokens
Estratégias de Armazenamento
// Armazenamento automático (padrão)
const client = new SysSegurancaClient({
baseURL: 'https://api.exemplo.com',
apiKey: 'sua-api-key',
enableTokenStorage: true
});
// Armazenamento personalizado
import { LocalStorageTokenStorage } from 'systentando-security-client';
const customStorage = new LocalStorageTokenStorage('meu_app_token');
const client = new SysSegurancaClient(config, customStorage);Métodos de Gerenciamento
// Verificar autenticação
const isAuthenticated = await client.isTokenValid();
// Obter informações do usuário
const userInfo = await client.getStoredUserInfo();
// Renovar token automaticamente
const isReady = await client.ensureValidToken();
// Limpar tokens
await client.clearStoredToken();📚 Documentação Completa
Para documentação completa, exemplos avançados e integração com frameworks, visite:
🤝 Suporte
- 📧 Email: [email protected]
- 🐛 Issues: GitHub Issues
- 📖 Docs: Documentação
📄 Licença
MIT © Systentando Team
