####################################
5. UAC - User Access Control
####################################

*****************
About
*****************
Orchestrator has mega feature - user access control (UAC). This feature allow you to manipulate access of the web UI for the all users!

If you need to give admin rights - you don't customize UAC dict.

If you need to give some little rights for user only for one robot in orchestrator web panel - you can set the following properties in UAC dict.

To work with UAC you can use defs ``Orchestrator.UAC`` group.

!!!ATTENTION!!!

Need practice example to work with UAC! - too hard to understand

***************************************************
UAC Dict for Orchestrator WEB UI rights
***************************************************

UAC Dict for pyOpenRPA Orchestrator WEB UI rights.

.. code-block:: python

    "pyOpenRPADict":{
        "CPKeyDict":{ # Empty dict - all access
            # "CPKeyStr"{
            # }
        },
        "RDPKeyDict":{ # Empty dict - all access
            #"RDPKeyStr"{
            #   "FullscreenBool": True,
            #   "IgnoreBool":True,
            #   "ReconnectBool": True
            #   "NothingBool": True # USe option if you dont want to give some access to the RDP controls
            # }
        },
        "AgentKeyDict": { # Empty dict - all access
            # "AgentKeyStr"{
            # }
        },
        "AdminDict":{ # Empty dict - all access
            "LogViewerBool":True, # Show log viewer on the web page
            "CMDInputBool":True, # Execute CMD on the server side and result to the logs
            "ScreenshotViewerBool":True, # Show button to look screenshots
            "RestartOrchestratorBool": True, # Restart orchestrator activity
            "RestartOrchestratorGITPullBool": True, # Turn off (RDP remember) orc + git pull + Turn on (rdp remember)
            "RestartPCBool": True, # Send CMD to restart pc
            "NothingBool":True # USe option if you dont want to give some access to the RDP controls
        },
        "ActivityDict": { # Empty dict - all access
            "ActivityListExecuteBool": True,  # Execute activity at the current thread
            "ActivityListAppendProcessorQueueBool": True  # Append activity to the processor queue
        }
    }