# Functions
The function returns a JSON response containing default roles and group mappings from a configuration file.
Decrypt decrypts a previously encrypted string using the same key used to encrypt it.
Encrypt encrypts a string using AES-GCM algorithm with a given key.
The function generates a random 32 byte key for AES-256 encryption and returns it as a hexadecimal encoded string.
The function generates a temporary user password that is 32 characters long with a mix of digits, symbols, and upper/lower case letters, disallowing repeat characters.
The function retrieves user roles based on their group mappings or default roles if no mappings are found.
The function generates and sets a secret key if one is not provided or generates and prints a secret key if the "generateKey" flag is set to true.
The function returns a JSON response with a "OK" status for a health route in a Go application.
This function initializes the configuration for an application using flags, environment variables, and a YAML configuration file.
This function handles the main route of a web application, authenticating users and caching their encrypted passwords.
The function UpsertUser sends a POST request to Elasticsearch to create or update a user with the given username and user details.
WebserverInit initializes the webserver and sets up all the routes.
# Structs
The type `ElasticsearchConnectionDetails` contains URL, username, and password information for connecting to Elasticsearch.
The ElasticsearchUser type represents a user in Elasticsearch with properties such as email, password, metadata, full name, and roles.
The type `ElasticsearchUserMetadata` contains a field `Groups` which is a slice of strings representing user groups.
The type `ErrorResponse` is a struct that contains a message and code for error responses in Go.
The HealthResponse type is a struct in Go that contains a single field called Status, which is a string that will be represented as "status" in JSON.