Kronbase incluye un sistema de auth completo para los usuarios finales de tu aplicación. Las sesiones se almacenan en tu schema de Oracle.
// lib/kronbase.ts
import { createClient } from '@kronbase/client'
export const kb = createClient(
process.env.NEXT_PUBLIC_KB_URL!, // https://api.kronbase.io/api
{ anonKey: process.env.NEXT_PUBLIC_KB_KEY! }
)// signUp(email, password)
const result = await kb.auth().signUp(
'usuario@ejemplo.com',
'contraseña-segura'
)
// result.user → { id, email, createdAt }
// result.session?.accessToken → JWTTras el registro el usuario recibe un código OTP por email. Necesita verificarlo antes de poder iniciar sesión.
// verifyOtp(email, code) const result = await kb.auth().verifyOtp( 'usuario@ejemplo.com', '482910' // código de 6 dígitos recibido por email ) // result.session.accessToken → JWT de acceso // result.session.refreshToken → token de refresco
// signIn(email, password) const result = await kb.auth().signIn( 'usuario@ejemplo.com', 'contraseña-segura' ) // result.session.accessToken → JWT (1 hora por defecto) // result.session.refreshToken → token de refresco (30 días)
// Guardar tokens en cookies (para SSR / middleware)
await kb.auth().setSession({
accessToken: result.session.accessToken,
refreshToken: result.session.refreshToken,
})
// Leer el usuario actual desde las cookies (sin red)
const user = await kb.auth().getUser()
// user → { id, email, role, ... } | nullawait kb.auth().signOut()
const result = await kb.auth().refreshToken(refreshToken) // result.session.accessToken → nuevo JWT
// Enviar código OTP al email
await kb.auth().sendOtp('usuario@ejemplo.com', 'code')
// O enviar magic link (click → login automático)
await kb.auth().sendOtp('usuario@ejemplo.com', 'magic_link')
// Verificar el código recibido (mismo método)
const result = await kb.auth().verifyOtp('usuario@ejemplo.com', '482910')// 1. Iniciar configuración — devuelve QR URI y secret
const { qrUri, secret } = await kb.auth().totp.setup()
// 2. Confirmar activación con el primer código del autenticador
const { backupCodes } = await kb.auth().totp.verifySetup('123456')
// 3. Login cuando 2FA está activo
const result = await kb.auth().signIn(email, password)
if ('sessionToken' in result) {
// requiere segundo factor
const finalResult = await kb.auth().totp.verify(result.sessionToken, codigoTotp)
}# Registro
POST /api/auth/signup
{ "email": "...", "password": "..." }
# Login
POST /api/auth/signin
{ "email": "...", "password": "..." }
# Verificar OTP
POST /api/auth/otp/verify
{ "email": "...", "code": "123456" }
# Refrescar token
POST /api/auth/refresh
Authorization: Bearer <refresh_token>
# Usuario actual
GET /api/auth/me
Authorization: Bearer <access_token>