Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions create/personalization.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,8 @@ For conditional rendering based on user data, use the `user` variable in JSX com
The `user` variable is an empty object for logged-out users. Use optional chaining on all `user` fields to prevent errors. For example, `{user.org?.plan}` instead of `{user.org.plan}`.
</Note>

To read the same user object from a [custom JavaScript file](/customize/custom-scripts#access-authenticated-user-data), use `window.mintlify.user` and listen for the `mintlify:user` event.

## Page visibility

Restrict pages to specific user groups by adding `groups` to page frontmatter. Users must belong to at least one listed group to access the page.
Expand Down
30 changes: 30 additions & 0 deletions customize/custom-scripts.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -269,7 +269,7 @@
- `contextual-feedback-form-submit-button` — Submit button for the contextual feedback form.
</Accordion>
<Accordion title="Code snippet feedback">
- `code-snippet-feedback-popover-content` — Popover content for code snippet feedback.

Check warning on line 272 in customize/custom-scripts.mdx

View check run for this annotation

Mintlify / Mintlify Validation (mintlify) - vale-spellcheck

customize/custom-scripts.mdx#L272

Use 'popover' instead of 'Popover'.
- `code-snippet-feedback-form` — Feedback form for a code snippet.
- `code-snippet-feedback-textarea` — Text area within the code snippet feedback form.
- `code-snippet-feedback-form-title` — Title of the code snippet feedback form.
Expand Down Expand Up @@ -386,4 +386,34 @@

<Warning>
Use with caution to avoid introducing security vulnerabilities.
</Warning>

### Access authenticated user data

If your site uses [authentication](/deploy/authentication-setup), custom scripts can read the signed-in user from `window.mintlify.user`. This is the same object exposed to MDX pages as the [`user` variable](/create/personalization#dynamic-mdx-content), so it reflects the `content` field of your user data.

Because custom scripts run before user info resolves, listen for the `mintlify:user` event to identify when the user object is available. The event fires when user info resolves and again on any change. Its `detail` is the user object, or `null` when the visitor is signed out.

Check warning on line 395 in customize/custom-scripts.mdx

View check run for this annotation

Mintlify / Mintlify Validation (mintlify) - vale-spellcheck

customize/custom-scripts.mdx#L395

In general, use active voice instead of passive voice ('is signed').

```js Read the user after it resolves
window.addEventListener('mintlify:user', (event) => {
const user = event.detail;
if (!user) return; // Signed out.

renderAppLauncher(user);
});
```

If the user has already resolved by the time your script runs, read `window.mintlify.user` directly.

```js Read the current user
const user = window.mintlify?.user;
if (user) {
renderAppLauncher(user);
}
```

`window.mintlify.user` is `undefined` until user info resolves and when the visitor is signed out. Use optional chaining when reading nested fields.

Check warning on line 415 in customize/custom-scripts.mdx

View check run for this annotation

Mintlify / Mintlify Validation (mintlify) - vale-spellcheck

customize/custom-scripts.mdx#L415

In general, use active voice instead of passive voice ('is signed').

<Warning>
Client-side scripts can access anything you place in the user `content` field. Do not include secrets or credentials that shouldn't be readable in the browser.
</Warning>
2 changes: 2 additions & 0 deletions es/create/personalization.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,8 @@ Para el renderizado condicional basado en datos de usuario, usa la variable `use
La variable `user` es un objeto vacío para los usuarios que no han iniciado sesión. Utiliza el encadenamiento opcional en todas las propiedades de `user` para evitar errores. Por ejemplo, `{user.org?.plan}` en lugar de `{user.org.plan}`.
</Note>

Para leer el mismo objeto de usuario desde un [archivo JavaScript personalizado](/es/customize/custom-scripts#access-authenticated-user-data), utiliza `window.mintlify.user` y escucha el evento `mintlify:user`.

<div id="page-visibility">
## Visibilidad de páginas
</div>
Expand Down
32 changes: 32 additions & 0 deletions es/customize/custom-scripts.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -407,3 +407,35 @@ gtag('config', 'TAG_ID');
<Warning>
Úsalo con precaución para no introducir vulnerabilidades de seguridad.
</Warning>

<div id="access-authenticated-user-data">
### Acceder a los datos del usuario autenticado
</div>

Si tu sitio utiliza [autenticación](/es/deploy/authentication-setup), los scripts personalizados pueden leer el usuario con sesión iniciada desde `window.mintlify.user`. Es el mismo objeto que se expone en las páginas MDX como la [variable `user`](/es/create/personalization#dynamic-mdx-content), por lo que refleja el campo `content` de tus datos de usuario.

Como los scripts personalizados se ejecutan antes de que la información del usuario se resuelva, escucha el evento `mintlify:user` para reaccionar en cuanto el objeto de usuario esté disponible. El evento se dispara cuando la información del usuario se resuelve y también cada vez que cambia. Su `detail` es el objeto de usuario, o `null` cuando el visitante no ha iniciado sesión.

```js Read the user after it resolves
window.addEventListener('mintlify:user', (event) => {
const user = event.detail;
if (!user) return; // Signed out.

renderAppLauncher(user);
});
```

Si el usuario ya se ha resuelto cuando se ejecuta tu script, lee `window.mintlify.user` directamente.

```js Read the current user
const user = window.mintlify?.user;
if (user) {
renderAppLauncher(user);
}
```

`window.mintlify.user` es `undefined` hasta que la información del usuario se resuelva y también cuando el visitante no ha iniciado sesión. Utiliza el encadenamiento opcional al leer campos anidados.

<Warning>
Todo lo que incluyas en el campo `content` del usuario queda expuesto a los scripts del lado del cliente. No incluyas secretos ni credenciales que no deban ser legibles en el navegador.
</Warning>
2 changes: 2 additions & 0 deletions fr/create/personalization.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,8 @@ Pour effectuer un rendu conditionnel en fonction des données utilisateur, utili
La variable `user` est un objet vide pour les utilisateurs déconnectés. Utilisez l’opérateur d’enchaînement optionnel sur tous les champs de `user` pour éviter les erreurs. Par exemple, `{user.org?.plan}` au lieu de `{user.org.plan}`.
</Note>

Pour lire le même objet utilisateur depuis un [fichier JavaScript personnalisé](/fr/customize/custom-scripts#access-authenticated-user-data), utilisez `window.mintlify.user` et écoutez l’événement `mintlify:user`.

<div id="page-visibility">
## Visibilité des pages
</div>
Expand Down
32 changes: 32 additions & 0 deletions fr/customize/custom-scripts.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -407,3 +407,35 @@ gtag('config', 'TAG_ID');
<Warning>
Veuillez l'utiliser avec prudence afin de ne pas introduire de vulnérabilités de sécurité.
</Warning>

<div id="access-authenticated-user-data">
### Accéder aux données de l'utilisateur authentifié
</div>

Si votre site utilise l'[authentification](/fr/deploy/authentication-setup), les scripts personnalisés peuvent lire l'utilisateur connecté depuis `window.mintlify.user`. Il s'agit du même objet que celui exposé aux pages MDX via la [variable `user`](/fr/create/personalization#dynamic-mdx-content) : il reflète le champ `content` de vos données utilisateur.

Comme les scripts personnalisés s'exécutent avant que les informations de l'utilisateur ne soient résolues, écoutez l'événement `mintlify:user` pour réagir dès que l'objet utilisateur est disponible. L'événement se déclenche lorsque les informations de l'utilisateur sont résolues, puis à chaque changement. Son `detail` correspond à l'objet utilisateur, ou à `null` lorsque le visiteur est déconnecté.

```js Read the user after it resolves
window.addEventListener('mintlify:user', (event) => {
const user = event.detail;
if (!user) return; // Signed out.

renderAppLauncher(user);
});
```

Si l'utilisateur a déjà été résolu au moment où votre script s'exécute, lisez `window.mintlify.user` directement.

```js Read the current user
const user = window.mintlify?.user;
if (user) {
renderAppLauncher(user);
}
```

`window.mintlify.user` vaut `undefined` tant que les informations de l'utilisateur ne sont pas résolues, ainsi que lorsque le visiteur est déconnecté. Utilisez l'opérateur d'enchaînement optionnel pour lire les champs imbriqués.

<Warning>
Tout ce que vous placez dans le champ `content` de l'utilisateur est exposé aux scripts côté client. N'y incluez pas de secrets ni d'identifiants qui ne devraient pas être lisibles dans le navigateur.
</Warning>
2 changes: 2 additions & 0 deletions zh/create/personalization.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,8 @@ keywords: ["内容个性化", "个性化", "用户数据", "分组", "动态", "
对于处于未登录状态的用户,`user` 变量是一个空对象。请在所有 `user` 字段上使用可选链操作符以避免错误。例如,使用 `{user.org?.plan}` 而不是 `{user.org.plan}`。
</Note>

要从[自定义 JavaScript 文件](/zh/customize/custom-scripts#access-authenticated-user-data)中读取同一个用户对象,请使用 `window.mintlify.user` 并监听 `mintlify:user` 事件。

<div id="page-visibility">
## 页面可见性
</div>
Expand Down
32 changes: 32 additions & 0 deletions zh/customize/custom-scripts.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -407,3 +407,35 @@ gtag('config', 'TAG_ID');
<Warning>
请谨慎使用,避免造成安全漏洞。
</Warning>

<div id="access-authenticated-user-data">
### 访问已登录用户的数据
</div>

如果你的站点启用了[身份验证](/zh/deploy/authentication-setup),自定义脚本可以通过 `window.mintlify.user` 读取已登录用户。它与 MDX 页面中暴露的 [`user` 变量](/zh/create/personalization#dynamic-mdx-content)是同一个对象,因此对应你用户数据中的 `content` 字段。

由于自定义脚本会在用户信息解析之前运行,请监听 `mintlify:user` 事件,以便在用户对象可用时做出响应。该事件会在用户信息解析时触发,之后每次发生变化也会再次触发。事件的 `detail` 是用户对象;当访客处于未登录状态时,则为 `null`。

```js Read the user after it resolves
window.addEventListener('mintlify:user', (event) => {
const user = event.detail;
if (!user) return; // Signed out.

renderAppLauncher(user);
});
```

如果你的脚本运行时用户已经解析完成,可直接读取 `window.mintlify.user`。

```js Read the current user
const user = window.mintlify?.user;
if (user) {
renderAppLauncher(user);
}
```

在用户信息解析完成之前,以及访客处于未登录状态时,`window.mintlify.user` 都为 `undefined`。读取嵌套字段时请使用可选链操作符。

<Warning>
你放入用户 `content` 字段的所有内容都会暴露给客户端脚本。不要在其中包含不应在浏览器中被读取的机密或凭据。
</Warning>