Aller au contenu principal

Supabase

Le package @mastra/auth-supabase fournit à Mastra une authentification fondée sur Supabase Auth. Il vérifie les requêtes entrantes au moyen du système d’authentification de Supabase et s’intègre au serveur Mastra via l’option auth.

Prérequis
Lien direct vers Prérequis

Cet exemple utilise Supabase Auth. Ajoutez vos identifiants Supabase à votre fichier .env et vérifiez que votre projet Supabase est correctement configuré.

.env
SUPABASE_URL=https://your-project.supabase.co
SUPABASE_ANON_KEY=your-anon-key
remarque

Vérifiez les paramètres Row Level Security (RLS) de Supabase afin de garantir des contrôles d’accès aux données appropriés.

Installation
Lien direct vers Installation

Avant d’utiliser la classe MastraAuthSupabase, vous devez installer le package @mastra/auth-supabase.

npm install @mastra/auth-supabase@latest

Exemple d’utilisation
Lien direct vers Exemple d’utilisation

src/mastra/index.ts
import { Mastra } from '@mastra/core'
import { MastraAuthSupabase } from '@mastra/auth-supabase'

export const mastra = new Mastra({
server: {
auth: new MastraAuthSupabase({
url: process.env.SUPABASE_URL,
anonKey: process.env.SUPABASE_ANON_KEY,
}),
},
})
info

La méthode authorizeUser par défaut vérifie la colonne isAdmin de la table users dans le schéma public. Pour personnaliser l’autorisation des utilisateurs, fournissez une fonction authorizeUser personnalisée lors de la création du Provider.

Consultez la référence de MastraAuthSupabase pour découvrir toutes les options de configuration disponibles.

Configuration côté client
Lien direct vers Configuration côté client

Lorsque vous utilisez l’authentification Supabase, récupérez le jeton d’accès Supabase côté client et transmettez-le à vos requêtes Mastra.

Récupérer le jeton d’accès
Lien direct vers Récupérer le jeton d’accès

Utilisez le client Supabase pour authentifier les utilisateurs et récupérer leur jeton d’accès :

lib/auth.ts
import { createClient } from '@supabase/supabase-js'

const supabase = createClient('<supabase-url>', '<supabase-key>')

const authTokenResponse = await supabase.auth.signInWithPassword({
email: "<user's email>",
password: "<user's password>",
})

const accessToken = authTokenResponse.data?.session?.access_token
remarque

Consultez la documentation Supabase pour découvrir d’autres méthodes d’authentification, telles qu’OAuth et les liens magiques.

Configurer MastraClient
Lien direct vers configuring-mastraclient

Lorsque auth est activé, toutes les requêtes effectuées avec MastraClient doivent inclure un jeton d’accès Supabase valide dans l’en-tête Authorization :

lib/mastra/mastra-client.ts
import { MastraClient } from '@mastra/client-js'

export const mastraClient = new MastraClient({
baseUrl: 'https://<mastra-api-url>',
headers: {
Authorization: `Bearer ${accessToken}`,
},
})
info

Le jeton d’accès doit être précédé de Bearer dans l’en-tête Authorization.

Consultez le SDK client Mastra pour davantage d’options de configuration.

Effectuer des requêtes authentifiées
Lien direct vers Effectuer des requêtes authentifiées

Une fois MastraClient configuré avec le jeton d’accès Supabase, vous pouvez envoyer des requêtes authentifiées :

src/components/test-agent.tsx
import { mastraClient } from '../../lib/mastra-client'

export const TestAgent = () => {
async function handleClick() {
const agent = mastraClient.getAgent('weatherAgent')

const response = await agent.generate("What's the weather like in New York")

console.log(response)
}

return <button onClick={handleClick}>Test Agent</button>
}