Customizable Permissions

What is it good for?

Starting from version 1.4.16, users now have the capability to tailor the permissions required for accessing or modifying specific features. This enhancement enables a customized allocation of permissions beyond the default settings, allowing for personalization according to individual or organizational requirements. Moreover, it’s now possible to deactivate certain features by setting their permissions to ‘off’.

Additionally, we’ve introduced a special ‘maintainer’ permission level, which cannot be directly assigned to any user. Should any feature be designated with the maintainer permission, a new option will be activated within the global settings to initiate maintainer mode. Users wishing to activate this mode can do so by navigating to the global settings and entering the required password. Initially, this password field will be blank, thus, upon configuring, it is crucial to establish a maintainer password to ensure security and functionality.

Enabled features and required permissions

You can modify the available features and which permission is required to use which feature. This is especially handy for configuration parts where you can add multiple levels of user.

Allowed permissions names:

  • print : can send printer commands, start printing
  • addFiles : can add print and model files
  • delFiles : can remove print jobs and model files
  • configure : Configure printer and other settings
  • history : Can see print history entries
  • seeProjects : Can see projects
  • editProjects : Can add, delete and modify existing projects
  • seeAllPrinters : not used at the moment
  • readFiles : can see print files
  • fullStop : Can hit emergency stop button
  • manageAccounts : Can add new accounts, but can only assign permissions he has, except he has admin permission as well!
  • admin : Highest regular user permission. Can change all user permissions.
  • maintainer : Permission you get added when you activate maintainer mode
  • touch : automatically assigned to touchscreen interface
  • off : this is not assignable, so no one will be able to see/use the feature

When defining the permissions, you can use a comma separated list of permissions. It is allowed if one of the comma separated terms is true.

Each term can hold one or more permissions concatenated by a plus sign. You can also negate a permission like !touch if you mean not touchscreen.

For example if you want all users with print permission to see the feature but it should not appear on touch interface which also has print permission you write “print+!touch”.

Features get enabled and overwritten in one of the 3 possible server startup configurations. Check Startup Configuration doc for more information.

Place the features tag inside the root <server> tag. The default permissions are shown below and can be used as a starting point. Note that you must restart Repetier-Server to apply the changes!

<features>
<!-- ========= Control which config options appear in global settings for whom ========= -->

<!-- Terminal -->
<config-terminal>admin</config-terminal>
<!-- External Links -->
<config-external-links>configure</config-external-links>
<config-gui>configure</config-gui>
<!-- GPIO Settings -->
<config-gpio>configure</config-gpio>
<!-- Import folders -->
<config-folders>configure</config-folders>
<!-- Connectivity -->
<config-connectivity>configure</config-connectivity>
<!-- MQTT-->
<config-mqtt>configure</config-mqtt>
<!-- Network -->
<config-network>configure,touch</config-network>
<!-- Preview Images -->
<config-preview-images>configure</config-preview-images>
<!-- PDF Print Reports -->
<config-print-reports>configure</config-print-reports>
<!-- Printing Costs -->
<config-printing-costs>configure</config-printing-costs>
<!-- Push Messages -->
<config-push-messages>configure</config-push-messages>
<!-- Timelapse Videos -->
<config-timelapse>configure</config-timelapse>
<!-- Web Actions -->
<config-web-actions>configure</config-web-actions>
<!-- Webserver -->
<config-webserver>configure</config-webserver>
<!-- Run autoupdate -->
<update-server>configure,touch</update-server>

<!-- ========= Available functions printer related ========= -->

<!-- EEPROM Editor -->
<printer-eeprom>configure</printer-eeprom>>
<!-- Use firmware upload -->
<printer-firmwareUpload>configure</printer-firmwareUpload>
<!-- Change firmware upload settings -->
<printer-firmwareUpload-config>configure</printer-firmwareUpload-config>
<!-- Add new printer -->
<add-printer>configure</add-printer>
<!-- Delete existing printer -->
<del-printer>configure</del-printer>
<!-- See projects in menu top, no influence on projects operation if a link is known! -->
<projects>seeProjects</projects>
<!-- Make a backup from existing printer -->
<printer-backup>configure</printer-backup>
<!-- Restore a printer from Backup -->
<printer-restore>configure</printer-restore>
<!-- See and download made log files -->
<printer-logs>readFiles,configure</printer-logs>
<!-- enable/disable logging -->
<printer-configure-logs>configure</printer-configure-logs>
<!-- configure klipper scripts, install, uninstall, input shaper -->
<config-klipper>configure</config-klipper>
<!-- see klipper logs -->
<control-klipper>configure</control-klipper>
<!-- restart klipper service -->
<restart-klipper>configure</restart-klipper>
<!-- see wizard manager, import installable, add/del -->
<wizard-manager>configure</wizard-manager>
<!-- show console in ui, needs still print permission to send! -->
<show-console>print</show-console>
<!-- show quick commands in ui, needs still print permission to send! -->
<show-quick-commands>print</show-quick-commands>
<!-- show wizards in ui -->
<show-wizards>print</show-wizards>
<!-- show wizard microscope in ui -->
<show-wizard-microscope>print</show-wizard-microscope>

<!-- ========= Configuration settings ========= -->

<!-- Who can call config at all? Individual settings can be further detailed for easy configuration -->
<printer-configure>configure</printer-configure>

<!-- which tabs should be visible -->
<printer-configure-general>configure</printer-configure-general>
<printer-configure-tools>configure</printer-configure-tools>
<printer-configure-shape>configure</printer-configure-shape>
<printer-configure-rescue>configure</printer-configure-rescue>
<printer-configure-webcam>configure</printer-configure-webcam>
<printer-configure-gcodes>configure</printer-configure-gcodes>

<!-- general accordions -->
<printer-configure-con>configure</printer-configure-con>
<!-- manual control -->
<printer-configure-mc>configure</printer-configure-mc>
<!-- print time calculation parameter -->
<printer-configure-ptc>configure</printer-configure-ptc>

<!-- Change manual control features like Software power, Leveling, Lights, Home -->
<printer-configure-tools-add-del>configure</printer-configure-tools-add-del>
<printer-configure-tools-general-extruder>configure</printer-configure-tools-general-extruder>
<printer-configure-tools-wizard>configure</printer-configure-tools-wizard>
<printer-configure-tools-alias>configure</printer-configure-tools-alias>
<printer-configure-tools-temp-offset>configure</printer-configure-tools-temp-offset>
<printer-configure-tools-heater-speed>configure</printer-configure-tools-heater-speed>
<printer-configure-tools-max-temp>configure</printer-configure-tools-max-temp>
<printer-configure-tools-pos-offset>configure</printer-configure-tools-pos-offset>
<printer-configure-tools-presets>configure</printer-configure-tools-presets>
<printer-configure-tools-fil-diameter>configure</printer-configure-tools-fil-diameter>
<printer-configure-tools-nozzle-diameter>configure</printer-configure-tools-nozzle-diameter>
<printer-configure-tools-extrusion>configure</printer-configure-tools-extrusion>
<printer-configure-tools-firmware>configure</printer-configure-tools-firmware>
<printer-configure-tools-units>configure</printer-configure-tools-units>
<printer-configure-tools-icon>configure</printer-configure-tools-icon>
<printer-configure-tools-fil-sensor>configure</printer-configure-tools-fil-sensor>
<printer-configure-tools-is-heater>configure</printer-configure-tools-is-heater>
<printer-configure-tools-fan-config>configure</printer-configure-tools-fan-config>

<printer-configure-shape-colors>configure</printer-configure-shape-colors>
<printer-configure-shape-dimensions>configure</printer-configure-shape-dimensions>
<printer-configure-shape-image>configure</printer-configure-shape-image>
<printer-configure-shape-grid>configure</printer-configure-shape-grid>
<printer-configure-shape-type>configure</printer-configure-shape-type>

<printer-configure-mc-features>configure</printer-configure-mc-features>
<printer-configure-mc-speeds>configure</printer-configure-mc-speeds>
<printer-configure-mc-homepos>configure</printer-configure-mc-homepos>
<!-- Select which home buttons appear in ui -->
<printer-configure-mc-show-homepos>configure</printer-configure-mc-show-homepos>
<printer-configure-mc-xy>configure</printer-configure-mc-xy>
<printer-configure-mc-z>configure</printer-configure-mc-z>
<printer-configure-mc-invert>configure</printer-configure-mc-invert>
<printer-configure-ptc-buffer>configure</printer-configure-ptc-buffer>
<printer-configure-ptc-jerk>configure</printer-configure-ptc-jerk>
<printer-configure-ptc-accel>configure</printer-configure-ptc-accel>
<printer-configure-ptc-max-speeds>configure</printer-configure-ptc-max-speeds>
<printer-configure-con-port>configure</printer-configure-con-port>
<printer-configure-con-password>configure</printer-configure-con-password>
<!-- Communication settings like baud, buffer, RTS, ... -->
<printer-configure-con-com-settings>configure</printer-configure-con-com-settings>
<printer-configure-con-timeout>configure</printer-configure-con-timeout>
<printer-configure-con-lcd>configure</printer-configure-con-lcd>
<printer-configure-con-emergency>configure</printer-configure-con-emergency>
<!-- autodetect firmware values -->
<printer-configure-con-detect>configure</printer-configure-con-detect>

<printer-configure-general-name>configure</printer-configure-general-name>
<!-- Typical manufacturer settings like urls, model, variant, manufacturer. -->
<printer-configure-general-manufacturer>configure</printer-configure-general-manufacturer>

<printer-configure-general-firmware>configure</printer-configure-general-firmware>
<printer-configure-general-door>configure</printer-configure-general-door>
<printer-configure-general-idle>configure</printer-configure-general-idle>
<printer-configure-general-pause>configure</printer-configure-general-pause>
<printer-configure-general-queue>configure</printer-configure-general-queue>
<printer-configure-general-share>configure</printer-configure-general-share>
<printer-configure-general-history>configure</printer-configure-general-history>
<printer-configure-general-del-abort>configure</printer-configure-general-del-abort>
<printer-configure-general-compress>configure</printer-configure-general-compress>
<printer-configure-general-bed-cleaning>configure</printer-configure-general-bed-cleaning>

<printer-configure-webcam-timelapse>print,configure</printer-configure-webcam-timelapse>
<printer-configure-webcam-control-server>configure</printer-configure-webcam-control-server>
<printer-configure-webcam-modify>configure</printer-configure-webcam-modify>
<printer-configure-webcam-modify-del>configure</printer-configure-webcam-modify-del>
<printer-configure-webcam-modify-add>configure</printer-configure-webcam-modify-add>
<printer-configure-webcam-modify-mode>configure</printer-configure-webcam-modify-mode>
<printer-configure-webcam-modify-alias>configure</printer-configure-webcam-modify-alias>
<printer-configure-webcam-modify-connection>configure</printer-configure-webcam-modify-connection>
<printer-configure-webcam-modify-connection-assign>configure</printer-configure-webcam-modify-connection-assign>

<printer-configure-rescue-power-message>configure</printer-configure-rescue-power-message>
<printer-configure-rescue-send-scripts>configure</printer-configure-rescue-send-scripts>
<printer-configure-rescue-z-lift>configure</printer-configure-rescue-z-lift>
<printer-configure-rescue-autorescue-time>configure</printer-configure-rescue-autorescue-time>
<printer-configure-rescue-connection-delay>configure</printer-configure-rescue-connection-delay>
<printer-configure-rescue-reactivate-bed>configure</printer-configure-rescue-reactivate-bed>
<printer-configure-rescue-replay-extruder>configure</printer-configure-rescue-replay-extruder>

<printer-configure-gcodes-quick>configure</printer-configure-gcodes-quick>
<printer-configure-gcodes-wizards>configure</printer-configure-gcodes-wizards>
<printer-configure-gcodes-buttons>configure</printer-configure-gcodes-buttons>
<printer-configure-gcodes-event>configure</printer-configure-gcodes-event>
<printer-configure-gcodes-response>configure</printer-configure-gcodes-response>
<printer-configure-gcodes-replacement>configure</printer-configure-gcodes-replacement>
<printer-configure-gcodes-includes>configure</printer-configure-gcodes-includes>
</features>

G-Code files in printer configuration

In the printer configuration you can define a lot of custom g-code files. All these files are stored as separate files in STORAGE_DIR/printer/<slug>/data/ folders. In each folder a list of json files can be found. The json files contain the g-code and also 2 fields to change regular see/change permission. These are not visible in the user interface, but you can modify them manually with a text editor. The field “seePermission” defines who is allowed to see the g-code contained. The field “editPermission” defines who is allowed to change the g-code contained. If you are a manufacturer you might want to provide some scripts that are essential for your printer and to prevent the user from changing them, you can set edit permission to “maintainer” so only your staff can modify it ot the user if you give him the maintainer password.

Note: Changing files on disk always requires the server to be restarted to take effect.