> ## 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

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.

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

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)
```

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

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

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

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

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

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"
}
```

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

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.

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

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"
}
```

<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 seront toujours affichées 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 que les utilisateurs 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 de Web Authentication
</div>

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

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
}
```

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

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
}
```

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

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

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]
}
```

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

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
}
```

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

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]
}
```

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

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")))

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

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

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

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"]
}
```

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

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
}
```

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

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

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

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
}
```

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

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
}
```

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

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)
  }
}
```
