Nhiệm vụ: Thêm nút chỉnh sửa sản phẩm nhanh

Thêm nút chỉnh sửa sản phẩm nhanh

Quản trị viên phải có khả năng mở sản phẩm để chỉnh sửa ngay trên trang sản phẩm

Ворклоги

Đã hoàn thành triển khai

Nút chỉnh sửa sản phẩm nhanh và thanh công cụ quản trị (toolbar) đã được triển khai.

Cách thực hiện kiểm tra ủy quyền

Ban đầu, phương án truyền MODX cookie vào chính trang web MODX và nhận kết quả kiểm tra phiên hiện tại từ trang web đó thông qua các cơ chế ủy quyền riêng của nó đã được cân nhắc.

Phương án này đã bị loại bỏ vì quá dư thừa đối với nhiệm vụ hiện tại: nó sẽ đòi hỏi cấu hình môi trường bổ sung, kiến thức về địa chỉ trang web MODX và thêm một tương tác mạng nữa.

Trong lần triển khai hiện tại, cookie được lấy từ các tiêu đề (headers) của yêu cầu đến và được xác thực trực tiếp thông qua client hiện có sẵn kết nối với cơ sở dữ liệu hiện tại.

Đối với frontend mới, hiện tại chưa cần đến một đối tượng MODX user hoàn chỉnh. Chỉ cần một dấu hiệu đáng tin cậy cho thấy phiên quản trị tồn tại để hiển thị thanh công cụ bổ sung.

Các thao tác quản trị cuối cùng vẫn được thực hiện trong MODX Manager. Khi chuyển hướng đến đó, MODX sẽ kiểm tra lại phiên làm việc và quyền của người dùng của chính nó, vì vậy việc kiểm tra mới trên frontend không phải là ranh giới bảo mật cuối cùng.

Tại sao lại chọn thỏa hiệp này

Quyết định được đưa ra theo nguyên tắc cân bằng giữa chi phí và tính năng:

  • sử dụng client đã có sẵn kết nối với cơ sở dữ liệu hiện tại;
  • không giới thiệu thêm các environment variables bổ sung;
  • không cần yêu cầu riêng biệt đến MODX;
  • frontend chỉ nhận tín hiệu boolean mà nó cần;
  • việc kiểm tra quyền cuối cùng vẫn ở lại trong MODX Manager;
  • tính năng này chỉ dành cho quản trị viên, do đó các sự cố có thể xảy ra sẽ nhanh chóng lộ diện thông qua phản hồi.

Việc triển khai hiện tại được coi là đủ cho nhiệm vụ. Nếu sự tích hợp quản trị giữa frontend mới và MODX bắt đầu mở rộng, cơ chế kiểm tra phiên có thể được xem xét lại và chuyển thành một auth bridge trang trọng hơn.

Quan sát và Quyết định về việc Chỉnh sửa Sản phẩm Quản trị

Những gì đã tìm hiểu

Phần giao diện công khai mới của HappyBaby hoạt động tách biệt với MODX, nhưng MODX vẫn là backend làm việc và môi trường quản trị hiện có.

Đối với nút chỉnh sửa nhanh, việc xây dựng một trang quản trị thứ hai trong frontend mới là không hợp lý. Ở giai đoạn đầu, việc sử dụng MODX Manager hiện có và cung cấp cho quản trị viên khả năng chuyển hướng nhanh đến việc chỉnh sửa sản phẩm hiện tại là chính xác hơn.

Vấn đề kỹ thuật chính hóa ra không nằm ở bản thân nút bấm, mà ở việc xác định quyền ủy quyền quản trị trên frontend mới.

Trên thực tế, cookie MODX cần thiết đã tồn tại và được trình duyệt gửi trong các yêu cầu của frontend mới. Điều này có nghĩa là hiện tại không cần tạo thêm hệ thống ủy quyền hoặc đồng bộ hóa người dùng MODX với cơ sở dữ liệu haih-agent.

Hướng đi đã chọn

Thêm một truy vấn GraphQL riêng biệt trả về người dùng MODX hiện tại dựa trên phiên/cookie MODX hiện có.

MODX vẫn là nguồn sự thật duy nhất (source of truth) cho việc ủy quyền này. Người dùng MODX ở giai đoạn này:

  • không được chuyển sang cơ sở dữ liệu haih-agent;
  • không được đồng bộ hóa với mô hình User thông thường;
  • không nhận phiên thứ hai riêng biệt;
  • chỉ đơn giản được trả về dưới dạng người dùng MODX hiện tại bên ngoài nếu phiên bản MODX gốc hợp lệ.

Nếu GraphQL trả về người dùng MODX hiện tại, frontend coi khách truy cập là người dùng quản trị và hiển thị thanh công cụ quản trị (admin toolbar).

Giao diện người dùng (UI)

Tốt hơn hết là không trộn lẫn hành động quản trị với các nút mua hàng của thẻ sản phẩm. Lựa chọn ưu tiên là một thanh công cụ quản trị / lớp hành động quản trị có thể tái sử dụng riêng biệt, chỉ hiển thị khi có người dùng MODX hiện tại.

Hành động đầu tiên của thanh công cụ:

  • Chỉnh sửa sản phẩm → mở tài nguyên (resource) tương ứng trong MODX Manager.

Thanh công cụ này sau đó có thể được tái sử dụng cho các hành động quản trị khác và các loại trang khác mà không cần tạo trang quản trị mới.

Những gì cần thiết để triển khai

  1. Thêm truy vấn GraphQL cho người dùng MODX hiện tại thông qua phiên/cookie gốc.
  2. Chỉ trả về dữ liệu người dùng frontend cần thiết; không nhúng người dùng đó vào mô hình User cục bộ.
  3. Yêu cầu người dùng MODX hiện tại trên frontend.
  4. Nếu có người dùng, hiển thị thanh công cụ quản trị.
  5. Đối với thẻ sản phẩm, tạo liên kết để chỉnh sửa tài nguyên MODX tương ứng.
  6. Đảm bảo rằng ID tài nguyên MODX gốc có sẵn cho sản phẩm; nếu chưa, hãy thêm nó vào dữ liệu sản phẩm.

Tại sao tùy chọn này được chọn

Nó sử dụng hệ thống quản trị và ủy quyền hiện có, không trùng lặp MODX ACL và không tạo ra chu trình xác thực bổ sung chỉ vì một tính năng duy nhất. Đồng thời, frontend nhận được tín hiệu tối thiểu cần thiết cho UI quản trị và vẫn duy trì mối liên kết lỏng lẻo với mô hình người dùng nội bộ của MODX.