---
title: "Configuring Audit Permissions"
output: rmarkdown::html_vignette
vignette: >
  %\VignetteIndexEntry{Configuring Audit Permissions}
  %\VignetteEngine{knitr::rmarkdown}
  %\VignetteEncoding{UTF-8}
---

```{r, include = FALSE}
knitr::opts_chunk$set(
  collapse = TRUE,
  comment = "#>"
)
```

# Overview

`{dsROCrate}` requires elevated permissions when auditing backend systems.

Depending on the backend implementation, this may require:

- administrator privileges,
- audit privileges,
- or backend-specific read access to system metadata.

Without these permissions, `{dsROCrate}` may be unable to retrieve
the metadata required for audit and RO-Crate generation workflows.

This vignette describes:

- why elevated permissions are required,
- how permission validation works,
- and how to configure supported backends.


# Why are elevated permissions required?

`dsROCrate` performs metadata and configuration inspection operations
against supported backend systems.

These operations may include access to:

- system configuration metadata,
- authentication configuration,
- datasource metadata,
- project metadata,
- audit-relevant server settings.

Standard user accounts may not have sufficient privileges for these
operations.


# Supported backends

Currently supported backend permission configurations:

- Opal

Future backend-specific instructions may include:

- Armadillo


# Opal

**NOTE:** Opal 5.7+ is required, as that's when the _audit_ role was introduced.

## Required permissions

For Opal backends, the connected user must have at least one of:

- administrator privileges, or
- the `Audit system` permission.

## Configuring an Opal audit user

### Step 1: Log in as an administrator

Log in to the Opal web interface using an administrator account.

### Step 2: Create a user (optional)

If a dedicated audit user does not already exist:

1. Open the **Administration** tab.
2. Under **Data Access**, select **Users and Groups**.
3. Create a new user account for auditing purposes.

### Step 3: Grant audit permissions

1. Return to the **Administration** tab.
2. Under **System**, select **General Settings**.
3. Open the **Permissions** section.
4. Click the **+** button.
5. Select:
   - **Add user permission**
6. Enter the username of the audit user.
7. Select:
   - **Audit system**
8. Click **Submit**.


--------------------------------------------------------------------------------

# Example usage

```{r eval = FALSE}
con <- opalr::opal.login(
  username = "audit_user",
  password = "secret",
  url = "https://opal-demo.obiba.org"
)

dsROCrate::check_permissions(con)
```


# Troubleshooting

## Insufficient permissions

Ensure the connected user has the permissions required for the
target backend.

See the backend-specific sections in this vignette for details.

## Testing Opal permissions directly

```{r eval = FALSE}
dsROCrate::is_opal_admin_con(con)
dsROCrate::is_opal_audit_con(con)
```
