2012-01-23 47 views
5

Tôi có nhiệm vụ tiếp theo - cấm tất cả người dùng (ngoại trừ quản trị viên) xóa nội dung trong Alfresco. Tôi đang sử dụng dịch vụ cấp quyền cho điều đó, nhưng nó không hoạt động:Alfresco Cấm tất cả người dùng xóa nội dung

private void setReadOnly(ScriptNode node) { 
     permissionService.deletePermissions(node.getNodeRef()); 
     permissionService.setPermission(node.getNodeRef(), 
PermissionService.ALL_AUTHORITIES, PermissionService.CONSUMER, true); 
} 

Nhưng nếu tôi thêm người dùng của mình nếu nhóm khác (ví dụ - Trình thiết kế mẫu) và thêm quyền mới để chặn nội dung từ Alfresco Share (ví dụ: nhóm- "TEMPLATE_DESIGNER" vai trò- "COORDINATOR") - sau đó người dùng của tôi phải xóa nội dung, thêm nội dung mới (nếu thư mục đó) và ... Một cách khác để giải quyết sự cố của tôi -

private void setReadOnly(ScriptNode node) { 
     permissionService.deletePermissions(node.getNodeRef()); 
     permissionService.setInheritParentPermissions(node.getNodeRef(), false); 
} 

nhưng không phù hợp vì một số lý do. Xin vui lòng, câu trả lời - làm thế nào để cấm xóa nội dung cho tất cả người dùng (ngoại trừ quản trị viên)? Cảm ơn bạn.

+0

Bạn có cần để ức chế xóa cho * tất cả * người dùng, hoặc chỉ chọn người dùng/nhóm? Câu hỏi của bạn mâu thuẫn với phần TEMPLATE_DESIGNER trong mô tả của bạn. – skuro

Trả lời

2

Bạn không thể thay đổi permissionDefinitions.xml và xóa quyền xóa đối với mọi vai trò?

Có vai trò riêng cho quản trị viên, chỉ cần để nguyên như vậy.

CẬP NHẬT: Nếu bạn chỉ muốn làm điều đó cho một thư mục, bạn có thể đặt quyền theo cách thủ công. Bỏ chọn quyền thừa kế và đặt các nhóm & người dùng thành quyền chỉnh sửa. Chỉ điều phối viên mới có quyền xóa, xem trang Docs

Trong trường hợp bạn muốn xóa quyền của chủ sở hữu vẫn có quyền xóa. chỉ cần tạo Javascript để xóa chủ sở hữu.

+0

Không, bởi vì tôi cần nó chỉ làm cho một số nội dung nhất định (chỉ có một thư mục). – VladislavLysov

+0

Tôi đã cập nhật câu trả lời, nhận xét trở nên quá dài –

+0

Tôi cần thực hiện việc này theo lập trình. Như tôi đã viết trong bài đầu tiên - nếu tôi xóa chủ sở hữu hoặc xóa quyền thừa kế - tìm kiếm lucene không hoạt động từ javascript và tôi cần phải nhảy múa arround chear (chạy mã javascript từ mã java là quản trị viên - nó hoạt động, nhưng không tốt). Tôi cần một cách khác để giải quyết vấn đề này. – VladislavLysov

2

OK Câu trả lời thứ hai:

Tạo hành vi triển khai NodeServicePolicies.BeforeDeleteNodePolicy.

Hành vi này sẽ được kích hoạt mỗi lần trước khi người dùng cố gắng xóa một mục. Vì vậy, sau đó bạn sẽ có một NodeRef, từ đó bạn có thể kiểm tra nút đó là và nếu bạn muốn làm cho nó có thể xóa được hay không.

Cách tốt nhất để làm điều này là:

  • rao một khía cạnh tùy chỉnh và đánh giá nó với các hành vi
  • Hoặc định nghĩa một kiểu nút tùy chỉnh, trong đó có một boolean siêu dữ liệu tùy chỉnh hoặc một cái gì đó mà được thiết lập bởi javascript hoặc quy tắc kích hoạt javascript. Và chắc rằng lĩnh vực ẩn, vì vậy không sử dụng có thể kiểm tra/bỏ chọn nó

Btw kiểm tra PDF này bởi Jeff Pots vào việc tạo ra những hành vi :)

+0

Có, tôi đang sử dụng hành vi, nhưng cách này cũng không tốt cho tôi. Tôi muốn sử dụng quyền cho việc này. Bây giờ tôi đang thêm vào khía cạnh mô hình tùy chỉnh của tôi "systemLocked" và thêm vào permissionDefinitions.xml – VladislavLysov

+0

?? tại sao bạn muốn sử dụng quyền cho điều này? Tôi có nghĩa là bạn hoàn toàn không rõ ràng với những điều bạn yêu cầu. Nhìn vào câu hỏi của bạn nó mơ hồ như ... Hãy viết ra đúng những gì bạn muốn, có nhiều cách hơn để Rome hơn một, đúng. –

+0

Tôi đã giải quyết vấn đề này. Tôi đang sử dụng bootstrap cho việc này. Cảm ơn bạn đã trả lời. – VladislavLysov

Các vấn đề liên quan