gormus
(Osman Görmüş)
1
사용자 계정은 Discourse API를 통해서도 삭제할 수 있습니다.
예를 들어;
DELETE /admin/users/{id}.json HTTP/1.1
Content-Type: application/json
Api-Username: system
Api-Key: 1234*******
{
"delete_posts": true,
"block_email": false,
"block_urls": false,
"block_ip": false
}
* 가독성을 위해 요청이 단순화되었습니다.
확인할 수 있듯이, 페이로드 옵션을 통해 계정 삭제 시 게시글을 사전에 삭제하는 수동 관리 페이지 삭제 방식과 달리, 동일한 요청 내에서 사용자가 생성한 게시글도 함께 삭제할 수 있습니다.
그러나 API 키에 global 범위가 있고 사용자가 system임에도 불구하고 이 요청에 대해 403 접근 거부 오류가 발생합니다:
{
"errors": ["You are not permitted to view the requested resource."],
"error_type": "invalid_access"
}
Canapin
(Coin-coin le Canapin)
2
가이드에 언급된 설정 값들을 변경하면 작동할까요? 기본값이 사용자 삭제를 차단할 수 있습니다. 100% 확신은 없습니다.
selase
(Selase Krakani)
3
삭제하려는 사용자의 구체적인 사항에 대해서는 잘 모르지만, 현재 확인되는 오류는 아마도 다음 중 하나 이상의 조건이 충족되지 않아서 발생하는 것 같습니다.
가장 가능성 높은 원인은 else 블록 안에 있는 부분일 것입니다. 그리고 네, 동의합니다. 오류 메시지는 확실히 더 명확하게 개선될 수 있을 것 같습니다
.
gormus
(Osman Görmüş)
4
@selase 님, 정확히 맞으셨네요! 제 사용자는 User::MAX_STAFF_DELETE_POST_COUNT보다 많은 게시글을 가지고 있고, 또한 SiteSetting.delete_user_max_post_age보다 오래된 글도 몇 개 있는 것 같습니다. 
-
delete_user_max_posts: 이 항목은 해당 기사가 게시된 이후 **delete_user_self_max_post_count**로 이름이 변경되었을 것입니다. 현재 값은 1(기본값)로 설정되어 있습니다.
사용자가 셀프 서비스 계정 삭제를 허용받을 수 있는 최대 게시글 수입니다. 셀프 서비스 계정 삭제를 비활성화하려면 -1로 설정하세요.
-
**delete_user_max_post_age**은 60(기본값)으로 설정되어 있으며, 해당 사용자는 60일 이상 된 게시글을 가지고 있습니다.
첫 게시글이 (x)일보다 오래된 사용자의 삭제를 허용하지 않습니다.
-
**delete_all_posts_max**은 15(기본값)로 설정되어 있으며, 제 사용자는 12개의 게시글을 가지고 있습니다.
게시글 전체 삭제 버튼으로 한 번에 삭제할 수 있는 최대 게시글 수입니다. 사용자가 이보다 많은 게시글을 가지고 있으면 모든 게시글을 한 번에 삭제할 수 없으며, 사용자를 삭제할 수도 없습니다.
이러한 제한 사항들을 제거한 후, API 호출을 통해 제 사용자를 삭제할 수 있었습니다.
{"deleted":true}

아마도 API 문서에도 이 요구 사항에 대한 언급이 추가되었으면 좋겠습니다. 어떻게 생각하시나요?