SDK for Lovelace authentication service
npm install @lovelace.gg/auth-sdkSDK pour intégrer l'authentification Lovelace dans vos applications.
``bashDepuis GitHub (repo privé)
bun add github:lovelace/auth#sdk
Usage
$3
`typescript
import { LovelaceAuth } from '@lovelace/auth-sdk';
import { Hono } from 'hono';const app = new Hono();
// Initialiser le SDK
const auth = new LovelaceAuth({
app: 'hub', // 'hub' | 'market' | 'playtest'
authUrl: 'https://auth.lovelace.gg', // Optionnel, par défaut
});
// Protéger toutes les routes
app.use('*', auth.middleware());
// Ou protéger des routes spécifiques
app.use('/admin/*', auth.middleware({ requireAccess: true }));
`$3
`typescript
app.get('/profile', auth.middleware(), (c) => {
const user = auth.getUser(c);
if (!user) {
return c.text('Not authenticated', 401);
} return c.json({
id: user.id,
email: user.email,
name: user.name,
access: user.access
});
});
`$3
`typescript
app.get('/api/data', async (c) => {
const { user, hasAccess, isAuthenticated } = await auth.verify(c);
if (!isAuthenticated) {
return c.text('Unauthorized', 401);
}
if (!hasAccess) {
return c.text('Access denied for this app', 403);
}
// User is authenticated and has access
return c.json({ data: 'secret data' });
});
`$3
`typescript
// Rediriger vers login si pas authentifié (défaut: true)
auth.middleware({ redirectToLogin: true })// Vérifier l'accès à l'app (défaut: true)
auth.middleware({ requireAccess: true })
// Juste vérifier l'auth, pas l'accès app
auth.middleware({ requireAccess: false })
// API JSON (pas de redirect)
auth.middleware({ redirectToLogin: false })
`$3
`typescript
app.get('/logout', (c) => {
return auth.logout(c, 'https://hub.lovelace.gg');
});
`$3
`typescript
app.get('/switch-app', auth.middleware(), (c) => {
const hasMarketAccess = auth.hasAccessTo(c, 'market');
const hasPlaytestAccess = auth.hasAccessTo(c, 'playtest');
return c.json({
availableApps: {
market: hasMarketAccess,
playtest: hasPlaytestAccess
}
});
});
`$3
`typescript
// URL de connexion avec redirect
const loginUrl = auth.getLoginUrl('https://hub.lovelace.gg/dashboard');// URL du portail
const portalUrl = auth.getPortalUrl();
`Types TypeScript
`typescript
interface LovelaceUser {
id: string;
email: string;
name: string;
access: {
hub: boolean;
market: boolean;
playtest: boolean;
};
}interface VerifyResult {
user: LovelaceUser | null;
hasAccess: boolean;
isAuthenticated: boolean;
}
`Exemple complet
`typescript
import { Hono } from 'hono';
import { LovelaceAuth } from '@lovelace/auth-sdk';const app = new Hono();
const auth = new LovelaceAuth({ app: 'hub' });
// Routes publiques
app.get('/', (c) => c.text('Home page'));
// Routes protégées
app.use('/dashboard/*', auth.middleware());
app.get('/dashboard', (c) => {
const user = auth.getUser(c);
return c.html(
);
});app.get('/logout', (c) => {
return auth.logout(c);
});
export default app;
``