Metadata-Version: 2.5
Name: ocd-auth
Version: 1.0.4
Summary: Module d'authentification LDAP et d'envoi de notifications par SMS ou e-mail.
Author-email: Zgenius Matondo <zgeniuscoders@gmail.com>
Requires-Python: >=3.9
Requires-Dist: requests>=2.34.2
Description-Content-Type: text/markdown

# AuthService

Service permettant d’authentifier un utilisateur auprès d’un serveur LDAP et d’envoyer un message par SMS ou par e-mail.

## Fonctionnement

Après une authentification LDAP réussie :

- un SMS est envoyé si le numéro de téléphone est disponible ;
- sinon, un e-mail est envoyé si l’adresse e-mail est disponible ;
- un objet `AuthResponse` est retourné avec les informations de l’utilisateur.

## Importer le service

```python
from ocd_auth import AuthService
```

## Initialiser `AuthService`

```python
auth_service = AuthService(
    ldap_base_url="https://ldap.example.com",
    notification_base_url="https://notification.example.com",
    app_name="my-application",
)
```

### Paramètres du constructeur

| Paramètre | Type | Description |
|---|---|---|
| `ldap_base_url` | `str` | URL de base du service LDAP |
| `notification_base_url` | `str` | URL de base du service de notification |
| `app_name` | `str` | Nom de l’application |

## Authentifier un utilisateur

```python
response = auth_service.authenticate(
    cuid="user123",
    password="password",
    message="Votre code de vérification est : 123456",
)
```

Par défaut :

- le nom de l’expéditeur SMS est `Orange` ;
- l’adresse e-mail d’envoi est `no-reply@orange.com` ;
- l’objet de l’e-mail est `OTP`.

## Personnaliser l’envoi

```python
response = auth_service.authenticate(
    cuid="user123",
    password="password",
    message="Votre code de vérification est : 123456",
    sms_sender_name="MonApplication",
    email_sender_address="support@example.com",
    email_subject="Code de vérification",
)
```

## Utiliser la réponse

La méthode `authenticate` retourne un objet `AuthResponse`.

```python
print(response.cuid)
print(response.email)
print(response.phone_number)
print(response.username)
```

Exemple de réponse :

```python
{
    "cuid": "user123",
    "email": "user123@example.com",
    "phone_number": "+2250102030405",
    "username": "zgenius matondo"
}
```

## Gestion des erreurs

Une exception est levée lorsque les identifiants sont incorrects ou que l’authentification LDAP échoue.

```python
try:
    response = auth_service.authenticate(
        cuid="user123",
        password="wrong-password",
        message="Votre code de vérification est : 123456",
    )

    print("Authentification réussie")
    print(response)

except Exception as error:
    print(f"Échec de l'authentification : {error}")
```

## Exemple complet

```python
from ocd_auth import AuthService


def main() -> None:
    auth_service = AuthService(
        ldap_base_url="https://ldap.example.com",
        notification_base_url="https://notification.example.com",
        app_name="my-application",
    )

    try:
        response = auth_service.authenticate(
            cuid="user123",
            password="password",
            message="Votre code OTP est : 123456",
        )

        print(f"Authentification réussie pour : {response.cuid}")

        if response.phone_number:
            print(f"Notification envoyée au numéro : {response.phone_number}")
        elif response.email:
            print(f"Notification envoyée à l'adresse : {response.email}")

    except Exception as error:
        print(f"Erreur : {error}")


if __name__ == "__main__":
    main()
```