import 'package:em2rp/providers/local_user_provider.dart';
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'package:em2rp/views/login_page.dart';

class AuthGuard extends StatelessWidget {
  final Widget child;
  final String? requiredPermission;

  const AuthGuard({
    super.key,
    required this.child,
    this.requiredPermission,
  });

  @override
  Widget build(BuildContext context) {
    final localAuthProvider = Provider.of<LocalUserProvider>(context);

    // Log pour débug
    print('[AuthGuard] Vérification accès - User: ${localAuthProvider.currentUser?.uid}, Permission requise: $requiredPermission');

    // Si l'utilisateur n'est pas connecté
    if (localAuthProvider.currentUser == null) {
      print('[AuthGuard] Utilisateur non connecté, redirection vers LoginPage');
      return const LoginPage();
    }

    // Si la page requiert une permission spécifique et que l'utilisateur ne la possède pas
    if (requiredPermission != null &&
        !localAuthProvider.hasPermission(requiredPermission!)) {
      print('[AuthGuard] Permission "$requiredPermission" refusée');
      return Scaffold(
        appBar: AppBar(title: const Text("Accès refusé")),
        body: const Center(
          child: Text("Vous n'êtes pas autorisé à accéder à cette page."),
        ),
      );
    }

    // Sinon, afficher la page demandée
    print('[AuthGuard] Accès autorisé, affichage de la page');
    return child;
  }
}
