Skip to main content

Who can do what

This page shows which default role may use each Task Manager button, and which web action and API method stand 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.

Three gates apply to a screen:

  1. The menu item and the form. A role needs the menu_item right to see the sidebar item, and the form right to open the form.
  2. The web action. The server checks that the role may run the action behind the button.
  3. The API method. The action calls an API method that has its own list of roles.

A button works only when all gates are open.

Roles​

ADMIN, MANAGER, SUPERVISOR, OPERATOR and VIEWER. ADMIN and MANAGER get everything on this page by default.

Gate 1: seeing the screens​

RoleMenu itemsForms
ADMIN, MANAGERYesRead and write
OPERATORYesRead and write
VIEWERYesRead
SUPERVISORNoNone

Source: crates/libs/wms-lib-auth/src/authorization/reconciler.rs:104-117. The code gives no default to any other role. The cell for SUPERVISOR is therefore "no" by the code. The product description of this role is "authorizes overrides". Administrators usually grant it the screens by hand.

Not confirmed by code: that no other seed gives SUPERVISOR the Task Manager screens on a new database. The search of the enterprise and warehouse migrations found no such grant. To verify: on a fresh test database sign in as SUPERVISOR and look at the sidebar.

Gates 2 and 3: buttons​

Yes means the default role has the right. No means it has not. The SUPERVISOR column assumes an administrator has already granted that role the screens (gate 1).

Screen and buttonWeb actionAPI methodSUPERVISOROPERATORVIEWER
Open any list (read)generic_rpc_query, query_list_formSee the next tablesee next tablesee next tablesee next table
Every Refreshgeneric_refreshnoneYesYesYes
Task Board: Return to Poolgeneric_rpc_commandtask_force_releaseAction: yes. Method: noNoNo
Task Board: Reassigngeneric_rpc_commandtask_reassignAction: yes. Method: noNoNo
Task Board: Delete Tasktask_delete_confirmtask_delete_manyAction: yes. Method: noAction: noNo
Pick Assignments: Dissolvegeneric_rpc_commandpick_assignment_dissolve_supervisedYesAction: yes. Method: noNo
Pick Target Exceptions: Retrygeneric_rpc_commandcartonization_exception_retryYesAction: yes. Method: noNo
Operators: Syncoperator_syncsync_operatorsNoNoNo
Operator card: Savegeneric_validate, generic_saveupdate_operatorAction: yes. Method: noAction: yes. Method: noNo
Task Permissions: New, Savegeneric_new, generic_validate, generic_savecreate_operator_task_permission, update_operator_task_permissionAction: yes. Method: noAction: yes. Method: noNo
Task Permissions: Deletegeneric_delete, generic_delete_selecteddelete_operator_task_permission, delete_many_operator_task_permissionAction: yes. Method: noAction: yes. Method: noNo

ADMIN and MANAGER can use every button above.

Read methods behind the lists​

ListAPI methodADMINMANAGERSUPERVISOROPERATORVIEWER
Task BoardThe screen reads the view task_board directly. No API method.n/an/an/an/an/a
Skip HistoryThe screen reads the view task_skip_board directly. No API method.n/an/an/an/an/a
Pick Assignments and cardpick_assignment_list, pick_assignment_board_get, pick_assignment_position_listYesYesYesNoNo
Pick Target Exceptionscartonization_exception_listYesYesYesNoNo
Operatorslist_operator, get_operatorYesYesNoYesYes
Task Permissionslist_operator_task_permission, get_operator_task_permissionYesYesNoYesYes

How the cells were found​

CellSource
Web actions open to SUPERVISOR and OPERATOROPERATIONAL_ACTION_ALLOWLIST in crates/libs/wms-lib-auth/src/authorization/seeder.rs:35-132. It holds generic_save, generic_new, generic_delete, generic_delete_selected, generic_validate, generic_refresh, generic_rpc_query and generic_rpc_command.
task_delete_confirm open to SUPERVISOR onlySUPERVISOR_ACTION_ALLOWLIST, seeder.rs:154-173.
operator_sync open to ADMIN and MANAGER onlyThe function default_server_action_grant, seeder.rs:190-202. operator_sync is in no list.
VIEWER web actionsVIEWER_READ_SERVER_ACTIONS, seeder.rs:176-184: refresh and query actions only.
API method listsThe declare_rpc_module! blocks of crates/services/app-server/src/web/rpcs/task_commands_rpc.rs (roles Admin, Manager), operator_rpc.rs and pick_assignment_rpc.rs.

Inconsistencies seen​

  • The code comments in task_commands_rpc.rs, seeder.rs and release.rs speak of a "supervisor band" for task_reassign, task_force_release and task_delete. The role list in code is Admin, Manager only. SUPERVISOR has no default right to these methods. See findings file docs-obsidian/plans/reference-findings-tasks.md.
  • For the three task buttons, SUPERVISOR holds the web action and lacks the method. The button opens and the command is refused.
  • OPERATOR holds the web action generic_rpc_command and generic_save, but the methods behind the buttons on Pick Assignments, Pick Target Exceptions, Operators and Task Permissions refuse it.

Not confirmed by code: the exact refusal text a role sees on each button. To verify: sign in as OPERATOR (and as a custom SUPERVISOR with the screens granted) on a test warehouse and press each button.

  • Task Manager
  • Return codes
  • Administrator guide: Users & Roles > Permission Matrix
  • API: the right of each method is on its page in the Tasks API reference and the Outbound API reference.