From 1c15c3cf9ff85d3cd7e750556bb7f6c03a6d40d0 Mon Sep 17 00:00:00 2001 From: tzw Date: Tue, 18 Feb 2025 16:50:34 +0630 Subject: [PATCH] check pin login --- lib/domain/entities/user.dart | 6 +++++- lib/pages/main/home_page.dart | 11 +++++++++++ lib/pages/main/model/main_model.dart | 11 +++++++++++ 3 files changed, 27 insertions(+), 1 deletion(-) diff --git a/lib/domain/entities/user.dart b/lib/domain/entities/user.dart index fe0eabf..e7933b3 100644 --- a/lib/domain/entities/user.dart +++ b/lib/domain/entities/user.dart @@ -133,7 +133,7 @@ class User { } bool isCustomer() { - return privileges.length == 0; + return privileges.isEmpty; } bool hasSysAdmin() { @@ -188,6 +188,10 @@ class User { return hasSysAdmin() || hasAdmin() || _has(privilege_carton); } + bool hasPinLogin() { + return _has(privilege_pin); + } + bool _has(String privilege) { return (privileges.contains(privilege)); } diff --git a/lib/pages/main/home_page.dart b/lib/pages/main/home_page.dart index 42ab6b2..02af620 100644 --- a/lib/pages/main/home_page.dart +++ b/lib/pages/main/home_page.dart @@ -408,6 +408,17 @@ class _HomePageState extends State { final pinLoginBtn = IconButton( onPressed: () { + if (!mainModel.hasPinLogin()) { + showMsgDialog(context, "Error", "Login user doesn't have permission"); + return; + } + + if (!mainModel.allowPin()) { + showMsgDialog( + context, "Error", "Login user has more than one privilege"); + return; + } + Navigator.pushAndRemoveUntil( context, CupertinoPageRoute( diff --git a/lib/pages/main/model/main_model.dart b/lib/pages/main/model/main_model.dart index 4761306..971e651 100644 --- a/lib/pages/main/model/main_model.dart +++ b/lib/pages/main/model/main_model.dart @@ -82,6 +82,17 @@ class MainModel extends ChangeNotifier { return this.user != null && this.user!.hasAdmin(); } + bool hasPinLogin() { + return user != null && user!.hasPinLogin(); + } + + bool allowPin() { + return user != null && + user!.privileges.isNotEmpty && + user!.privileges.length == 1 && + hasPinLogin(); + } + // userListener should never be closed StreamSubscription? userListener; _init() async {