Files
EM2_ERP/em2rp/lib/utils/auth_guard_widget.dart

40 lines
1.1 KiB
Dart

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);
// Si l'utilisateur n'est pas connecté
if (localAuthProvider.currentUser == null) {
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!)) {
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
return child;
}
}