check pin login

This commit is contained in:
tzw
2025-02-18 16:50:34 +06:30
parent 8f57098a6f
commit 1c15c3cf9f
3 changed files with 27 additions and 1 deletions

View File

@@ -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));
}

View File

@@ -408,6 +408,17 @@ class _HomePageState extends State<HomePage> {
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(

View File

@@ -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<User?>? userListener;
_init() async {