권한

Wagtail은 중재 워크플로, 사이트의 다른 영역에서 작업하는 여러 팀(또는 동일한 Wagtail 설치 내의 여러 사이트)과 같은 웹사이트 콘텐츠 생성의 요구 사항을 충족하기 위해 Django 권한 시스템을 조정하고 확장합니다. 권한은 Wagtail 관리자 인터페이스의 ‘설정’ 아래 ‘그룹’ 영역을 통해 구성할 수 있습니다.

참고

Wagtail은 여러 사용자 역할과 권한을 지원하지만, Wagtail 관리자는 여전히 신뢰할 수 있는 사용자에게만 제한되어야 합니다.

페이지 권한

권한은 페이지 트리의 어느 지점에서든 첨부될 수 있으며, 트리를 따라 전파됩니다. 예를 들어, 사이트에 다음과 같은 페이지 트리가 있는 경우:

MegaCorp/
    회사 소개
    사무실/
        영국
        프랑스
        독일

‘사무실’ 페이지에 대한 ‘편집’ 권한이 있는 그룹은 ‘영국’, ‘프랑스’, ‘독일’ 페이지를 편집할 수 있는 권한을 자동으로 받습니다. 권한은 ‘루트’ 페이지에 할당하여 전체 트리에 대해 전역적으로 설정할 수 있습니다. 모든 페이지는 루트 노드 아래에 존재해야 하고 루트는 삭제할 수 없으므로 이 권한은 현재 및 미래에 존재하는 모든 페이지를 포함합니다.

사용자가 Wagtail 관리자를 통해 페이지를 만들 때마다 해당 사용자는 해당 페이지의 소유자로 지정됩니다. ‘추가’ 권한이 있는 모든 사용자는 자신이 소유한 페이지를 편집하고 새 페이지를 추가할 수 있습니다. 이는 페이지 생성이 일반적으로 여러 초안 버전을 만드는 반복적인 프로세스라는 사실을 인식한 것입니다. 사용자에게 초안을 만들 수 있는 기능을 부여하지만 나중에 편집할 수 없도록 하는 것은 그다지 유용하지 않을 것입니다. 페이지를 편집할 수 있는 기능은 페이지를 삭제할 수 있는 기능도 의미합니다. Django의 표준 권한 모델과 달리 별도의 ‘삭제’ 권한은 없습니다.

사용 가능한 전체 권한 유형은 다음과 같습니다.

  • 추가 - 이 페이지 아래에 새 하위 페이지를 만들 수 있는 권한(페이지 모델이 이를 허용하는 경우 - 부모 페이지 / 하위 페이지 유형 규칙 참조)과 현재 사용자가 소유한 페이지를 편집하고 삭제할 수 있는 권한을 부여합니다. 게시된 페이지는 사용자가 ‘게시’ 권한도 가지고 있지 않으면 삭제할 수 없습니다.

  • 편집 - 소유권에 관계없이 이 페이지와 그 아래의 모든 페이지를 편집하고 삭제할 수 있는 권한을 부여합니다. ‘편집’ 권한만 있는 사용자는 새 페이지를 만들 수 없으며 기존 페이지만 편집할 수 있습니다. 게시된 페이지는 사용자가 ‘게시’ 권한도 가지고 있지 않으면 삭제할 수 없습니다.

  • 게시 - 이 페이지 및/또는 그 자식을 게시하고 게시 취소할 수 있는 권한을 부여합니다. 게시 권한이 없는 사용자는 웹사이트 방문자에게 표시되는 변경 사항을 직접 만들 수 없습니다. 대신 변경 사항을 중재를 위해 제출해야 합니다. 게시 권한은 편집 권한과 독립적입니다. 게시 권한만 있는 사용자는 자체 편집을 할 수 없습니다.

  • 대량 삭제 - 사용자가 하위 페이지가 있는 페이지를 단일 작업으로 삭제할 수 있도록 합니다. 이 권한이 없으면 사용자는 부모를 삭제하기 전에 하위 페이지를 개별적으로 삭제해야 합니다. 이는 실수로 인한 삭제를 방지하기 위한 안전 장치입니다. 이 권한은 ‘추가’ / ‘편집’ 권한과 함께 사용해야 합니다. 자체 삭제 권한을 제공하지 않기 때문입니다. 사용자가 이미 가지고 있는 권한에 대한 ‘바로 가기’만 제공합니다. 예를 들어, ‘추가’ 및 ‘대량 삭제’ 권한만 있는 사용자는 영향을 받는 모든 페이지가 해당 사용자가 소유하고 게시되지 않은 경우에만 대량 삭제를 할 수 있습니다.

  • 잠금 - 이 페이지(및 그 아래의 모든 페이지)를 편집을 위해 잠글 수 있는 권한을 부여하여 다른 사용자가 더 이상 편집할 수 없도록 합니다.

  • 잠금 해제 - 이 페이지(및 그 아래의 모든 페이지)를 잠금 해제할 수 있는 권한을 부여합니다. 페이지가 다른 사용자에 의해 잠겨 있더라도 마찬가지입니다. 이 권한이 없으면 페이지를 잠근 사용자(및 슈퍼유저)만 페이지를 잠금 해제할 수 있습니다.

초안은 사용자가 편집 또는 게시 권한을 가지고 있는 경우에만 볼 수 있습니다.

이미지 / 문서 권한

이미지 및 문서에 대한 권한 규칙은 페이지와 유사한 방식으로 작동합니다. 이미지 및 문서는 업로드한 사용자가 ‘소유’한 것으로 간주됩니다. ‘추가’ 권한이 있는 사용자는 자신이 소유한 항목을 편집할 수 있는 권한도 있습니다. 삭제는 특정 권한 유형을 갖는 대신 편집과 동일하게 간주됩니다.

특정 이미지 및 문서 세트에 대한 액세스는 _컬렉션_을 설정하여 제어할 수 있습니다. 기본적으로 모든 이미지 및 문서는 ‘루트’ 컬렉션에 속하지만, 적절한 권한이 있는 사용자는 관리 인터페이스의 설정 -> 컬렉션 영역에서 새 컬렉션을 만들 수 있습니다. ‘루트’에 설정된 권한은 모든 컬렉션에 적용되므로 루트 컬렉션의 이미지에 대한 ‘편집’ 권한이 있는 사용자는 모든 이미지를 편집할 수 있습니다. 다른 컬렉션에 설정된 권한은 해당 컬렉션 및 모든 하위 컬렉션에만 적용됩니다.

이미지 및 문서에 대한 ‘선택’ 권한은 페이지(및 스니펫과 같은 다른 모델)에 삽입하기 위해 이미지 및 문서 링크를 선택하는 데 사용되는 선택기 인터페이스 내에서 어떤 컬렉션이 표시되는지 결정합니다. 일반적으로 모든 사용자는 모든 컬렉션에 대한 선택 권한을 부여받아 자신이 만든 페이지에서 업로드된 이미지 또는 문서를 사용할 수 있지만, 이 권한을 제한하여 특정 그룹에만 표시되는 컬렉션을 만들 수 있습니다.

컬렉션 관리 권한

컬렉션 자체를 관리하기 위한 권한은 컬렉션 트리의 어느 지점에서든 첨부될 수 있습니다. 사용 가능한 컬렉션 관리 권한은 다음과 같습니다.

  • 추가 - 이 컬렉션 아래에 새 컬렉션을 만들 수 있는 권한을 부여합니다.

  • 편집 - 컬렉션의 이름을 편집하고, 컬렉션 트리에서 위치를 변경하고, 이 컬렉션 내 문서의 개인 정보 설정을 변경할 수 있는 권한을 부여합니다.

  • 삭제 - 이 컬렉션 아래에 추가된 컬렉션을 삭제할 수 있는 권한을 부여합니다. 참고: 컬렉션은 삭제하기 전에 하위 컬렉션이 없어야 하며 컬렉션 자체는 비어 있어야 합니다.

참고

사용자는 컬렉션을 관리할 권한을 부여하는 데 사용되는 컬렉션을 이동하거나 삭제할 수 없습니다.

사용자 지정 권한 추가

권한을 설정하는 방법에 대한 자세한 내용은 Django의 사용자 지정 권한에 대한 문서를 참조하십시오.

Wagtail에 등록된 모델에 대한 권한은 Wagtail 관리자 그룹 편집 폼에 자동으로 표시됩니다. 다른 모델의 경우 register_permissions 훅을 사용하여 권한을 추가할 수도 있습니다( register_permissions 참조).

특정 모델과 관련 없이 Wagtail 관리자에서 사용할 사용자 지정 권한을 추가하려면 wagtail.admin.models.Admin 모델의 콘텐츠 유형을 사용하여 만들 수 있습니다. 예를 들어:

from django.contrib.auth.models import Permission
from django.contrib.contenttypes.models import ContentType
from wagtail.admin.models import Admin


content_type = ContentType.objects.get_for_model(Admin)
permission = Permission.objects.create(
    content_type=content_type,
    codename="can_do_something",
    name="무언가를 할 수 있음",
)

register_permissions 훅을 사용하여 권한을 등록하면 Wagtail 관리자 그룹 편집 폼의 ‘기타 권한’ 섹션에 ‘Wagtail 관리자 액세스 가능’ 권한과 함께 표시됩니다.

FieldPanelPanelGroup 권한

권한은 편집기 인터페이스 내의 필드에 대한 액세스를 제한하는 데 사용할 수 있습니다. FieldPanelpermission 을 참조하십시오.

권한은 PanelGroup 클래스(TabbedInterface, ObjectList, FieldRowPanel, MultiFieldPanel)의 permission 키워드 인수를 통해 패널 그룹을 제한하는 데 사용할 수 있습니다. PanelGroup 사용법을 사용자 지정하는 방법은 패널를 참조하십시오.