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érequisLien 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é.
SUPABASE_URL=https://your-project.supabase.co
SUPABASE_ANON_KEY=your-anon-key
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.
InstallationLien direct vers Installation
Avant d’utiliser la classe MastraAuthSupabase, vous devez installer le package @mastra/auth-supabase.
- npm
- pnpm
- Yarn
- Bun
npm install @mastra/auth-supabase@latest
pnpm add @mastra/auth-supabase@latest
yarn add @mastra/auth-supabase@latest
bun add @mastra/auth-supabase@latest
Exemple d’utilisationLien direct vers Exemple d’utilisation
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,
}),
},
})
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é clientLien 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èsLien 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 :
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
Consultez la documentation Supabase pour découvrir d’autres méthodes d’authentification, telles qu’OAuth et les liens magiques.
Configurer MastraClientLien 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 :
import { MastraClient } from '@mastra/client-js'
export const mastraClient = new MastraClient({
baseUrl: 'https://<mastra-api-url>',
headers: {
Authorization: `Bearer ${accessToken}`,
},
})
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éesLien 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 :
- React
- cURL
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>
}
curl -X POST http://localhost:4111/api/agents/weatherAgent/generate \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <your-supabase-access-token>" \
-d '{
"messages": "Weather in London"
}'