> For the complete documentation index, see [llms.txt](https://ayakaleaf-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://ayakaleaf-pro.ayaka.space/on-premises/vi/quan-ly-nguoi-dung-va-du-an/user-management/username-migration.md).

# Di chuyển tên người dùng

## Di chuyển tên người dùng

Xét từ góc độ đăng nhập, định danh chính của người dùng là địa chỉ email của họ. Nếu bạn đang di chuyển từ xác thực cục bộ sang SSO hoặc đang di chuyển từ một IdP sang một IdP khác, bạn có thể cần cập nhật địa chỉ email của người dùng.

Để hỗ trợ việc này, một script được cung cấp để di chuyển email của người dùng bằng một tệp CSV có định dạng sau:

`oldEmail,newEmail`

Sau khi thực hiện một số kiểm tra xác thực, script sẽ lặp qua tệp CSV và cập nhật địa chỉ email của người dùng từ `oldEmail` đến `newEmail`.

### **Xác thực**

Trước khi chạy quá trình di chuyển, `<csv_file>` sẽ được kiểm tra để đảm bảo rằng:

* Đối với mỗi hàng, cả `oldEmail` và `newEmail` đều là địa chỉ email hợp lệ
* Không có mục nhập trùng lặp, ví dụ: bạn không đang cố cập nhật các người dùng khác nhau sang cùng một địa chỉ email mới hoặc bạn đang cố cập nhật cùng một tài khoản người dùng bằng một địa chỉ email đã được sử dụng.

### **Cách dùng** <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 %}

### **Các cờ** <a href="#flags" id="flags"></a>

| Tên                | Mô tả                                                                                                                                                                                                                                                                                                           |
| ------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `--commit`         | <p>Việc bao gồm <code>--commit</code> cờ này sẽ thực sự thực hiện quá trình di chuyển. Khi không được chỉ định, quá trình di chuyển sẽ diễn ra ở chế độ chạy thử, trong đó không có thay đổi nào được thực hiện nhưng việc xác thực vẫn được tiến hành.<br><br><strong>Mặc định</strong>:<code>false</code></p> |
| `--continue`       | Trường `--continue` cờ này sẽ tiếp tục quá trình di chuyển nếu tài khoản người dùng đó có địa chỉ email trên tài khoản đã được cập nhật                                                                                                                                                                         |
| `--ignore-missing` | Trường `--ignore-missing` cờ này sẽ tiếp tục quá trình di chuyển nếu không tìm thấy tài khoản người dùng                                                                                                                                                                                                        |
| `--admin-id`       | Trường `--admin-id` nên được đặt thành ID của Quản trị viên đang thực hiện quá trình di chuyển và sẽ được dùng cho các mục nhập nhật ký kiểm tra. Truy cập **Quản trị** > **Quản lý người dùng** và tìm địa chỉ email của bạn rồi nhấp vào kết quả đầu tiên để tìm user-id của bạn.                             |
| `<csv_file>`       | Trường `<csv_file>` là tệp chứa các địa chỉ email cũ và mới trong                                                                                                                                                                                                                                               |

### **Hoàn tất** <a href="#completion" id="completion"></a>

Trong khi thực thi script di chuyển, tùy thuộc vào các cờ bạn đã chọn sẽ quyết định liệu có lỗi nào được ghi vào console rồi tiếp tục hay được ghi vào console rồi thoát. Nếu script kết thúc sớm do lỗi, nó sẽ thoát với mã 1 để cho biết rằng nó không thành công.

Khi quá trình di chuyển hoàn tất, script sẽ ghi số lượng cập nhật thành công, thất bại và bị bỏ qua ra console. Nếu quá trình di chuyển hoàn tất thành công, nó sẽ thoát với mã 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://ayakaleaf-pro.ayaka.space/on-premises/vi/quan-ly-nguoi-dung-va-du-an/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.
