Chuyển tới nội dung chính

Khởi tạo tài khoản Super Admin

Role: Super Admin 🛡️

Đây là bước đầu tiên tuyệt đối của vòng đời dự án — chạy trước bất kỳ thao tác nào trong Phase 1. Database migration sẽ seed sẵn tài khoản Super Admin vào hệ thống; việc của bạn là tự đặt mật khẩu cho tài khoản này thông qua luồng Forgot password trước khi đăng nhập lần đầu và tiếp tục onboard team.

Tiền đề

  • Backend đã được deploy và kết nối tới PostgreSQL; cấu hình SMTP (mail service) đã hoạt động để hệ thống gửi được email reset password.
  • File backend-api/.env đã có biến SUPERADMIN_EMAIL trỏ tới địa chỉ email chính thức của Super Admin (ví dụ: ai-powerdesk@smartosc.com). Seeder dùng giá trị này để tạo tài khoản, đồng thời cũng là địa chỉ sẽ nhận email reset password ở các bước dưới.
  • Biến BASE_URL_FE trong .env đã trỏ đúng về domain frontend — backend sẽ chèn giá trị này vào link reset password trong email gửi tới Super Admin.
  • Database migration + seed đã chạy thành công (chi tiết trong Database Migration Guide). Khi container backend-api khởi động ở môi trường staging/production, các bước migration:runseedstart sẽ tự chạy theo thứ tự, và seeder sẽ tạo sẵn user superadmin gắn với SUPERADMIN_EMAIL.
Tài khoản được tạo sẵn

Sau khi seed hoàn tất, hệ thống có sẵn một user với username = superadmin, email = SUPERADMIN_EMAIL, role SUPER_ADMIN và cờ isAdmin = true — nhưng mật khẩu được hash từ một chuỗi ngẫu nhiên không ai biết. Đây là lý do phải đi qua luồng Forgot password để tự đặt mật khẩu của riêng bạn.

Hướng dẫn thao tác

Bước 1 — Đặt mật khẩu lần đầu qua luồng Forgot password

Thay vì dùng mật khẩu do hệ thống sinh, Super Admin tự thiết lập mật khẩu cho chính mình bằng tính năng Forgot password:

  1. Mở trình duyệt, truy cập trang đăng nhập của AIPD.
  2. Ở màn hình login, nhấn vào link "Forgot password?" (ngay bên dưới ô mật khẩu).
  3. Trong form Forgot password, nhập email trùng với giá trị SUPERADMIN_EMAIL đã cấu hình ở .env. Nhấn "Send" (hoặc "Submit") để gửi yêu cầu.
  4. Hệ thống hiển thị thông báo xác nhận đã gửi email. Mở hộp thư của địa chỉ trên, tìm email "Reset Password" do AIPD gửi (nếu chưa thấy, kiểm tra mục Spam/Junk).
  5. Nhấn nút/ link "Reset Password" trong email. Link có dạng ${BASE_URL_FE}/reset-password?token=... và chỉ dùng được một lần, có thời hạn ngắn — nên đặt mật khẩu ngay.
  6. Ở trang reset, nhập mật khẩu mớixác nhận mật khẩu (chọn mật khẩu đủ mạnh — xem khuyến nghị bên dưới). Nhấn "Confirm" để lưu.
  7. Quay lại /admin/, đăng nhập bằng:
    • Username / Email: superadmin hoặc SUPERADMIN_EMAIL.
    • Password: mật khẩu vừa đặt ở bước 6.

Nếu đăng nhập thành công, bạn sẽ được đưa tới dashboard của Admin — tài khoản Super Admin đã sẵn sàng.

Quy tắc đặt mật khẩu

Chọn mật khẩu đủ mạnh (ít nhất 12 ký tự, kết hợp chữ hoa/thường, số và ký tự đặc biệt). Tài khoản này có cờ isAdmin = true nên có toàn quyền hệ thống — bao gồm tạo/xoá user, quản lý permission và project.

Không nhận được email?
  • Kiểm tra cấu hình SMTP của backend (host, port, credentials, sender) và log của backend-api xem có lỗi khi gọi sendResetPasswordEmail không.
  • Đảm bảo email nhập vào đúng bằng SUPERADMIN_EMAIL — nếu nhập email khác, hệ thống vẫn phản hồi thành công (để tránh lộ thông tin user) nhưng thực tế không gửi mail.
  • Kiểm tra BASE_URL_FE — nếu trỏ sai, link trong email sẽ dẫn đến domain không tồn tại.
  • Kiểm tra mục Spam/Junk và whitelist sender domain nếu cần.

Bước 2 — (Tuỳ chọn) Cập nhật thông tin hồ sơ

Sau khi đăng nhập thành công, mở Users (nhóm System Management) ở sidebar, tìm dòng superadmin và nhấn icon bút chì ✏️ để cập nhật thêm:

  • Full Name — tên hiển thị đầy đủ của người giữ tài khoản Super Admin.
  • Title, Division, Center — thông tin tổ chức nội bộ.
  • Language — ngôn ngữ giao diện mặc định (en / vi / jp).

Các trường này không bắt buộc nhưng giúp audit log và màn hình History hiển thị thông tin rõ ràng hơn ở các phase sau.

Bước tiếp theo

Sau khi Super Admin đã đặt mật khẩu và đăng nhập thành công, chuyển sang Phase 1 — Tạo platform users để tạo tài khoản cho các thành viên còn lại của platform.