> 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/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 một 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 người dùng bằng một tệp CSV có định dạng sau:

`email cũ,email mới`

Sau khi thực hiện một số bước 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ừ `email cũ` đến `email mới`.

### **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ả `email cũ` và `email mới` đều là địa chỉ email hợp lệ
* Không có mục trùng lặp, ví dụ, bạn không đang cố gắng cập nhật nhiều người dùng khác nhau thành cùng một địa chỉ email mới hoặc bạn đang cố gắng 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 sử 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 bỏ qua, quá trình di chuyển sẽ diễn ra ở chế độ chạy thử (dry-run), 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` phải đượ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ật ký kiểm toán. Hãy vào **Quản trị** > **Quản lý người dùng** và tìm kiế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 một lỗi có đượ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 để biểu thị 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://overleaf-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.
