> For the complete documentation index, see [llms.txt](https://overleaf-pro.ayaka.space/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://overleaf-pro.ayaka.space/on-premises/ru/upravlenie-polzovatelyami-i-proektami/user-management/username-migration.md).

# Миграция имён пользователей

## Миграция имени пользователя

С точки зрения входа в систему основным идентификатором пользователя является его адрес электронной почты. Если вы мигрируете с локальной аутентификации на SSO или переносите пользователей от одного IdP к другому, вам может потребоваться обновить адреса электронной почты пользователей.

Для этого предоставлен скрипт, который перенесёт адреса электронной почты пользователей с использованием CSV-файла со следующим форматом:

`oldEmail,newEmail`

После выполнения некоторых проверок валидации скрипт пройдётся по CSV-файлу и обновит адреса электронной почты пользователей с `oldEmail` с `newEmail`.

### **Проверка**

Перед запуском миграции `<csv_file>` будет проверен, чтобы убедиться, что:

* Для каждой строки и `oldEmail` и `newEmail` являются допустимыми адресами электронной почты
* Нет дублирующихся записей, например, вы не пытаетесь обновить разных пользователей на один и тот же новый адрес электронной почты или пытаетесь обновить одну и ту же учетную запись пользователя адресом электронной почты, который уже используется

### **Использование** <a href="#usage" id="usage"></a>

{% code overflow="wrap" %}

```bash
docker cp <csv_file> sharelatex:/overleaf/services/web/<csv_file> docker exec sharelatex /bin/bash -c "cd /overleaf/services/web;node ./modules/server-ce-scripts/scripts/migrate-user-emails.js [--commit] [--continue|--ignore-missing] [--admin-id=ADMIN_USER_ID] <csv_file>"
```

{% endcode %}

### **Флаги** <a href="#flags" id="flags"></a>

| Имя                | Описание                                                                                                                                                                                                                                                                                                      |
| ------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `--commit`         | <p>Включение <code>--commit</code> флага действительно выполнит миграцию. Если он не указан, миграция будет выполнена в режиме dry-run, при котором изменения не вносятся, но проверка все равно выполняется.<br><br><strong>По умолчанию</strong>:<code>false</code></p>                                     |
| `--continue`       | Поле `--continue` флаг продолжит процесс миграции, если учетная запись пользователя уже была обновлена                                                                                                                                                                                                        |
| `--ignore-missing` | Поле `--ignore-missing` флаг продолжит процесс миграции, если учетная запись пользователя не была найдена                                                                                                                                                                                                     |
| `--admin-id`       | Поле `--admin-id` должен быть установлен в ID администратора, выполняющего миграцию, и будет использоваться для записей в журнале аудита. Перейдите в **Администратор** > **Управление пользователями** и найдите свой адрес электронной почты, затем нажмите на первый результат, чтобы узнать свой user-id. |
| `<csv_file>`       | Поле `<csv_file>` — это файл со старыми и новыми адресами электронной почты в                                                                                                                                                                                                                                 |

### **Завершение** <a href="#completion" id="completion"></a>

При выполнении скрипта миграции, в зависимости от выбранных вами флагов, ошибка будет либо записана в консоль и выполнение продолжится, либо записана в консоль и скрипт завершится. Если скрипт завершится преждевременно из-за ошибки, он выйдет с кодом 1, чтобы обозначить, что он завершился неуспешно.

По завершении миграции скрипт выведет в консоль количество успешных, неудачных и пропущенных обновлений. Если миграция завершится успешно, он выйдет с кодом 0.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://overleaf-pro.ayaka.space/on-premises/ru/upravlenie-polzovatelyami-i-proektami/user-management/username-migration.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
