Supabase đ
Supabase, crĂ©ation du projetâ
Naviguez sur la page de connexion de Supabase. Nous vous recommendons de vous connecter avec votre compte GitHub.
CrĂ©er l'organisationâ
Sur la page « Create a new organization » :
- Dans le champ Name, inscrivez le nom de votre organisation (par exemple
SuperProjet). - Laissez Type of organization à « Personal » et Plan à « Free - $0/month ».
- Cliquez sur le bouton Create organization.
- Vous aboutissez sur la page de création de projet.
CrĂ©er le projetâ
Sur la page « Create a new project » :
- Dans la liste Organization, vérifiez que l'organisation créée à l'étape précédente est sélectionnée.
- Vous pouvez Connect to GitHub, mais ce n'est pas nécessaire pour l'usage que nous allons en faire dans ce projet.
- Dans le champ Project name, donnez un nom Ă votre projet.
- Dans le champ Database Password, inscrivez un mot de passe fort et conservez-le en lieu sûr.
- Laissez la Region proposée (par exemple « Americas »).
- Les options de sécurité à cocher n'importent pas pour notre cas.
- Cliquez sur le bouton Create new project. La création du projet peut prendre quelques minutes.
RĂ©cupĂ©rer l'URL et la clĂ© du projetâ
- Dans la zone du haut, cliquez sur le bouton vert Connect. Un panneau devrait souvrir à droite de l'écran.
- Sélectionnez l'option Framework - Use a client library si ce n'est pas déjà fait.
- Dans le menu à dérouler pour choisir le framework, sélectionnez Flutter.
- Suivez les instructions, donc l'installation du package
supabase_flutteret pour le fichierlib/main.dart.
Les valeurs fournies ne devraient pas se retrouver directement dans main. Pour un projet propre, extrayez la valeur de url dans une configuration, et celle de anonKey dans des secrets.
Supabase, configurer les droits d'accĂšsâ
Il faut créer deux politiques d'accÚs (policies) : une pour les buckets et une pour les objets (les fichiers) qu'ils contiennent.
Ajouter les droits pour les bucketsâ
- Dans le menu de navigation principal Ă gauche, cliquez sur Storage.
- Dans le panneau secondaire de Storage, Files devrait ĂȘtre dĂ©jĂ sĂ©lectionn. SĂ©lectionnez la rubrique Policies la rubrique.
- Repérez la section Policies under storage.buckets, puis cliquez sur le bouton New policy de cette section.
- Dans la boßte de dialogue « Adding new policy to storage.buckets », choisissez l'option For full customization (« Create a policy from scratch »).
- Remplissez le formulaire :
- Policy name :
Everything for all; - Allowed operation : sélectionnez ALL;
- Target roles : ne sélectionnez rien (tous les rÎles publics sont visés par défaut);
- USING expression : inscrivez
true. - USING CHECK expression : laissez vide.
- Policy name :
- Cliquez sur Review.
- Vérifiez le code SQL affiché, qui doit correspondre à celui-ci, puis cliquez sur Save policy.
CREATE POLICY "Everything for all" ON "storage"."buckets"
AS PERMISSIVE FOR ALL
TO public
USING (true)
Ajouter les droits pour les objets (images) dans les bucketsâ
- Toujours dans Storage > Policies, repérez la section Other policies under storage.objects, puis cliquez sur le bouton New policy de cette section.
- Dans la boßte de dialogue « Adding new policy to storage.objects », choisissez l'option For full customization (« Create a policy from scratch »).
- Remplissez le formulaire de la mĂȘme façon que pour les buckets :
- Policy name :
Everything for all; - Allowed operation : sélectionnez ALL;
- Target roles : ne sélectionnez rien (tous les rÎles publics sont visés par défaut);
- USING expression : inscrivez
true. - USING CHECK expression : laissez vide.
- Policy name :
- Cliquez sur Review, puis sur Save policy.
- Vérifiez le code SQL affiché, qui doit correspondre à celui-ci, puis cliquez sur Save policy.
CREATE POLICY "Everything for all" ON "storage"."objects"
AS PERMISSIVE FOR ALL
TO public
USING (true)
Ces politiques donnent tous les droits Ă tout le monde. Elles conviennent pour un exercice, mais pas pour une application en production.
Supabase, crĂ©er un bucket publicâ
CrĂ©er le bucket par l'interfaceâ
- Sélectionnez l'onglet Buckets.
- Cliquez sur le bouton New bucket.
- Dans la boßte de dialogue « Create storage bucket » :
- sous Name of bucket, inscrivez le nom du bucket (par exemple
supabucket). Ce nom ne peut plus ĂȘtre modifiĂ© par la suite et n'accepte que des lettres minuscules, des chiffres, des points et des tirets; - activez l'interrupteur Public bucket, pour que tout le monde puisse lire les fichiers sans autorisation.
- Pour un usage ouvert au public, les options Restrict file size et Restrict MIME types devraient ĂȘtre cochĂ©es. Quelqu'un pourrait dĂ©cider de mettre des Ă©normes fichiers de n'importe quels types louches dans votre systĂšme. Par contre ça supposerait qu'il y aurait une gestion des cas problĂ©matiques fait par votre systĂšme, en amont.
- sous Name of bucket, inscrivez le nom du bucket (par exemple
- Cliquez sur Create.
Comme c'est indiqué, un bucket public est accessible en lecture sans autorisation, mais les autres opérations (téléversement, suppression) restent soumises aux politiques d'accÚs créées plus haut.
Tout est prĂȘt pour que des images puissent ĂȘtre envoyĂ©es de votre projet Ă Supabase.
Ajouter une imageâ
final supabase = Supabase.instance.client;
//TODO doc: https://supabase.com/docs/reference/dart/storage-from-upload
final String fullPath = await supabase
.storage
.from('le-nom-de-mon-bucket')
.upload(
//TODO Mettre un nom unique
"nom-du-fichier",
File("path-du-fichier")
);
RĂ©cupĂ©rer une imageâ
final supabase = Supabase.instance.client;
//TODO doc: https://supabase.com/docs/reference/dart/storage-from-getpublicurl
string url = supabase
.storage
.from('le-nom-de-mon-bucket')
// TODO le bucket doit ĂȘtre public pour qu'on puisse rĂ©cupĂ©rer l'URL public
.getPublicUrl("nom-du-fichier");
Exemple de codeâ
Vous pouvez regarder l'exemple de code supabase_storage.