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

> Options de configuration du comportement offertes avec Lock.Swift

# Lock.swift : options de configuration

De nombreuses options de configuration du comportement de Lock sont présentées ci-dessous. De plus, la page [Options de personnalisation du style](/fr-CA/docs/libraries/lock-swift/lock-swift-customization) propose aussi plusieurs options pour modifier l’apparence et le style de Lock.

<div id="configuring-locks-behavior">
  ## Configuration du comportement de Lock
</div>

Vous pouvez ajouter des options de configuration lors de l’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)
```

<div id="behavior-options">
  ## Options de comportement
</div>

<div id="closable">
  ### closable
</div>

Permet à l’utilisateur de fermer Lock. Par défaut, cette valeur est `false`.

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

<div id="scope">
  ### scope
</div>

Scope utilisé pour l’authentification. Par défaut, sa valeur est `openid`. Il renvoie non seulement le **<Tooltip tip="Jeton d’accès : justificatif d’autorisation, sous la forme d’une chaîne opaque ou d’un JWT, utilisé pour accéder à une API." cta="Voir le glossaire" href="/fr-CA/docs/glossary?term=Access+Token">Jeton d’accès</Tooltip>**, mais aussi un **<Tooltip tip="ID Token : justificatif destiné à l’application cliente elle-même, plutôt qu’à l’accès à une ressource." cta="Voir le glossaire" href="/fr-CA/docs/glossary?term=ID+Token">ID Token</Tooltip>** qui est un <Tooltip tip="ID Token : justificatif destiné à l’application cliente elle-même, plutôt qu’à l’accès à une ressource." cta="Voir le glossaire" href="/fr-CA/docs/glossary?term=JSON+Web+Token">JSON Web Token</Tooltip> (JWT) contenant des informations sur l’utilisateur. Consultez la documentation sur les [Scopes](/fr-CA/docs/get-started/apis/scopes) pour en savoir plus sur les scopes d’authentification.

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

<div id="refresh-tokens">
  #### Jetons d’actualisation
</div>

Si vous spécifiez le scope `offline_access` dans vos options Lock, un [Jeton d’actualisation](/fr-CA/docs/secure/tokens/refresh-tokens) sera renvoyé avec l’access\_token et l’id\_token. <Tooltip tip="Jeton d’actualisation : jeton utilisé pour obtenir un nouveau Jeton d’accès sans obliger les utilisateurs à se reconnecter." cta="Voir le glossaire" href="/fr-CA/docs/glossary?term=Refresh+Tokens">Jetons d’actualisation</Tooltip> peuvent être enregistrés et utilisés pour obtenir un nouveau Jeton d’accès lorsque l’ancien expire. Pour en savoir plus sur l’utilisation des jetons d’actualisation pour l’authentification avec Auth0, consultez la documentation de référence du [SDK Auth0.Swift](/fr-CA/docs/libraries/auth0-swift), que vous utiliseriez pour implémenter les jetons d’actualisation, ou le [guide de démarrage rapide Swift](/fr-CA/docs/quickstart/native/ios-swift), qui fournit un exemple complet d’utilisation d’Auth0 dans le développement Swift, y compris la gestion des jetons d’actualisation.

<div id="termsofservice">
  ### termsOfService
</div>

Par défaut, Lock utilise les conditions d’utilisation et la politique de confidentialité d’Auth0, mais vous pouvez indiquer d’autres URL pour créer des liens vers d’autres conditions d’utilisation et politiques.

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

<div id="show-terms-of-service">
  ### Afficher les conditions d’utilisation
</div>

Les connexions de base de données affichent la boîte de dialogue des conditions d’utilisation. La valeur par défaut est `true`. Notez que les conditions d’utilisation s’affichent toujours si l’indicateur `mustAcceptTerms` est activé.

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

<div id="require-users-to-accept-the-terms-of-service">
  ### Exiger des utilisateurs qu’ils acceptent les conditions d’utilisation
</div>

Les connexions de base de données nécessitent l’acceptation explicite des conditions d’utilisation.

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

<div id="web-authentication-options">
  ## Options d’authentification Web
</div>

<div id="leeway">
  ### leeway
</div>

Décalage horaire utilisé pour la validation du jeton d’identité. Il élargit la période pendant laquelle le jeton d’identité est encore considéré comme valide, afin de tenir compte de l’écart entre l’heure du serveur et celle du client. Par défaut, il est de **60000 millisecondes** (60 secondes).

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

<div id="maxage">
  ### maxAge
</div>

Durée maximale autorisée (en millisecondes) depuis la dernière authentification de l’utilisateur. Utilisé pour la validation du jeton d’identité. Si cette valeur est définie, le jeton d’identité contiendra une revendication `auth_time` avec l’horodatage de l’authentification. La valeur par défaut est `nil`.

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

<div id="database-options">
  ## Options de la base de données
</div>

<div id="allow">
  ### allow
</div>

Indique quels écrans de la base de données seront accessibles; par défaut, tous les écrans sont activés, comme `.Login`, `.Signup` et `.ResetPassword`.

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

<div id="initialscreen">
  ### initialScreen
</div>

Le premier écran à afficher à l’utilisateur. La valeur par défaut est `.Login`; les autres options incluent `.Signup` et `ResetPassword`.

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

<div id="usernamestyle">
  ### usernameStyle
</div>

Spécifiez le type d’identifiant requis pour la connexion. Par défaut, la valeur est `[.Username, .Email]`, mais elle peut aussi être `[.Username]` ou `[.Email]`. Il est toutefois important de noter que cette option n’est active que si vous avez défini l’indicateur `requires_username` sur `true` dans votre [Auth0 Dashboard](https://manage.auth0.com/#/).

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

<div id="custom-signup-fields">
  #### Champs d’inscription personnalisés
</div>

Lors de l’inscription, les renseignements requis par défaut sont le courriel et le mot de passe de l’utilisateur. Vous pouvez élargir les données à recueillir selon vos besoins. Les champs d’inscription supplémentaires que vous ajoutez ici seront stockés dans le `user_metadata`. Pour en savoir plus, consultez [Metadata](/fr-CA/docs/manage-users/user-accounts/metadata). Notez que vous devez préciser 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 bundles, comme dans l’exemple suivant :
CustomTextField(name: "slack\_handle", placeholder: "Slack Handle", icon: LazyImage(name: "ic\_slack", bundle: Bundle(identifier: "CustomBundle")))

<div id="enterprise-options">
  ## Options d’entreprise
</div>

Il existe également des options de configuration propres aux connexions d’entreprise :

<div id="enterpriseconnectionusingactiveauth">
  ### enterpriseConnectionUsingActiveAuth
</div>

Par défaut, les connexions d’entreprise utilisent l’authentification Web. Toutefois, vous pouvez préciser quelles connexions utiliseront plutôt l’authentification par identifiants et demanderont un nom d’utilisateur et un mot de passe.

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

<div id="activedirectoryemailasusername">
  ### activeDirectoryEmailAsUsername
</div>

En mode d’authentification par identifiants, l’utilisateur doit-il utiliser son courriel comme identifiant ? Par défaut, la valeur est `false`; un nom d’utilisateur est alors requis à la place.

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

<div id="logging-options">
  ## Options de journalisation
</div>

Lock offre des options pour activer ou désactiver facilement la journalisation, ainsi que pour ajuster d’autres paramètres connexes.

<div id="loglevel">
  ### logLevel
</div>

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

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

<div id="loghttprequest">
  ### logHttpRequest
</div>

Indique si les requêtes API d’Auth0.swift doivent être consignées dans les journaux. Par défaut, cette valeur est `false`.

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

<div id="loggeroutput">
  ### loggerOutput
</div>

Spécifiez le gestionnaire de sortie du journal; par défaut, l’instruction `print` est utilisée.

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

Dans le code ci-dessus, `loggerOutput` a été configuré pour utiliser [CleanroomLogger](https://github.com/emaloney/CleanroomLogger). On peut généralement le faire en implémentant le protocole `loggerOutput`. Vous pouvez bien sûr utiliser la bibliothèque de journalisation de votre choix. Voici un exemple montrant comment gérer la sortie des 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)
  }
}
```
