# Authentification
Source: https://docs.lomi.africa/build/cli/auth

Connectez le CLI lomi. via le flux device dans le navigateur, gérez les profils et utilisez des jetons en CI.

***

title: 'Authentification'
description: 'Connectez le CLI lomi. via le flux device dans le navigateur, gérez les profils et utilisez des jetons en CI.'
----------------------------------------------------------------------------------------------------------------------------

La plupart des commandes CLI qui appellent l’API lomi. nécessitent une authentification via un **flux d’autorisation device** (OAuth 2.0 device grant).

## Usage

```bash filename="Terminal"
lomi login
```

### Options

| Option            | Description                                   |
| ----------------- | --------------------------------------------- |
| `--no-browser`    | Afficher l’URL au lieu d’ouvrir le navigateur |
| `--profile <nom>` | Enregistrer sous un profil nommé              |

### Exemple sandbox

```bash filename="Terminal"
lomi login --profile sandbox
lomi switch sandbox
```

## Fonctionnement

<Steps>
  ### 1. Démarrage device

  Le CLI contacte la fonction edge Supabase `cli-auth` et reçoit un **code utilisateur** et une **URL de vérification**.

  ### 2. Autorisation dans le navigateur

  Connectez-vous à lomi. et approuvez le CLI.

  ### 3. Polling et jeton

  Le CLI interroge le service jusqu’à réception d’une clé API utilisée comme jeton CLI.

  ### 4. Stockage global

  | Plateforme | Fichier de config                                |
  | ---------- | ------------------------------------------------ |
  | macOS      | `~/Library/Application Support/lomi/config.json` |
  | Linux      | `~/.config/lomi/config.json`                     |

  Variable `LOMI_CONFIG_DIR` pour surcharger le répertoire.
</Steps>

<Callout type="info" emoji="💡" title="Différent de LOMI_SECRET_KEY">
  Le jeton CLI issu de `lomi login` authentifie les **commandes CLI**. La clé API secrète de votre application (`LOMI_SECRET_KEY` dans `.env`) se configure séparément via [`lomi init`](/build/cli/init).
</Callout>

## Vérifier l’authentification

```bash filename="Terminal"
lomi whoami     # profil actuel
lomi status     # jeton + connectivité API
```

`lomi status` vérifie le jeton stocké via `GET /accounts/balance`.

## Profils

Utilisez des profils nommés pour séparer les sessions CLI sandbox et production :

```bash filename="Terminal"
lomi login --profile sandbox
lomi login --profile production

lomi list-profiles
lomi switch sandbox
lomi logout --profile sandbox
```

## Se déconnecter

```bash filename="Terminal"
lomi logout
lomi logout --profile sandbox
```

Supprime le jeton CLI du profil indiqué dans `config.json`.

## CI et environnements sans TTY

Dans les environnements non interactifs, définissez un jeton explicitement :

```bash filename="Terminal"
export LOMI_ACCESS_TOKEN=votre_jeton_cli
lomi status
```

Vous pouvez aussi passer `--no-browser` lors de `lomi login` si vous ouvrez l’URL sur un autre appareil.

Pour l’initialisation de projet sans interface :

```bash filename="Terminal"
lomi init --yes \
  --environment sandbox \
  --language ts \
  --api-key lomi_sk_test_xxx \
  --skip-package-install
```

## Dépannage

| Problème                  | Solution                                                             |
| ------------------------- | -------------------------------------------------------------------- |
| Navigateur ne s’ouvre pas | Copier l’URL affichée                                                |
| Code expiré               | Relancer `lomi login`                                                |
| Non authentifié           | `lomi login` ou `LOMI_ACCESS_TOKEN`                                  |
| Mauvais environnement     | `--profile` + `lomi switch`, ou `-a https://sandbox.api.lomi.africa` |

## Suite

* [Initialiser un projet](/build/cli/init)
* [Configuration](/build/cli/configuration)
* [Référence des commandes](/build/cli/commands)
