Skip to main content

Who can do what

This page shows which default role may use each receiving button, and which API right and web action stands behind it. It describes the defaults that a new database gets. An administrator can change every cell in Users & Roles > Permission Matrix. A change made there wins over this page.

Two gates apply to a button:

  1. The web action. The server checks that the role may run the action behind the button. A refusal reads Forbidden("{action}").
  2. The API right. The action calls an API method. The method has its own list of roles. A refusal comes from the method.

A button works only when both gates are open.

Roles​

ADMIN, MANAGER, SUPERVISOR, OPERATOR and VIEWER. ADMIN and MANAGER may use everything on this page.

Screens and buttons​

WhatWeb actionAPI methodSUPERVISOROPERATORVIEWER
Open the list and the receipt (read)the list formslist_receipt, get_receipt, list_receipt_detail, ...YesYesYes
New, Save (header)generic_new, generic_savecreate_receipt, update_receiptNoYesNo
Delete receiptgeneric_delete, generic_delete_selecteddelete_receipt, delete_many_receiptNoYesNo
New line, Save linegeneric_new, generic_savecreate_receipt_detail, update_receipt_detailNoAdd: yes. Edit: no.No
Delete linegeneric_delete_selecteddelete_receipt_detail, delete_many_receipt_detailNoNoNo
Receivereceipt_receivereceipt_receive_against_asnYesYesNo
Resume scan, serial scanreceipt_resume_serials, receipt_capture_serialcapture_serialYesYesNo
Adjust Qtygeneric_rpc_commandreceipt_adjust_received_qtyYesYesNo
Report damageThe window wms-report-damage calls the API method. No server action of its own was found.receipt_report_damageNoNoNo
Put on Holdreceipt_put_on_holdreceipt_put_on_holdNoNoNo
Release Holdreceipt_release_holdreceipt_release_from_holdNoNoNo
Cancel Receiptgeneric_rpc_commandreceipt_cancelNoNoNo
Close Receiptreceipt_closereceipt_closeNoNoNo
Move Boxesgeneric_rpc_commandreceipt_replace_palletYesYesNo
Cancel Boxgeneric_rpc_commandreceipt_cancel_planned_caseYesNoNo

Where "No" is shown because of the web action, the API would allow the role. For example receipt_close is open to OPERATOR and SUPERVISOR in the API, because the RF terminal uses it. The web button Close Receipt is refused by the web action gate unless an administrator grants the action receipt_close to the role.

How the cells were found​

CellSource
Web actions open to SUPERVISOR and OPERATORThe allowlists in crates/libs/wms-lib-auth/src/authorization/seeder.rs. They hold generic_*, receipt_receive, receipt_capture_serial, receipt_resume_serials and generic_rpc_command. receipt_put_on_hold, receipt_release_hold and receipt_close are not in them.
API method listsdeclare_rpc_module! blocks in crates/services/app-server/src/web/rpcs/receipt_rpc.rs, receipt_detail_rpc.rs, receipt_commands_rpc.rs, case_level_commands_rpc.rs, serial_commands_rpc.rs.
Extra grants of a new databasecrates/libs/wms-lib-sql/sql/wms-app/migrations/001_baseline.sql (roles 1002 OPERATOR and 1004 SUPERVISOR: receipt_receive_against_asn, capture_serial, receipt_close, receipt_adjust_received_qty for OPERATOR) and migrations 047, 048.

SUPERVISOR also holds three overrides in the baseline: receipt.override_close_discrepancy, receipt.override_qty_excess and receipt.override_qty_shortage. They let a supervisor agree to a discrepancy at close, an excess receive, or a short receive. No other default role has them. See Receiving a line and Closing a receipt.

Inconsistencies seen​

  • OPERATOR may add a line (create_receipt_detail) but may not save a change to it or delete it (update_receipt_detail, delete_receipt_detail are for ADMIN and MANAGER only in the code, receipt_detail_rpc.rs). Whether the web Save of a line is refused for OPERATOR was not run.
  • Cancel Receipt, Adjust Qty, Move Boxes and Cancel Box all use the one web action generic_rpc_command. For these, the API method decides, and the refusal is the method's own message.
  • Close Receipt is open to OPERATOR on the RF terminal and closed to OPERATOR on the web screen.

Not confirmed by code: the exact refusal text a role sees on each button. To verify: sign in as OPERATOR on a test warehouse and press Put on Hold, Cancel Receipt, Close Receipt in turn.