> ## Documentation Index
> Fetch the complete documentation index at: https://ayakaleaf-pro.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Integrazione con Mendeley

> Consenti agli utenti di importare un file .bib dalla loro libreria Mendeley in un deployment Kubernetes.

L'importazione da Mendeley viene eseguita nel servizio **web** (il modulo `tpr-webmodule`) di ogni pod di Ayakaleaf Pro. Registra l'applicazione Mendeley come descritto in [Integrazione con Mendeley](https://ayakaleaf-pro.mintlify.site/it/on-premises/configuration/overleaf-toolkit/integrations/mendeley-integration.md), con l'URL di reindirizzamento `${OVERLEAF_SITE_URL}/user/mendeley/oauth/callback`, quindi configura Kubernetes come indicato di seguito.

| | |
| - | - |
| Servizio | web, in ogni pod di Ayakaleaf Pro; letto all'avvio di web |
| Pod → Mendeley | `https://api.mendeley.com` (token OAuth e API), quando un utente collega Mendeley oppure importa o aggiorna un file |
| Browser → Mendeley | `https://api.mendeley.com/oauth/authorize`, poi il ritorno all'URL di reindirizzamento |
| Mendeley → Overleaf | nessuno: l'istanza non deve essere raggiungibile da Internet |
| Dati memorizzati | i token Mendeley dell'utente, cifrati, in MongoDB |
| Job periodici | nessuno: un file viene aggiornato solo quando un utente lo richiede |

### Configurazione

**1. ConfigMap**

```yaml title="30-config.yaml (changes)" theme={null}
  ENABLED_LINKED_FILE_TYPES: project_file,project_output_file,url,mendeley
  MENDELEY_CLIENT_ID: "<application ID>"
  # optional: send the module's requests to Mendeley through an HTTP proxy
  # MENDELEY_PROXY_URL: http://proxy.example.com:3128
```

Metti l'ID dell'applicazione tra virgolette: è un numero, e una ConfigMap contiene solo stringhe. `ENABLED_LINKED_FILE_TYPES` sostituisce il valore dell'installazione; mantieni i tipi che hai già e aggiungi `mendeley` (e `zotero`, se usi entrambi).

**2. Secret**

```bash theme={null}
kubectl -n overleaf patch secret overleaf-secrets --type merge -p '{"stringData":{
  "MENDELEY_CLIENT_SECRET":"<secret>",
  "MENDELEY_CIPHER_PASSWORD":"'"$(openssl rand -hex 32)"'"}}'
```

`MENDELEY_CIPHER_PASSWORD` cifra i token Mendeley degli utenti in MongoDB. Senza di essa, ogni pod genera un file di chiave nella propria `/var/lib/overleaf/data`. Con [più repliche](https://ayakaleaf-pro.mintlify.site/it/on-premises/configuration/kubernetes/horizontal-scaling.md) ogni nodo ha quindi una chiave diversa, e un utente servito da un'altra replica non può usare il proprio account Mendeley collegato. Impostala prima che il primo utente colleghi Mendeley: modificarla in seguito obbliga ogni utente a collegare di nuovo Mendeley.

**3. Applica e riavvia**

```bash theme={null}
kubectl apply -f 30-config.yaml
kubectl -n overleaf rollout restart deployment/overleaf     # or statefulset/overleaf
```

### Più repliche

Imposta `MENDELEY_CIPHER_PASSWORD` nel Secret, vedi sopra. I token Mendeley vengono cifrati dallo stesso codice delle chiavi Zotero: senza la password, un file importato su una replica non può essere aggiornato su un'altra, come abbiamo visto con [Zotero](https://ayakaleaf-pro.mintlify.site/it/on-premises/configuration/kubernetes/integrations/zotero-integration.md#several-replicas). Lo `state` OAuth è conservato nella sessione in Redis, quindi il callback può raggiungere qualsiasi replica.

### Testato su Kubernetes

Contro un mock di api.mendeley.com (considerato attendibile tramite `NODE_EXTRA_CA_CERTS` da `overleaf-certs`), su Kubernetes 1.37 con tre repliche dietro HAProxy, i nostri test end-to-end per Mendeley vengono superati (18 casi): collegamento tramite OAuth 2.0 e scollegamento, importazione della libreria e dei gruppi in un file `.bib`, suo aggiornamento, refresh di un token di accesso in scadenza, token revocati, richiesta di un nuovo collegamento, riferimenti ricercabili dai collaboratori, solo chi ha importato può aggiornare, errori dell'API e connessioni lente verso Mendeley.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.