---
title: "Uso Seguro de Credenciais MozART 2.0"
output: rmarkdown::html_vignette
vignette: >
  %\VignetteIndexEntry{definir-credenciais}
  %\VignetteEngine{knitr::rmarkdown}
  %\VignetteEncoding{UTF-8}
---

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


O pacote `sonata` foi desenvolvido para facilitar a extração e a interação com dados do MozART 2.0 por analistas com credenciais de acesso válidas. Para além das funções utilizadas para chamar dados específicos ao MozART 2.0, `sonata` fornece funções utilitárias para guardar e recuperar credenciais de forma segura. A utilização de tais ferramentas ajuda a automatizar o fluxo de trabalho analítico e evita a circulação não intencional de credenciais privadas através de plataformas como o GitHub e GitLab.  O artigo abaixo fornece uma explicação passo-a-passo sobre como utilizar o `sonata` para guardar credenciais encriptadas no sistema operativo e usa-los para estabelecer uma conexão segura com o MozART 2.0.

## Carregar dependências de pacotes

Começaremos o trabalho anexando os pacotes necessários que o fluxo de trabalho exigirá.  Estes incluem o pacote `sonata` e o pacote utilitário `glamr` da USAID.

```{r setup, eval = FALSE, warning = FALSE, message = FALSE}
library(sonata)
library(glamr)

# Se necessário, instale o `glamr` a partir do código abaixo
# install.packages('glamr', repos = c('https://usaid-oha-si.r-universe.dev', 'https://cloud.r-project.org'))

```

## Definir credenciais no sistema operativo local

No bloco de código abaixo, criaremos um valor de usuário (definido como “acct_dev”) e, em seguida, passaremos esse valor de usuário para o segundo bloco de código que iniciará as ferramentas internas do RStudio para guardar credenciais no sistema operacional da máquina do usuário. Ao executar a função `set_account`, o usuário será solicitado a definir o host MozART 2.0, porta, nome de usuário, senha e dbname.  Uma vez definidas, essas credenciais podem ser carregadas na sessão do RStudio sem serem visíveis no código do projeto.  Esta abordagem minimiza a possibilidade de partilha não intencional.

```{r, eval = FALSE}
# Definir um valor de usuário
acct_dev <- "mysql-example-user"

# Definir credenciais no sistema operativo local
set_account(name = acct_dev, 
            keys = c("host", "port", "username", "password", "dbname"), 
            update = TRUE)

# Carregar credenciais
acct_db <- get_account(name = acct_dev)
```

## Carregar credenciais e criar uma ligação MozART 2.0

Tendo as nossas credenciais encriptadas e guardadas na máquina local, iremos chamá-las de forma segura para o nosso ambiente R usando a função `get_account`.  De daí, utilizá-los-emos para estabelecer a nossa conexão ao MozART 2.0.

```{r, eval = FALSE}
# Definir valor do usuário
acct_dev <- "mysql-example-user"

# Carregar credenciais
acct_db <- get_account(name = acct_dev)

# Criar uma ligação MozART 2.0
con <- mysql_connection(
  db_name = acct_db$dbname, 
  db_user = acct_db$username,
  db_pass = acct_db$password, 
  db_host = acct_db$host, 
  db_port = acct_db$port
  )
```
Parabéns! Você acaba de estebelecer um sistema seguro e eficiente para guardar e usar credenciais de MozART 2.0!
