# Definições e tabelas da base de dados do Todomator

> As definições que o Todomator guarda, as permissões que as protegem e para que serve cada tabela do esquema public.

Framework: todomator
Product: Todomator (todomator@1.7)
Language: pt
Content-SHA256: b49a88cef6b7c63e4e6f342ee37509173c226d717f734c67d642d3744936e576
Snapshot: c0700e321579725c5cf4f5ace1ad7d2866d1b4f93c24a63c0b41b6b7998e976c
Sources: 
Review: not-recorded

## As definições

O Todomator guarda a sua configuração na tabela `cl_config` e recarrega-a a cada 20 minutos. O ecrã de definições (`Settings/read`, `Settings/save` em `schemas/settings.js`) edita estas chaves e precisa da permissão `settings`:

| Chave | Significado |
|---|---|
| `name` | o nome da instância |
| `color` | a cor principal |
| `token` | o token da [API](/en/todomator/create-tickets-with-the-api/) |
| `minlogtime` | a entrada de tempo mais curta, em minutos (1 por predefinição) ([registo de tempo](/en/todomator/time-tracking/)) |
| `backup` | quando ativa, cada edição do Markdown de um ticket guarda também uma cópia do texto, com o utilizador, o endereço e o navegador (tabela `tbl_ticket_backup`) |
| `folderid` | uma pasta predefinida |

## Permissões

Uma pessoa é administradora quando o indicador `sa` está definido ou quando a lista de permissões contém `admin`. `admin` gere as pastas e os ecrãs de administração; `settings` permite as definições; `bot` pertence ao utilizador integrado do token da API. As sessões vivem na tabela `tbl_session` e as expiradas são apagadas uma vez por dia.

## Autenticação de dois fatores

Cada utilizador tem o indicador `is2fa`, que a pessoa ativa ao mudar a palavra-passe (`Users|password`). O início de sessão tem então dois passos (`plugins/users/index.js`): primeiro e-mail e palavra-passe; se a conta tem `is2fa`, o Todomator envia por e-mail um código de seis dígitos (modelo `templates/mail-2fa.html`) válido por 10 minutos, e a pessoa devolve-o para terminar. As tentativas erradas são bloqueadas após 10 tentativas em 10 minutos. A linha `mail` do ficheiro `config` tem de estar definida para o código ser entregue.

## A base de dados

Tudo vive no esquema `public` do PostgreSQL:

| Tabela | O que contém |
|---|---|
| `cl_config` | a configuração |
| `cl_status` | os seis estados de um ticket |
| `cl_notification` | os tipos de notificação |
| `tbl_user` | os utilizadores: perfil, hash da palavra-passe, permissões e `is2fa` |
| `tbl_folder` | as pastas (clientes e projetos) |
| `tbl_tag` | as etiquetas |
| `tbl_ticket` | os tickets |
| `tbl_ticket_comment` | os comentários dos tickets |
| `tbl_ticket_time` | as entradas de tempo |
| `tbl_ticket_bookmark` | os marcadores de cada utilizador |
| `tbl_ticket_unread` | o estado de não lido por utilizador e ticket |
| `tbl_ticket_data` | dados livres de um ticket (`data_read` / `data_save`) |
| `tbl_ticket_backup` | cópias do Markdown de um ticket (a definição `backup`) |
| `tbl_notification` | as notificações dos utilizadores |
| `tbl_file` | os ficheiros que foram carregados |
| `tbl_session` | as sessões |

Faça cópia de segurança deste esquema como de qualquer outra base de dados PostgreSQL. Para atualizar, aplique os scripts `database_*.sql` do repositório que sejam mais recentes do que a sua versão ([instalar o Todomator](/en/todomator/install-todomator/)).
