2
0
mirror of https://github.com/inventree/inventree-app.git synced 2025-05-01 06:56:50 +00:00

Hide actions if user does not have correct permissions

This commit is contained in:
Oliver Walters 2021-02-27 22:27:18 +11:00
parent 04f03188e2
commit 096c4e86dc
4 changed files with 74 additions and 36 deletions

View File

@ -62,7 +62,7 @@ class _CategoryDisplayState extends RefreshableState<CategoryDisplayWidget> {
) )
); );
if (category != null) { if ((category != null) && InvenTreeAPI().checkPermission('part_category', 'change')) {
actions.add( actions.add(
IconButton( IconButton(
icon: FaIcon(FontAwesomeIcons.edit), icon: FaIcon(FontAwesomeIcons.edit),

View File

@ -62,7 +62,7 @@ class _LocationDisplayState extends RefreshableState<LocationDisplayWidget> {
), ),
); );
if (location != null) { if ((location != null) && (InvenTreeAPI().checkPermission('stock_location', 'change'))) {
actions.add( actions.add(
IconButton( IconButton(
icon: FaIcon(FontAwesomeIcons.edit), icon: FaIcon(FontAwesomeIcons.edit),
@ -320,22 +320,29 @@ List<Widget> detailTiles() {
tiles.add(locationDescriptionCard()); tiles.add(locationDescriptionCard());
// Scan items into location // Stock adjustment actions
tiles.add( if (InvenTreeAPI().checkPermission('stock', 'change')) {
ListTile( // Scan items into location
title: Text(I18N.of(context).barcodeScanInItems), tiles.add(
leading: FaIcon(FontAwesomeIcons.exchangeAlt), ListTile(
trailing: FaIcon(FontAwesomeIcons.qrcode), title: Text(I18N
onTap: () { .of(context)
Navigator.push( .barcodeScanInItems),
context, leading: FaIcon(FontAwesomeIcons.exchangeAlt),
MaterialPageRoute(builder: (context) => InvenTreeQRView(StockLocationScanInItemsHandler(location))) trailing: FaIcon(FontAwesomeIcons.qrcode),
).then((context) { onTap: () {
refresh(); Navigator.push(
}); context,
}, MaterialPageRoute(builder: (context) =>
) InvenTreeQRView(
); StockLocationScanInItemsHandler(location)))
).then((context) {
refresh();
});
},
)
);
}
// Move location into another location // Move location into another location
// TODO: Implement this! // TODO: Implement this!

View File

@ -41,18 +41,29 @@ class _PartDisplayState extends RefreshableState<PartDetailWidget> {
@override @override
List<Widget> getAppBarActions(BuildContext context) { List<Widget> getAppBarActions(BuildContext context) {
return <Widget>[
IconButton( List<Widget> actions = [];
icon: FaIcon(FontAwesomeIcons.globe),
onPressed: _openInvenTreePage, if (InvenTreeAPI().checkPermission('part', 'view')) {
), actions.add(
// TODO: Hide the 'edit' button if the user does not have permission!! IconButton(
IconButton( icon: FaIcon(FontAwesomeIcons.globe),
icon: FaIcon(FontAwesomeIcons.edit), onPressed: _openInvenTreePage,
tooltip: I18N.of(context).edit, ),
onPressed: _editPartDialog, );
) }
];
if (InvenTreeAPI().checkPermission('part', 'change')) {
actions.add(
IconButton(
icon: FaIcon(FontAwesomeIcons.edit),
tooltip: I18N.of(context).edit,
onPressed: _editPartDialog,
)
);
}
return actions;
} }
_PartDisplayState(this.part) { _PartDisplayState(this.part) {
@ -82,8 +93,11 @@ class _PartDisplayState extends RefreshableState<PartDetailWidget> {
} }
void _toggleStar() async { void _toggleStar() async {
await part.update(context, values: {"starred": "${!part.starred}"});
refresh(); if (InvenTreeAPI().checkPermission('part', 'change')) {
await part.update(context, values: {"starred": "${!part.starred}"});
refresh();
}
} }
void _savePart(Map<String, String> values) async { void _savePart(Map<String, String> values) async {

View File

@ -140,10 +140,9 @@ class _StockItemDisplayState extends RefreshableState<StockDetailWidget> {
void _stockUpdateMessage(bool result) { void _stockUpdateMessage(bool result) {
showSnackIcon( if (result) {
result ? "Stock item updated" : "Stock item updated failed", showSnackIcon("Stock item updated", success: true);
success: result }
);
} }
void _removeStock() async { void _removeStock() async {
@ -514,6 +513,24 @@ class _StockItemDisplayState extends RefreshableState<StockDetailWidget> {
tiles.add(headerTile()); tiles.add(headerTile());
// First check that the user has the required permissions to adjust stock
if (!InvenTreeAPI().checkPermission('stock', 'change')) {
tiles.add(
ListTile(
title: Text("Permission Required"),
leading: FaIcon(FontAwesomeIcons.userTimes)
)
);
tiles.add(
ListTile(
subtitle: Text("Your account does not have permission to perform stock adjustments"),
)
);
return tiles;
}
if (!item.isSerialized()) { if (!item.isSerialized()) {
tiles.add( tiles.add(
ListTile( ListTile(