npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2025 – Pkg Stats / Ryan Hefner

account-sigma-sdk

v1.2.4

Published

SDK oficial de Accounts Eureka Sigma para autenticación y gestión de proyectos con múltiples sesiones y cookies seguras

Readme

Account Sigma SDK

SDK oficial para autenticación con Accounts Sigma API. Soporta múltiples métodos de autenticación: Email, Google y Microsoft, con manejo de múltiples sesiones simultáneas usando cookies seguras y sistema de token master para agrupar sesiones por contexto de navegador.

🚀 Instalación

npm install account-sigma-sdk

📦 Configuración

1. Configuración Básica

import { AuthProvider } from 'account-sigma-sdk';

function App() {
  return (
    <AuthProvider 
      config={{
        projectToken: 'tu_project_token',
        apiUrl: 'https://tu-api.com', // opcional
        googleClientId: 'tu_google_client_id',
        microsoftClientId: 'tu_microsoft_client_id', 
        microsoftTenantId: 'tu_microsoft_tenant_id'
      }}
    >
      <YourApp />
    </AuthProvider>
  );
}

2. Configuración de Cookies (Opcional)

El SDK usa cookies por defecto para mantener las sesiones. Puedes personalizar las opciones:

<AuthProvider 
  config={{
    projectToken: 'tu_project_token',
    // Opciones de cookies
    secure: true, // true por defecto (HTTPS requerido)
    sameSite: 'strict', // 'strict', 'lax', o 'none'
    cookiePath: '/', // ruta de las cookies
    cookieDomain: '.tudominio.com', // dominio para las cookies
    cookieMaxAge: 15 * 24 * 60 * 60 * 1000, // 15 días por defecto
    // Opciones avanzadas
    cookieOptions: {
      httpOnly: false, // false por defecto (permite acceso desde JS)
      // Otras opciones específicas
    }
  }}
>
  <YourApp />
</AuthProvider>

3. Uso Básico

import { useAuth } from 'account-sigma-sdk';

function LoginComponent() {
  const { 
    loginWithGoogle, 
    loginWithMicrosoft, 
    requestCode, 
    verifyCode 
  } = useAuth();

  // Autenticación por email
  const handleEmailLogin = async () => {
    const result = await requestCode('[email protected]');
    if (result.ok) {
      // Mostrar input para código
    }
  };

  // Autenticación con Google (SIMPLIFICADA)
  const handleGoogleLogin = async () => {
    const result = await loginWithGoogle('popup'); // o 'oneTap'
    if (result.ok) {
      console.log('Usuario autenticado:', result);
    }
  };

  // Autenticación con Microsoft (SIMPLIFICADA)
  const handleMicrosoftLogin = async () => {
    const result = await loginWithMicrosoft();
    if (result.ok) {
      console.log('Usuario autenticado:', result);
    }
  };

  return (
    <div>
      <button onClick={handleGoogleLogin}>
        Continuar con Google
      </button>
      <button onClick={handleMicrosoftLogin}>
        Continuar con Microsoft
      </button>
    </div>
  );
}

🔧 Métodos Disponibles

Autenticación por Email

const { requestCode, verifyCode } = useAuth();

// 1. Solicitar código
const result = await requestCode('[email protected]');

// 2. Verificar código
const authResult = await verifyCode('[email protected]', '123456');

Autenticación OAuth Simplificada

const { loginWithGoogle, loginWithMicrosoft } = useAuth();

// Google (maneja todo el flujo automáticamente)
const googleResult = await loginWithGoogle('popup'); // o 'oneTap'

// Microsoft (maneja todo el flujo automáticamente)
const microsoftResult = await loginWithMicrosoft();

Autenticación OAuth Directa (con tokens)

const { authenticateWithGoogle, authenticateWithMicrosoft } = useAuth();

// Si ya tienes los tokens
const googleResult = await authenticateWithGoogle(googleIdToken);
const microsoftResult = await authenticateWithMicrosoft(microsoftAccessToken);

Manejo de Múltiples Sesiones

const { 
  sessions, 
  activeSession, 
  switchSession, 
  logoutSession, 
  getSessions 
} = useAuth();

// Obtener todas las sesiones del servidor
const serverSessions = await getSessions();

// Cambiar a otra sesión
const success = switchSession('session_id');

// Cerrar una sesión específica
await logoutSession('session_id');

// Ver sesiones disponibles
console.log('Sesiones:', sessions);
console.log('Sesión activa:', activeSession);

Utilidades

const { 
  isAuthenticated, 
  getCurrentUser, 
  logout,
  isGoogleAvailable,
  isMicrosoftAvailable 
} = useAuth();

// Verificar estado
if (isAuthenticated) {
  const user = getCurrentUser();
  console.log('Usuario:', user);
}

// Verificar disponibilidad OAuth
if (isGoogleAvailable()) {
  // Mostrar botón de Google
}

// Cerrar sesión actual
await logout();

🛡️ Protección de Rutas

import { ProtectedRoute } from 'account-sigma-sdk';

function App() {
  return (
    <AuthProvider>
      <ProtectedRoute fallback={<LoginPage />}>
        <Dashboard />
      </ProtectedRoute>
    </AuthProvider>
  );
}

📋 Respuestas de la API

Respuesta Exitosa

{
  "ok": true,
  "uid": "user_id",
  "name": "Nombre del Usuario",
  "avatar": "https://example.com/avatar.jpg",
  "provider": "google|microsoft|email",
  "token": "jwt_token_here",
  "sessionId": "session_id",
  "expiraEn": "2024-01-15T10:30:00.000Z"
}

Respuesta de Error

{
  "ok": false,
  "msg": "Mensaje de error"
}

🔄 Gestión de Sesiones

Componente de Administración de Sesiones

import { SessionManager } from 'account-sigma-sdk';

function App() {
  return (
    <AuthProvider>
      <SessionManager />
    </AuthProvider>
  );
}

Estructura de Sesión

{
  id: "session_id",
  dispositivo: "Mozilla/5.0...",
  ip: "192.168.1.1",
  ultimoAcceso: "2024-01-10T15:30:00.000Z",
  expiraEn: "2024-01-25T15:30:00.000Z",
  esActual: true
}

🎯 Sistema de Token Master

¿Qué es el Token Master?

El Token Master es un sistema que agrupa las sesiones por contexto de navegador. Esto permite:

  • Aislamiento de Sesiones: Cada pestaña/ventana del navegador tiene su propio grupo de sesiones
  • Seguridad Mejorada: Las sesiones no se mezclan entre diferentes contextos
  • Experiencia de Usuario: Cada contexto mantiene su estado independiente

Información del Token Master

const { tokenMaster } = useAuth();

// Información del token master actual
console.log('Token Master:', tokenMaster);
// {
//   id: "master_token_id",
//   email: "[email protected]",
//   expiraEn: "2024-02-15T10:30:00.000Z",
//   activo: true
// }

🍪 Sistema de Cookies

Características de las Cookies

  • Persistencia: Las sesiones se mantienen incluso después de cerrar el navegador
  • Seguridad: Configuración secure y sameSite por defecto
  • Expiración: 15 días por defecto (configurable)
  • Múltiples Sesiones: Soporte para múltiples sesiones simultáneas
  • Token Master: Cookie separada para el token master

Configuración de Cookies

// Configuración por defecto
{
  secure: true,           // Requiere HTTPS
  sameSite: 'strict',     // Protección CSRF
  path: '/',              // Ruta de las cookies
  maxAge: 15 * 24 * 60 * 60 * 1000, // 15 días
  httpOnly: false         // Permite acceso desde JavaScript
}

Cookies Utilizadas

  • faceticket-sessions: Almacena todas las sesiones del usuario
  • faceticket-active-session: Identifica la sesión activa actual
  • faceticket-master: Token master para agrupar sesiones por contexto

🔐 Configuración OAuth

Google OAuth

  1. Ve a Google Cloud Console
  2. Crea un proyecto y habilita Google+ API
  3. Crea credenciales OAuth 2.0
  4. Configura URIs autorizados:
    • http://localhost:3000
    • https://tu-dominio.com

Microsoft OAuth

  1. Ve a Azure Portal
  2. Registra una nueva aplicación
  3. Configura permisos: User.Read, email, profile

🆕 Nuevas Funcionalidades

Sistema de Token Master

  • Agrupación de Sesiones: Las sesiones se agrupan por contexto de navegador
  • Aislamiento: Cada pestaña/ventana mantiene sesiones independientes
  • Persistencia: El token master se mantiene por 30 días
  • Seguridad: Evita mezclar sesiones entre diferentes contextos

Múltiples Sesiones con Cookies

  • Persistencia Mejorada: Las sesiones se mantienen después de cerrar el navegador
  • Almacenamiento Seguro: Uso de cookies con configuración de seguridad por defecto
  • Sesión Activa: Solo una sesión está activa a la vez
  • Cambio de Sesión: Cambia entre sesiones sin re-autenticación
  • Cierre Selectivo: Cierra sesiones específicas manteniendo otras activas

Control de Sesiones desde la API

  • Gestión Centralizada: La API controla todas las sesiones
  • Información de Dispositivo: Registra IP, User Agent y dispositivo
  • Expiración Automática: Las sesiones expiran automáticamente
  • Seguridad Mejorada: Validación de sesiones en cada request

Mejoras en el SDK

  • Cookies por Defecto: Uso de cookies en lugar de localStorage
  • Métodos Actualizados: getCurrentUser(), getCurrentToken(), getAllSessions()
  • Nuevos Métodos: switchSession(), logoutSession(), getSessions()
  • Estado React: Acceso a sessions y activeSession en el hook useAuth
  • Token Master: Acceso a información del token master actual

📝 Ejemplo Completo

import React from 'react';
import { AuthProvider, useAuth, SessionManager } from 'account-sigma-sdk';

function Dashboard() {
  const { 
    user, 
    sessions, 
    tokenMaster,
    switchSession, 
    logoutSession 
  } = useAuth();

  return (
    <div>
      <h1>Bienvenido, {user?.name}</h1>
      
      {/* Información del Token Master */}
      {tokenMaster && (
        <div className="token-master-info">
          <h3>Token Master</h3>
          <p><strong>Email:</strong> {tokenMaster.email}</p>
          <p><strong>Expira:</strong> {new Date(tokenMaster.expiraEn).toLocaleString()}</p>
        </div>
      )}
      
      <h2>Sesiones Activas ({sessions.length})</h2>
      {sessions.map(session => (
        <div key={session.id}>
          <p>Dispositivo: {session.dispositivo}</p>
          <p>IP: {session.ip}</p>
          {!session.esActual && (
            <button onClick={() => switchSession(session.id)}>
              Cambiar a esta sesión
            </button>
          )}
          <button onClick={() => logoutSession(session.id)}>
            Cerrar sesión
          </button>
        </div>
      ))}
    </div>
  );
}

function App() {
  return (
    <AuthProvider config={{ 
      projectToken: 'tu_token',
      secure: true, // Requiere HTTPS
      sameSite: 'strict'
    }}>
      <Dashboard />
      <SessionManager />
    </AuthProvider>
  );
}

🔧 Troubleshooting

Problemas Comunes

Las sesiones no persisten después de cerrar el navegador:

  • Verifica que secure: false en desarrollo local
  • Asegúrate de que el dominio esté configurado correctamente

Error de cookies en desarrollo:

// Para desarrollo local
<AuthProvider config={{
  projectToken: 'tu_token',
  secure: false, // Deshabilitar en desarrollo
  sameSite: 'lax' // Más permisivo en desarrollo
}}>

Cookies no se establecen:

  • Verifica que el dominio esté configurado correctamente
  • Asegúrate de que el protocolo sea HTTPS en producción

Token Master no se crea:

  • Verifica que la API esté configurada correctamente
  • Asegúrate de que el proyecto tenga permisos para crear tokens master

📚 Versiones

  • v1.1.12: Sistema de token master, mejoras en cookies, múltiples sesiones
  • v1.1.0: Soporte para múltiples sesiones con cookies
  • v1.0.0: Versión inicial con autenticación básica

🤝 Contribución

Para contribuir al SDK:

  1. Fork el repositorio
  2. Crea una rama para tu feature (git checkout -b feature/nueva-funcionalidad)
  3. Commit tus cambios (git commit -am 'Agregar nueva funcionalidad')
  4. Push a la rama (git push origin feature/nueva-funcionalidad)
  5. Crea un Pull Request

📄 Licencia

MIT License - ver LICENSE para más detalles.