> 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.md).

# Quản lý người dùng

## Tạo người dùng quản trị

Triển khai Overleaf Toolkit:

{% code title="Overleaf Toolkit" overflow="wrap" %}

```bash
$ bin/docker-compose exec sharelatex /bin/bash -ce "cd /overleaf/services/web && node modules/server-ce-scripts/scripts/create-user --admin --email=joe@example.com"
```

{% endcode %}

Triển khai docker-compose.yml cũ:

{% code title="docker-compose kiểu cũ" overflow="wrap" %}

```bash
$ docker exec sharelatex /bin/bash -ce "cd /overleaf/services/web && node modules/server-ce-scripts/scripts/create-user --admin --email=joe@example.com"
```

{% endcode %}

Lệnh sẽ tạo một người dùng với địa chỉ email được cung cấp nếu họ chưa tồn tại, và biến họ thành quản trị viên. Kết quả lệnh bao gồm một URL để truy cập, nơi bạn có thể đặt mật khẩu cho người dùng này và đăng nhập lần đầu tiên.

{% hint style="info" %}
Với cách tiếp cận bằng chương trình, bạn cũng có thể dùng cùng một script để tạo người dùng thường cũng như quản trị viên. Với người dùng thường, hãy bỏ qua cờ --admin.
{% endhint %}

Nếu bạn sử dụng tài khoản nội bộ để xác thực và cần nâng một người dùng hiện có lên thành quản trị viên của phiên bản hoặc thu hồi quyền quản trị, hãy làm như sau:

{% stepper %}
{% step %}

### Thông qua giao diện quản trị

* Đăng nhập với tư cách một quản trị viên hiện có.
* Nhấp Admin -> Manage Users.
* Tìm người dùng và nhấp vào địa chỉ email của họ.
* Cuộn xuống phần Site Admin và nhấp vào liên kết (show).
* Đánh dấu vào ô Is Site Admin.
* Nhấp Save để hoàn tất.
  {% endstep %}
  {% endstepper %}

***

## Xóa người dùng

Như đã giải thích trong hướng dẫn của chúng tôi về [hiểu cách sử dụng giấy phép](broken://pages/0c024f16de2c13ae07e50396819a2a6eabee9aae), nhìn chung không nên xóa tài khoản trừ khi chúng không còn cần thiết. Việc xóa tài khoản sẽ xóa tài khoản và khiến cộng tác viên mất quyền truy cập vào các dự án. Hiện tại không có cách nào để vô hiệu hóa tài khoản — chúng либо tồn tại với dữ liệu được giữ lại hoặc bị xóa.

Theo mặc định, tài khoản được xóa mềm. Để biết thông tin về việc xóa vĩnh viễn người dùng khỏi phiên bản của bạn, hãy xem `ENABLE_CRON_RESOURCE_DELETION` trong [Các biến môi trường](broken://pages/556eaeb4dddcb30f8e61eab36f50573c660f1752) hướng dẫn.

{% hint style="info" %}
Tài khoản mặc định được xóa mềm. Xem `ENABLE_CRON_RESOURCE_DELETION` để biết hành vi xóa vĩnh viễn.
{% endhint %}

### Thông qua Admin -> Manage Users

{% stepper %}
{% step %}

* Đăng nhập với tư cách quản trị viên.
* Nhấp Admin -> Manage Users.
* Tìm người dùng và đánh dấu vào ô bên cạnh địa chỉ email của họ.
* Nhấp vào biểu tượng thùng rác.
* Nhấp Delete để xác nhận.
  {% endstep %}
  {% endstepper %}

### Thông qua dòng lệnh

Tài khoản người dùng (và các dự án của họ) có thể được xóa bằng các lệnh sau.

Triển khai Overleaf Toolkit:

{% code title="Overleaf Toolkit" %}

```bash
$ bin/docker-compose exec sharelatex /bin/bash -ce "cd /overleaf/services/web && node modules/server-ce-scripts/scripts/delete-user.mjs --email=joe@example.com"
```

{% endcode %}

Triển khai docker-compose.yml cũ:

{% code title="docker-compose kiểu cũ" %}

```bash
$ docker exec sharelatex /bin/bash -ce "cd /overleaf/services/web && node modules/server-ce-scripts/scripts/delete-user.mjs --email=joe@example.com"
```

{% endcode %}

{% hint style="danger" %}
Script xóa sử dụng một tùy chọn force được mã hóa cứng, đảm bảo việc xóa vẫn tiếp tục ngay cả khi email thông báo xóa tài khoản không gửi được (ví dụ: khi email của người dùng không còn hoạt động).
{% endhint %}

{% hint style="info" %}
Từ phiên bản 5.5.0, có thể dùng tùy chọn --skip-email để ngăn gửi email thông báo cho người dùng đã bị xóa.
{% endhint %}

***

## Khôi phục một người dùng đã bị xóa mềm

Nếu một người dùng chỉ mới bị xóa mềm, bạn có thể khôi phục tài khoản và các dự án của họ.

{% stepper %}
{% step %}

* Đăng nhập với tư cách quản trị viên.
* Nhấp Admin -> Manage Users.
* Tìm người dùng bạn muốn khôi phục.
* Nhấp vào nút Hiển thị người dùng đã xóa.
* Nhấp vào địa chỉ email của người dùng đã bị xóa.
* Nhấp Khôi phục Tài khoản Này.
* Nhấp Khôi phục để xác nhận.
  {% endstep %}
  {% endstepper %}

{% hint style="danger" %}
Khi ENABLE\_CRON\_RESOURCE\_DELETION được đặt thành true, các tài khoản đã bị xóa mềm có thể được khôi phục trong khoảng thời gian 90 ngày. Sau 90 ngày, không thể khôi phục tài khoản nữa.
{% endhint %}

***

## Đếm số người dùng

Bạn có thể lấy số lượng người dùng qua giao diện quản trị tại <https://you-instance-url/admin/user#license>. Đối với các kiểm tra và xuất dữ liệu theo chương trình, các ví dụ sau có thể hữu ích.

Tổng số người dùng:

{% code title="Tổng số người dùng" %}

```bash
echo 'db.users.countDocuments()' | docker exec -i mongo mongosh --quiet localhost/sharelatex
# overleaf [direct: primary] sharelatex> 16
```

{% endcode %}

Tổng số người dùng sử dụng điểm cuối metrics:

{% code title="Số người dùng hoạt động từ metrics" %}

```bash
docker exec sharelatex curl http://127.0.0.1:3000/metrics | grep num_active_users
# # HELP num_active_users num_active_users
# # TYPE num_active_users gauge
# num_active_users{app="web-api",host="b3ae4ff549d8"} 16
```

{% endcode %}

Tổng số người dùng hoạt động (ví dụ: người dùng hoạt động trong 365 ngày gần đây):

{% code title="Tổng số người dùng đang hoạt động" %}

```bash
echo 'db.users.countDocuments({ lastActive: { $gte: new Date(new Date().getTime() - (365 * 24 * 60 * 60 * 1000)) } })' | docker exec -i mongo mongosh --quiet localhost/sharelatex
# overleaf [direct: primary] sharelatex> 10
```

{% endcode %}

***

## Cập nhật thông tin tài khoản người dùng

Cách cập nhật tài khoản được thực hiện phụ thuộc vào việc SSO có được bật hay không.

* Nếu không dùng SSO:
  * Quản trị viên có thể chỉnh sửa thông tin tài khoản người dùng qua Admin -> Manage Users (email, tên, họ và tạo liên kết đặt lại mật khẩu).
  * Người dùng thường có thể cập nhật thông tin của chính họ qua Account -> Account Settings (bao gồm thay đổi mật khẩu và tạo token xác thực Git).
* Nếu dùng SSO:
  * Server Pro có thể được cấu hình để cập nhật tên và họ của người dùng khi đăng nhập dựa trên hệ thống xác thực.
  * Khi OVERLEAF\_SAML\_UPDATE\_USER\_DETAILS\_ON\_LOGIN hoặc OVERLEAF\_LDAP\_UPDATE\_USER\_DETAILS\_ON\_LOGIN là true, biểu mẫu thông tin người dùng tại <https://your-instance-url/user/settings> bị vô hiệu hóa và tên/họ chỉ có thể được đặt trong hệ thống quản lý danh tính của bạn.

Để biết thêm chi tiết, xem:

* Cấu hình SAML 2.0: <https://docs.overleaf.com/on-premises/configuration/overleaf-toolkit/server-pro-only-configuration/saml-2.0>
* Cấu hình LDAP: <https://docs.overleaf.com/on-premises/configuration/overleaf-toolkit/server-pro-only-configuration/ldap>

***

Cập nhật lần cuối 4 tháng trước

Trang tài liệu này chứa các liên kết đến các hướng dẫn và trang cấu hình bên ngoài. Tất cả các liên kết và tham số truy vấn đều được giữ nguyên như trong nội dung gốc.


---

# 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.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.
