cerbere_admin 0.1.0+1 copy "cerbere_admin: ^0.1.0+1" to clipboard
cerbere_admin: ^0.1.0+1 copied to clipboard

Flutter admin package for roles and permissions with Firebase. Companion to cerbere; requires Firebase Admin SDK for user management.

Cerbère Admin #

License: MIT

[Cerbère Admin]

Package Flutter complémentaire de cerbere pour la gestion administrative des rôles et droits avec Firebase Admin SDK.

  • cerbere : rôles et autorisations dans une app classique (sans Admin SDK).
  • cerbere_admin : back-office admin (utilisateurs, rôles, droits) avec liste des utilisateurs Firebase Auth via Admin SDK.

Fonctionnalités #

  • Pages d’administration : gestion des utilisateurs (et de leurs rôles), gestion des rôles et droits.
  • Repository étendu : CerbereUtilisateurAdminRepository avec getAllFirebaseUsers() (Firebase Admin SDK).
  • Widget d’initialisation : CerbereAdminInitWidget pour brancher Auth, Firestore, Admin SDK et liste des droits.
  • Thème et layout : thème et layout dédiés pour une app admin cohérente.

Prérequis : ce package dépend de cerbere et nécessite Firebase Admin SDK (via dart_firebase_admin).


Installation #

Depuis pub.dev (quand le package sera publié) #

Ajoutez dans votre pubspec.yaml :

dependencies:
  cerbere_admin: ^0.1.0

Puis :

flutter pub get

En développement local (monorepo / path) #

Si vous travaillez avec des clones locaux de cerbere et dart_firebase_admin :

dependencies:
  cerbere_admin:
    path: ../cerbere_admin

Assurez-vous que cerbere et dart_firebase_admin sont résolus (par exemple via path ou dependency_overrides).


Configuration Firebase #

  • Firebase (Auth, Firestore) configuré côté client comme d’habitude.
  • Firebase Admin SDK : initialisez une app Admin (compte de service) pour pouvoir lister les utilisateurs Auth. Utilisez le package dart_firebase_admin (ou équivalent).

Initialisation #

Dans le main.dart de votre application d’administration, enveloppez l’app avec CerbereAdminInitWidget :

import 'package:cerbere_admin/cerbere_admin.dart';
import 'package:firebase_auth/firebase_auth.dart';
import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:dart_firebase_admin/dart_firebase_admin.dart';
import 'package:cerbere/cerbere.dart';

void main() async {
  WidgetsFlutterBinding.ensureInitialized();

  await Firebase.initializeApp(...);

  final adminApp = FirebaseAdminApp.initializeApp(
    'your-project-id',
    Credential.fromServiceAccountParams(
      email: 'your-service-account@project.iam.gserviceaccount.com',
      clientId: 'your-client-id',
      privateKey: 'your-private-key',
    ),
  );

  final droits = [
    CerbereDroit(
      cle: 'can_edit_users',
      nom: 'Éditer les utilisateurs',
      description: 'Permet d\'éditer les utilisateurs',
    ),
    CerbereDroit(
      cle: 'can_delete_users',
      nom: 'Supprimer les utilisateurs',
      description: 'Permet de supprimer les utilisateurs',
    ),
    CerbereDroit(
      cle: 'can_view_reports',
      nom: 'Voir les rapports',
      description: 'Accès aux rapports',
    ),
  ];

  runApp(
    CerbereAdminInitWidget(
      firebaseAuth: FirebaseAuth.instance,
      firestore: FirebaseFirestore.instance,
      firebaseAdminApp: adminApp,
      droits: droits,
      langue: CerbereLangue.fr, // optionnel, défaut: CerbereLangue.en
      child: MyAdminApp(),
    ),
  );
}

Utilisation #

Page de gestion des utilisateurs #

Affiche la liste des utilisateurs (Firebase Auth via Admin SDK) et permet d’assigner ou retirer des rôles :

import 'package:cerbere_admin/cerbere_admin.dart';

Navigator.push(
  context,
  MaterialPageRoute(
    builder: (context) => const CerbereUtilisateursPage(),
  ),
);

// Avec option d’affichage de la colonne "nom"
Navigator.push(
  context,
  MaterialPageRoute(
    builder: (context) => const CerbereUtilisateursPage(colonneNom: true),
  ),
);

Helpers de navigation :

Navigator.of(context).push(CerbereUtilisateursPage.route());
// ou
Navigator.of(context).push(CerbereUtilisateursPage.page());

Page de gestion des rôles #

Gestion des rôles et de leurs droits (création, édition, suppression) :

import 'package:cerbere_admin/cerbere_admin.dart';

Navigator.push(
  context,
  MaterialPageRoute(
    builder: (context) => const CerbereRolesPage(),
  ),
);

// Ou
Navigator.of(context).push(CerbereRolesPage.route());

Repository étendu #

CerbereUtilisateurAdminRepository étend CerbereUtilisateurRepository et ajoute :

  • getAllFirebaseUsers() : récupère la liste des utilisateurs Firebase Auth via Firebase Admin SDK.

Il est enregistré par CerbereAdminInitWidget ; vous pouvez le récupérer avec :

final repo = context.read<CerbereUtilisateurAdminRepository>();
final firebaseUsers = await repo.getAllFirebaseUsers();

API exportée #

Le package exporte (via package:cerbere_admin/cerbere_admin.dart) :

Export Description
CerbereAdminInitWidget Widget d’initialisation (Auth, Firestore, Admin SDK, droits).
CerbereUtilisateurAdminRepository Repository utilisateur avec support Admin SDK.
CerbereUtilisateursPage Page de gestion des utilisateurs et de leurs rôles.
CerbereRolesPage Page de gestion des rôles et droits.

Structure recommandée des packages #

  • cerbere : package de base (rôles, droits, permissions) pour une app classique, sans dépendance à Firebase Admin SDK.
  • cerbere_admin : package pour l’app d’administration uniquement (utilisateurs, rôles, droits), avec Firebase Admin SDK.

Cela permet d’utiliser cerbere dans vos applications métier sans charger l’Admin SDK, et cerbere_admin uniquement dans l’application d’administration.


Dépendances #

  • cerbere : rôles et autorisations.
  • dart_firebase_admin : Firebase Admin SDK pour Dart.
  • flutter_bloc, equatable, uuid.

Tests #

flutter test

Publication sur pub.dev #

  1. Publier d’abord les packages cerbere et dart_firebase_admin sur pub.dev (s’ils ne le sont pas déjà).

  2. Dans pubspec.yaml de cerbere_admin :

    • Remplacer les dépendances path par des contraintes de version, par exemple :
      dependencies:
        cerbere: ^0.1.0
        dart_firebase_admin: ^0.1.0
      
    • Retirer ou commenter publish_to: none pour autoriser la publication sur pub.dev.
    • Décommenter et adapter les métadonnées (homepage, repository, issue_tracker, documentation, topics).
  3. Vérifier la description (courte, en anglais recommandé pour pub.dev) et le CHANGELOG.md.

  4. Dry-run puis publication :

    dart pub publish --dry-run
    dart pub publish
    

Contribution #

Les contributions sont les bienvenues. Ouvrez une issue ou une pull request sur le dépôt GitHub.


Licence #

Ce projet est sous licence MIT. Voir le fichier LICENSE pour les détails.

2
likes
0
points
0
downloads

Documentation

Documentation

Publisher

unverified uploader

Weekly Downloads

Flutter admin package for roles and permissions with Firebase. Companion to cerbere; requires Firebase Admin SDK for user management.

Repository (GitHub)
View/report issues

Topics

#firebase #admin #roles #permissions #flutter

License

unknown (license)

Dependencies

bloc, cerbere, cloud_firestore, dart_firebase_admin, equatable, firebase_auth, flutter, flutter_bloc, uuid

More

Packages that depend on cerbere_admin