2
0
mirror of https://github.com/inventree/inventree-app.git synced 2025-04-29 05:56:47 +00:00

Merge pull request #155 from inventree/search-permissions

Wrap search queries in permission checks
This commit is contained in:
Oliver 2022-06-04 09:58:23 +10:00 committed by GitHub
commit 51a90f5fca
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -8,6 +8,7 @@ import "package:inventree/inventree/purchase_order.dart";
import "package:inventree/widget/part_list.dart"; import "package:inventree/widget/part_list.dart";
import "package:inventree/widget/purchase_order_list.dart"; import "package:inventree/widget/purchase_order_list.dart";
import "package:inventree/widget/refreshable_state.dart"; import "package:inventree/widget/refreshable_state.dart";
import "package:inventree/api.dart";
import "package:inventree/l10.dart"; import "package:inventree/l10.dart";
import "package:inventree/inventree/part.dart"; import "package:inventree/inventree/part.dart";
import "package:inventree/inventree/stock.dart"; import "package:inventree/inventree/stock.dart";
@ -115,6 +116,8 @@ class _SearchDisplayState extends RefreshableState<SearchWidget> {
*/ */
Future<void> search(String term) async { Future<void> search(String term) async {
var api = InvenTreeAPI();
setState(() { setState(() {
// Do not search on an empty string // Do not search on an empty string
nPartResults = 0; nPartResults = 0;
@ -132,45 +135,53 @@ class _SearchDisplayState extends RefreshableState<SearchWidget> {
} }
// Search parts // Search parts
InvenTreePart().count(searchQuery: term).then((int n) { if (api.checkPermission("part", "view")) {
if (term == searchController.text) { InvenTreePart().count(searchQuery: term).then((int n) {
setState(() { if (term == searchController.text) {
nPartResults = n; setState(() {
nSearchResults++; nPartResults = n;
}); nSearchResults++;
} });
}); }
});
}
// Search part categories // Search part categories
InvenTreePartCategory().count(searchQuery: term,).then((int n) { if (api.checkPermission("part_category", "view")) {
if (term == searchController.text) { InvenTreePartCategory().count(searchQuery: term,).then((int n) {
setState(() { if (term == searchController.text) {
nCategoryResults = n; setState(() {
nSearchResults++; nCategoryResults = n;
}); nSearchResults++;
} });
}); }
});
}
// Search stock items // Search stock items
InvenTreeStockItem().count(searchQuery: term).then((int n) { if (api.checkPermission("stock", "view")) {
if (term == searchController.text) { InvenTreeStockItem().count(searchQuery: term).then((int n) {
setState(() { if (term == searchController.text) {
nStockResults = n; setState(() {
nSearchResults++; nStockResults = n;
}); nSearchResults++;
} });
}); }
});
}
// Search stock locations // Search stock locations
InvenTreeStockLocation().count(searchQuery: term).then((int n) { if (api.checkPermission("stock_location", "view")) {
if (term == searchController.text) { InvenTreeStockLocation().count(searchQuery: term).then((int n) {
setState(() { if (term == searchController.text) {
nLocationResults = n; setState(() {
nLocationResults = n;
nSearchResults++; nSearchResults++;
}); });
} }
}); });
}
// TDOO: Re-implement this once display for companies has been fixed // TDOO: Re-implement this once display for companies has been fixed
/* /*
@ -188,20 +199,21 @@ class _SearchDisplayState extends RefreshableState<SearchWidget> {
*/ */
// Search purchase orders // Search purchase orders
InvenTreePurchaseOrder().count( if (api.checkPermission("purchase_order", "view")) {
searchQuery: term, InvenTreePurchaseOrder().count(
filters: { searchQuery: term,
"outstanding": "true" filters: {
} "outstanding": "true"
).then((int n) { }
if (term == searchController.text) { ).then((int n) {
setState(() { if (term == searchController.text) {
nPurchaseOrderResults = n; setState(() {
nSearchResults++; nPurchaseOrderResults = n;
}); nSearchResults++;
} });
}); }
});
}
} }
List<Widget> _tiles(BuildContext context) { List<Widget> _tiles(BuildContext context) {