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

# Lock.swift : Options de configuration

> Options de configuration du comportement disponibles avec Lock.Swift

Il existe de nombreuses options pour configurer le comportement de Lock, énumérées ci-dessous. En outre, il existe également de nombreuses options disponibles pour modifier l’apparence et le style de Lock dans la page [Options de personnalisation du style](/docs/fr-ca/lock-swift-customization).

## Configuration du comportement de Lock

Des options de configuration peuvent être ajoutées à votre initialisation de Lock à l’aide de `withOptions`.

```swift lines theme={null}
Lock
  .classic()
  .withOptions {
    $0.closable = true
    $0.usernameStyle = [.Username]
    $0.allow = [.Login, .ResetPassword]
  }
  .present(from: self)
```

## Options de comportement

### Fermable

Permet à Lock d’être rejeté par l’utilisateur. Par défaut, cette valeur est définie comme `false`.

```swift lines theme={null}
.withOptions {
  $0.closable = true
}
```

### permission

Permission utilisée pour l’authentification. La valeur par défaut est `openid`. Elle retournera non seulement le **Jeton d’accès**, mais aussi un **Jeton d’ID** qui est un jeton Web JSON (<Tooltip href="/docs/fr-ca/glossary?term=json-web-token" tip="Jeton Web JSON (JWT)
Format standard de jeton d’ID (et souvent de jeton d’accès) utilisé pour représenter en toute sécurité des demandes entre deux parties." cta="Voir le glossaire">JWT</Tooltip>) contenant des informations sur l’utilisateur. Veuillez consulter la documentation sur les [Permissions](/docs/fr-ca/get-started/apis/scopes) pour plus d’informations sur les permissions d’authentification.

```swift lines theme={null}
.withOptions {
  $0.scope = "openid name email picture"
}
```

#### Jetons d’actualisation

Spécifier la permission `offline_access` dans vos options Lock permettra à un [Jeton d’actualisation](/docs/fr-ca/secure/tokens/refresh-tokens) d’être retourné avec l’access\_token et l’id\_token. Les jetons d’actualisation peuvent être enregistrés et utilisés pour acquérir un nouveau jeton d’accès lorsque l’ancien jeton expire. Pour plus d’informations sur l’utilisation des jetons d’actualisation pour l’authentification Auth0, veuillez consulter la documentation de référence pour la trousse [SDK pour Auth0.Swift](/docs/fr-ca/libraries/auth0-swift), que vous utiliseriez pour implémenter des jetons d’actualisation, ou le [Swift Quickstart Guide (Guide de démarrage rapide de Swift)](/docs/fr-ca/quickstart/native/ios-swift/03-user-sessions), qui fournit un exemple complet d’utilisation d’Auth0 dans le développement Swift, y compris la gestion des jetons d’actualisation.

### termsOfService

Par défaut, Lock utilisera les [Conditions d’utilisation](https://auth0.com/terms) et la [Politique de confidentialité](https://auth0.com/privacy) d’Auth0, mais d’autres URL peuvent être renseignées pour créer un lien vers d’autres conditions et politiques.

```swift lines theme={null}
.withOptions {
  $0.termsOfService = "https://mycompany.com/terms"
  $0.privacyPolicy = "https://mycompany.com/privacy"
}
```

### Afficher les Conditions d’utilisation

Les connexions à la base de données affichent la boîte de dialogue Conditions d’utilisation. La valeur par défaut est `true`. Veuillez noter que les Conditions d’utilisation seront toujours affichées si le drapeau `mustAcceptTerms` est activé.

```swift lines theme={null}
.withOptions {
    $0.showTerms = true
}
```

### Exiger que les utilisateurs acceptent les Conditions d’utilisation

La connexion à la base de données nécessite l’acceptation explicite des Conditions d’utilisation.

```swift lines theme={null}
.withOptions {
    $0.mustAcceptTerms = true
}
```

## Options d’authentification Web

### marge

Décalage d’horloge utilisé pour la validation du jeton d’ID. Il élargit la fenêtre temporelle dans laquelle le jeton d’ID sera toujours considéré comme valide, pour tenir compte de la différence entre l’heure du serveur et l’heure du client. Par défaut elle est de **60 000 millisecondes** (60 secondes).

```swift lines theme={null}
.withOptions {
  $0.leeway = 30000 // 30 seconds
}
```

### maxAge

Temps écoulé autorisé (en millisecondes) depuis la dernière authentification de l’utilisateur. Utilisé pour la validation du jeton d’ID. Si défini, le jeton d’ID contiendra une demande `auth_time` avec l’horodatage d’authentification. Par défaut `nil`.

```swift lines theme={null}
.withOptions {
  $0.maxAge = 86400000 // 1 day
}
```

## Options de base de données

### autorise

Quels écrans de base de données seront accessibles; la valeur par défaut est d’activer tous les écrans tels que `.Login, .Signup, .ResetPassword`.

```swift lines theme={null}
.withOptions {
  $0.allow = [.Login, .ResetPassword]
}
```

### initialScreen

Le premier écran à présenter à l’utilisateur. La valeur par défaut est `.Login`, d’autres options incluent `.Signup` et `.ResetPassword`.

```swift lines theme={null}
.withOptions {
  $0.initialScreen = .Login
}
```

### usernameStyle

Spécifie le type d’identifiant dont la connexion aura besoin. La valeur par défaut est : `[.Username, .Email]`, mais peut également accepter `[.Username]` ou `[.Email]`. Cependant, il est important de noter que cette option n’est active que si vous avez défini le drapeau `requires_username` sur `true` dans votre [Auth0 Dashboard](https://manage.auth0.com/#/).

```swift lines theme={null}
.withOptions {
  $0.usernameStyle = [.Username]
}
```

#### Champs d’inscription personnalisés

Lors de l’inscription, les informations requises par défaut sont l’adresse courriel et le mot de passe de l’utilisateur. Vous pouvez élargir vos exigences en matière de capture de données selon vos besoins. La capture de champs supplémentaires lors de l’inscription stockera ces valeurs dans la bibliothèque `user_metadata`, dont vous trouverez plus d’informations dans les [métadonnées](/docs/fr-ca/manage-users/user-accounts/metadata). Veuillez noter que vous devez spécifier l’icône à utiliser avec votre champ de texte personnalisé.

```swift lines theme={null}
.withOptions {
  $0.customSignupFields = [
    CustomTextField(name: "first_name", placeholder: "First Name", icon: LazyImage(name: "ic_person", bundle: Lock.bundle)),
    CustomTextField(name: "last_name", placeholder: "Last Name", icon: LazyImage(name: "ic_person", bundle: Lock.bundle))
  ]
}
```

Vous pouvez également spécifier des icônes provenant d’autres groupes, comme dans l’exemple suivant :
CustomTextField(name: "slack\_handle", placeholder: "Slack Handle", icon: LazyImage(name: "ic\_slack", bundle: Bundle(identifier: "CustomBundle")))

## Options Entreprise

Il existe également des options de configuration spécifiques aux connexions Enterprise :

### enterpriseConnectionUsingActiveAuth

Par défaut, les connexions Entreprise utiliseront l’authentification Web. Cependant, vous pouvez spécifier quelles connexions utiliseront alternativement l’authentification par informations d’identification et demanderont un nom d’utilisateur et un mot de passe.

```swift lines theme={null}
.withOptions {
  $0.enterpriseConnectionUsingActiveAuth = ["enterprisedomain.com"]
}
```

### activeDirectoryEmailAsUsername

En mode d’authentification par identifiants, l’utilisateur doit-il utiliser son adresse courriel comme identifiant? La valeur par défaut est `false`, et nécessite plutôt un nom d’utilisateur.

```swift lines theme={null}
.withOptions {
  $0.activeDirectoryEmailAsUsername = true
}
```

## Options de journalisation

Lock propose des options qui permettent d’activer et de désactiver facilement les capacités de journalisation, ainsi que d’ajuster d’autres paramètres liés à celles-ci.

### logLevel

Par défaut, la valeur est `.off`, les niveaux de journalisation Syslog sont pris en charge.

```swift lines theme={null}
.withOptions {
  $0.logLevel = .all
}
```

### logHttpRequest

S’il faut ou non enregistrer les requêtes API Auth0.swift. Par défaut, cette valeur est `false`.

```swift lines theme={null}
.withOptions {
  $0.logHttpRequest = true
}
```

### loggerOutput

Spécifiez le gestionnaire de logger output, par défaut, il utilise la déclaration `print`.

```swift lines theme={null}
.withOptions {
  $0.loggerOutput = CleanroomLockLogger()
}
```

Dans le code ci-dessus, le loggerOutput a été défini pour utiliser [CleanroomLogger](https://github.com/emaloney/CleanroomLogger). Cela peut être réalisé en mettant en œuvre le protocole loggerOutput. Vous pouvez bien sûr utiliser votre bibliothèque de journalisation préférée. Vous trouverez ci-dessous un exemple d’utilisation de la gestion de journaux avec CleanroomLogger.

```swift lines theme={null}
class CleanroomLockLogger: LoggerOutput {
  func message(_ message: String, level: LoggerLevel, filename: String, line: Int) {
    let channel: LogChannel?
    switch level {
    case .debug:
        channel = Log.debug
    case .error:
        channel = Log.error
    case .info:
        channel = Log.info
    case .verbose:
        channel = Log.verbose
    case .warn:
        channel = Log.warning
    default:
        channel = nil
    }
    channel?.message(message, filePath: filename, fileLine: line)
  }
}
```
