it-swarm-vi.com

Có cách nào để hiển thị và lưu các quy tắc ACL cấp độ thành phần bằng cách sử dụng com_config không?

Như mọi khi tôi đang mày mò xung quanh trong IDE của mình. Thách thức của ngày hôm nay là thiết lập các quy tắc ACL cấp độ xem cho từng người quản lý khác nhau (danh sách/dạng xem biểu mẫu) trong thành phần quản lý thử nghiệm của tôi.

Đầu tiên tôi đã thêm các phần bắt buộc vào tệp access.xml

<?xml version="1.0" encoding="UTF-8"?>
<access component="com_babelu_exams">
<section name="component">
    <action name="core.admin" title="JACTION_ADMIN" description="JACTION_ADMIN_COMPONENT_DESC" />
    <action name="core.manage" title="JACTION_MANAGE" description="JACTION_MANAGE_COMPONENT_DESC" />
    <action name="core.create" title="JACTION_CREATE" description="JACTION_CREATE_COMPONENT_DESC" />
    <action name="core.delete" title="JACTION_DELETE" description="JACTION_DELETE_COMPONENT_DESC" />
    <action name="core.edit" title="JACTION_EDIT" description="JACTION_EDIT_COMPONENT_DESC" />
    <action name="core.edit.state" title="JACTION_EDITSTATE" description="JACTION_EDITSTATE_COMPONENT_DESC" />
    <action name="core.edit.own" title="JACTION_EDITOWN" description="JACTION_EDITOWN_COMPONENT_DESC" />
</section>
<section name="category">
    <action name="core.manage" title="JACTION_MANAGE" description="JACTION_MANAGE_CATEGORY_DESC" />
    <action name="core.create" title="JACTION_CREATE" description="JACTION_CREATE_CATEGORY_DESC" />
    <action name="core.delete" title="JACTION_DELETE" description="JACTION_DELETE_CATEGORY_DESC" />
    <action name="core.edit" title="JACTION_EDIT" description="JACTION_EDIT_CATEGORY_DESC" />
    <action name="core.edit.state" title="JACTION_EDITSTATE" description="JACTION_EDITSTATE_CATEGORY_DESC" />
    <action name="core.edit.own" title="JACTION_EDITOWN" description="JACTION_EDITOWN_CATEGORY_DESC" />
</section>
<section name="level">
    <action name="core.manage" title="JACTION_MANAGE" description="JACTION_MANAGE_LEVEL_DESC" />
    <action name="core.create" title="JACTION_CREATE" description="JACTION_CREATE_LEVEL_DESC" />
    <action name="core.delete" title="JACTION_DELETE" description="JACTION_DELETE_LEVEL_DESC" />
    <action name="core.edit" title="JACTION_EDIT" description="JACTION_EDIT_LEVEL_DESC" />
    <action name="core.edit.state" title="JACTION_EDITSTATE" description="JACTION_EDITSTATE_LEVEL_DESC" />
    <action name="core.edit.own" title="JACTION_EDITOWN" description="JACTION_EDITOWN_LEVEL_DESC" />
</section>
<section name="exam">
    <action name="core.manage" title="JACTION_MANAGE" description="JACTION_MANAGE_EXAM_DESC" />
    <action name="core.create" title="JACTION_CREATE" description="JACTION_CREATE_EXAM_DESC" />
    <action name="core.delete" title="JACTION_DELETE" description="JACTION_DELETE_EXAM_DESC" />
    <action name="core.edit" title="JACTION_EDIT" description="JACTION_EDIT_EXAM_DESC" />
    <action name="core.edit.state" title="JACTION_EDITSTATE" description="JACTION_EDITSTATE_EXAM_DESC" />
    <action name="core.edit.own" title="JACTION_EDITOWN" description="JACTION_EDITOWN_EXAM_DESC" />
</section>
<section name="section">
    <action name="core.manage" title="JACTION_MANAGE" description="JACTION_MANAGE_SECTION_DESC" />
    <action name="core.create" title="JACTION_CREATE" description="JACTION_CREATE_SECTION_DESC" />
    <action name="core.delete" title="JACTION_DELETE" description="JACTION_DELETE_SECTION_DESC" />
    <action name="core.edit" title="JACTION_EDIT" description="JACTION_EDIT_SECTION_DESC" />
    <action name="core.edit.state" title="JACTION_EDITSTATE" description="JACTION_EDITSTATE_SECTION_DESC" />
    <action name="core.edit.own" title="JACTION_EDITOWN" description="JACTION_EDITOWN_SECTION_DESC" />
</section>
<section name="problem">
    <action name="core.manage" title="JACTION_MANAGE" description="JACTION_MANAGE_PROBLEM_DESC" />
    <action name="core.create" title="JACTION_CREATE" description="JACTION_CREATE_PROBLEM_DESC" />
    <action name="core.delete" title="JACTION_DELETE" description="JACTION_DELETE_PROBLEM_DESC" />
    <action name="core.edit" title="JACTION_EDIT" description="JACTION_EDIT_PROBLEM_DESC" />
    <action name="core.edit.state" title="JACTION_EDITSTATE" description="JACTION_EDITSTATE_PROBLEM_DESC" />
    <action name="core.edit.own" title="JACTION_EDITOWN" description="JACTION_EDITOWN_PROBLEM_DESC" />
</section>
<section name="result">
    <action name="core.manage" title="JACTION_MANAGE" description="JACTION_MANAGE_RESULT_DESC" />
    <action name="core.delete" title="JACTION_DELETE" description="JACTION_DELETE_RESULT_DESC" />
    <action name="core.edit" title="JACTION_EDIT" description="JACTION_EDIT_RESULT_DESC" />
    <action name="core.edit.own" title="JACTION_EDITOWN" description="JACTION_EDITOWN_RESULT_DESC" />
</section>

Sau đó, tôi đã cố gắng thêm chúng vào tệp config.xml của mình trong trường quyền

<!-- SOF PERMISSIONS -->
<fieldset name="permissions" description="JCONFIG_PERMISSIONS_DESC"
    label="JCONFIG_PERMISSIONS_LABEL">
    <field name="rules" type="rules" component="com_babelu_exams"
        filter="rules" validate="rules" label="JCONFIG_PERMISSIONS_LABEL"
        section="component" />

    <field name="rules" type="rules" component="com_babelu_exams"
           filter="rules" validate="rules" label="JCONFIG_PERMISSIONS_LABEL"
           section="category" />
</fieldset>
<!-- EOF PERMISSIONS -->

Tuy nhiên, điều này không hoạt động khi các quy tắc thể loại ghi đè lên các quy tắc thành phần. Vì vậy, tôi đã cố gắng làm cho quy tắc một mảng

<!-- SOF PERMISSIONS -->
<fieldset name="permissions" description="JCONFIG_PERMISSIONS_DESC"
    label="JCONFIG_PERMISSIONS_LABEL">
    <field name="rules[]" type="rules" component="com_babelu_exams"
        filter="rules" validate="rules" label="JCONFIG_PERMISSIONS_LABEL"
        section="component" />

    <field name="rules[]" type="rules" component="com_babelu_exams"
           filter="rules" validate="rules" label="JCONFIG_PERMISSIONS_LABEL"
           section="category" />
</fieldset>
<!-- EOF PERMISSIONS -->

nhưng điều này có tác dụng tương tự. Vì vậy, tôi đã thử nối phần vào thuộc tính thành phần, nhưng điều này chỉ khiến toàn bộ quyền kiểm soát bị trống.

Vì vậy, có ai biết nếu những gì tôi đang cố gắng làm là có thể trong chế độ xem thành phần com_config không?

Lý do tôi muốn có điều này ở cấp độ thành phần là vì tôi đang cố gắng đạt được toàn bộ tầng ACL. Trường hợp trong siêu quản trị viên có thể đặt ACL thành thành phần-> chế độ xem-> bản ghi. Điều này sẽ cho phép tôi ẩn các phần của thành phần không liên quan đến quyền truy cập của người dùng hiện tại.

Vì vậy, nếu bạn biết làm thế nào điều này có thể được thực hiện bằng cách sử dụng com_config, vui lòng cho tôi biết. = ^ D Tôi sẽ tìm kiếm một giải pháp trong thời gian đó, nếu tôi tìm thấy nó tôi sẽ đăng.

Chúc mừng Joomla!

1
Mathew Lenning

Không chắc chắn nếu đó là một lỗi đánh máy nhưng access.xml bị thiếu đóng </access> nhãn.

Tôi chưa bao giờ thử nhưng tôi không nghĩ bạn có thể có nhiều trường quyền trong cùng một cấu hình.

  • Phần component được sử dụng trên các tùy chọn cấp thành phần.
  • category một được sử dụng bởi com_clists cho các quyền danh mục duy nhất.
  • Những cái khác có thể được sử dụng cho các mục đơn. Giống như trong trường hợp của com_content bạn có phần article được sử dụng để đặt quyền cho từng bài viết.

Nếu bạn cần ACL riêng cho từng chế độ xem, bạn cần tạo quy tắc ACL riêng và không sử dụng quy tắc cốt lõi. Như com_babelu_exams.level.create.

0
Bakual