diff --git a/create/personalization.mdx b/create/personalization.mdx
index e32349222..dd6a96fc5 100644
--- a/create/personalization.mdx
+++ b/create/personalization.mdx
@@ -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}`.
+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.
diff --git a/customize/custom-scripts.mdx b/customize/custom-scripts.mdx
index dda260b5c..8ac4ea383 100644
--- a/customize/custom-scripts.mdx
+++ b/customize/custom-scripts.mdx
@@ -386,4 +386,34 @@ gtag('config', 'TAG_ID');
Use with caution to avoid introducing security vulnerabilities.
+
+
+### 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.
+
+```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.
+
+
+ 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.
\ No newline at end of file
diff --git a/es/create/personalization.mdx b/es/create/personalization.mdx
index 22bef8e1b..3115c9bdf 100644
--- a/es/create/personalization.mdx
+++ b/es/create/personalization.mdx
@@ -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}`.
+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`.
+
## Visibilidad de páginas
diff --git a/es/customize/custom-scripts.mdx b/es/customize/custom-scripts.mdx
index cbf585660..1d9a40387 100644
--- a/es/customize/custom-scripts.mdx
+++ b/es/customize/custom-scripts.mdx
@@ -407,3 +407,35 @@ gtag('config', 'TAG_ID');
Úsalo con precaución para no introducir vulnerabilidades de seguridad.
+
+
+ ### Acceder a los datos del usuario autenticado
+
+
+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.
+
+
+ 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.
+
diff --git a/fr/create/personalization.mdx b/fr/create/personalization.mdx
index 8e6058207..d468b3a9f 100644
--- a/fr/create/personalization.mdx
+++ b/fr/create/personalization.mdx
@@ -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}`.
+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`.
+
## Visibilité des pages
diff --git a/fr/customize/custom-scripts.mdx b/fr/customize/custom-scripts.mdx
index 55a8a2659..256bb0c5f 100644
--- a/fr/customize/custom-scripts.mdx
+++ b/fr/customize/custom-scripts.mdx
@@ -407,3 +407,35 @@ gtag('config', 'TAG_ID');
Veuillez l'utiliser avec prudence afin de ne pas introduire de vulnérabilités de sécurité.
+
+
+ ### Accéder aux données de l'utilisateur authentifié
+
+
+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.
+
+
+ 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.
+
diff --git a/zh/create/personalization.mdx b/zh/create/personalization.mdx
index be96cf851..7c576521e 100644
--- a/zh/create/personalization.mdx
+++ b/zh/create/personalization.mdx
@@ -63,6 +63,8 @@ keywords: ["内容个性化", "个性化", "用户数据", "分组", "动态", "
对于处于未登录状态的用户,`user` 变量是一个空对象。请在所有 `user` 字段上使用可选链操作符以避免错误。例如,使用 `{user.org?.plan}` 而不是 `{user.org.plan}`。
+要从[自定义 JavaScript 文件](/zh/customize/custom-scripts#access-authenticated-user-data)中读取同一个用户对象,请使用 `window.mintlify.user` 并监听 `mintlify:user` 事件。
+
## 页面可见性
diff --git a/zh/customize/custom-scripts.mdx b/zh/customize/custom-scripts.mdx
index e78c79f3f..1595f91ca 100644
--- a/zh/customize/custom-scripts.mdx
+++ b/zh/customize/custom-scripts.mdx
@@ -407,3 +407,35 @@ gtag('config', 'TAG_ID');
请谨慎使用,避免造成安全漏洞。
+
+
+ ### 访问已登录用户的数据
+
+
+如果你的站点启用了[身份验证](/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`。读取嵌套字段时请使用可选链操作符。
+
+
+ 你放入用户 `content` 字段的所有内容都会暴露给客户端脚本。不要在其中包含不应在浏览器中被读取的机密或凭据。
+