> ## Documentation Index
> Fetch the complete documentation index at: https://docs-dev-feat-init-gt-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

Vous trouverez ci-dessous de nombreuses options pour configurer le comportement de Lock. De plus, la page [Options de personnalisation du style](/docs/fr-ca/libraries/lock-swift/lock-swift-customization) propose aussi plusieurs options pour modifier l’apparence et le style de Lock.

<h2 id="configuring-locks-behavior">
  Configurer le comportement de Lock
</h2>

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

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

<h3 id="closable">
  closable
</h3>

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

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

<h3 id="scope">
  scope
</h3>

Portée utilisée pour l’authentification. Par défaut, la valeur est `openid`. Elle renvoie non seulement le **<Tooltip tip="Jeton d’accès : information d’identification d’autorisation, sous la forme d’une chaîne opaque ou d’un JWT, utilisée pour accéder à une API." cta="Voir le glossaire" href="/docs/fr-ca/glossary?term=Access+Token">jeton d’accès</Tooltip>**, mais aussi un **<Tooltip tip="jeton d’identité : information d’identification destinée au client lui-même plutôt qu’à l’accès à une ressource." cta="Voir le glossaire" href="/docs/fr-ca/glossary?term=ID+Token">jeton d’identité</Tooltip>**, qui est un <Tooltip tip="jeton d’identité : information d’identification destinée au client lui-même plutôt qu’à l’accès à une ressource." cta="Voir le glossaire" href="/docs/fr-ca/glossary?term=JSON+Web+Token">JSON Web Token</Tooltip> (JWT) contenant des renseignements sur l’utilisateur. Consultez la documentation sur les [portées](/docs/fr-ca/get-started/apis/scopes) pour en savoir plus sur les portées d’authentification.

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

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

Le fait de préciser la portée `offline_access` dans vos options Lock permettra de renvoyer un [jeton d’actualisation](/docs/fr-ca/secure/tokens/refresh-tokens) 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 connecter de nouveau." cta="Voir le glossaire" href="/docs/fr-ca/glossary?term=Refresh+Tokens">Les 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 avec l’authentification Auth0, consultez la documentation de référence du [SDK Auth0.Swift](/docs/fr-ca/libraries/auth0-swift), que vous utiliseriez pour mettre en œuvre les jetons d’actualisation, ou le [guide Quickstart Swift](/docs/fr-ca/quickstart/native/ios-swift), qui fournit un exemple complet de l’utilisation d’Auth0 dans le développement Swift, y compris la gestion des jetons d’actualisation.

<h3 id="termsofservice">
  termsOfService
</h3>

Par défaut, Lock utilisera les Conditions d’utilisation et la Politique de confidentialité d’Auth0, mais il est possible de renseigner d’autres URL pour créer des liens vers d’autres conditions et politiques.

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

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

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 seront toujours affichées si l’indicateur `mustAcceptTerms` est activé.

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

<h3 id="require-users-to-accept-the-terms-of-service">
  Exiger que les utilisateurs acceptent les Conditions d’utilisation
</h3>

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

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

<h2 id="web-authentication-options">
  Options de Web Authentication
</h2>

<h3 id="leeway">
  leeway
</h3>

Tolérance de décalage d’horloge utilisée pour la validation du jeton d’identité. Elle é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, elle est de **60000 millisecondes** (60 secondes).

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

<h3 id="maxage">
  maxAge
</h3>

Temps écoulé maximal autorisé (en millisecondes) depuis la dernière authentification de l’utilisateur. Utilisé pour valider le jeton d’identité. S’il est défini, 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
}
```

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

<h3 id="allow">
  allow
</h3>

Quels écrans seront accessibles ; par défaut, tous les écrans sont activés, notamment `.Login, .Signup, .ResetPassword`.

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

<h3 id="initialscreen">
  initialScreen
</h3>

Le premier écran à afficher à l’utilisateur. Par défaut, il s’agit de `.Login`; les autres options sont `.Signup` et `ResetPassword`.

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

<h3 id="usernamestyle">
  usernameStyle
</h3>

Précisez le type d’identifiant exigé pour la connexion. Par défaut, il peut s’agir de l’un ou l’autre des éléments suivants : `[.Username, .Email]`, mais cette option peut aussi accepter `[.Username]` ou `[.Email]`. Cependant, il est important de noter que cette option n’est active que si vous avez défini l’indicateur `requires_username` à `true` dans votre [Auth0 Dashboard](https://manage.auth0.com/#/).

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

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

Par défaut, l’inscription exige l’adresse courriel et le mot de passe de l’utilisateur. Vous pouvez ajouter d’autres champs selon vos besoins en matière de collecte de données. Les champs d’inscription supplémentaires ajoutés ici seront stockés dans le `user_metadata`. Pour en savoir plus, consultez [Metadata](/docs/fr-ca/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 aussi indiquer des icônes provenant d’autres bundles, comme dans l’exemple suivant :
CustomTextField(name: "slack\_handle", placeholder: "Nom d’utilisateur Slack", icon: LazyImage(name: "ic\_slack", bundle: Bundle(identifier: "CustomBundle")))

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

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

<h3 id="enterpriseconnectionusingactiveauth">
  enterpriseConnectionUsingActiveAuth
</h3>

Par défaut, les connexions d’entreprise utilisent Web Authentication. Cependant, 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"]
}
```

<h3 id="activedirectoryemailasusername">
  activeDirectoryEmailAsUsername
</h3>

En mode d’authentification par identifiants, l’utilisateur doit-il fournir son adresse courriel comme identifiant? Par défaut, la valeur est `false` et c’est plutôt un nom d’utilisateur qui est requis.

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

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

Lock offre des options pour activer et désactiver facilement les fonctionnalités de journalisation, ainsi que pour ajuster d’autres paramètres connexes.

<h3 id="loglevel">
  logLevel
</h3>

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

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

<h3 id="loghttprequest">
  logHttpRequest
</h3>

Indique s’il faut consigner les requêtes de l’API Auth0.swift. Par défaut, cette valeur est `false`.

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

<h3 id="loggeroutput">
  loggerOutput
</h3>

Indiquez le gestionnaire de sortie du journaliseur; par défaut, cette option utilise l’instruction `print`.

```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 y arriver en implémentant le protocole `loggerOutput`. Vous pouvez bien sûr utiliser votre bibliothèque de journalisation préférée. Vous trouverez ci-dessous un exemple montrant comment gérer la sortie de `loggerOutput` 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)
  }
}
```
