PostGuardian의 can_delete_post에서 null 참조 오류

PostGuardian.can_delete_post에는 user 참조가 포함되어 있으며, 로그인된 사용자가 없을 때 호출되면 충돌이 발생합니다. 플러그인에서 호출하고 있으므로 현재 코어에서는 이러한 문제가 발생하지 않을 수 있습니다.

해당 문제는 여기에서 발생하고 있습니다:

return true if user.in_any_groups?(SiteSetting.delete_all_posts_and_topics_allowed_groups_map)

안전한 내비게이션 연산자 &.를 사용하거나, return true if user && user.in_any_groups? ...로 변경하는 것을 제안합니다.

3개의 좋아요

이 작업에는 항상 권한이 있어야 하므로 @system 사용자를 사용하는 것이 어떨까요? (또한 core도 그렇게 하지 않나요?)

잘 이해하지 못하신 것 같은데요.

사용자가 없는 것 자체가 문제는 아닙니다(그리고 "사용자 없음"은 "권한 없음"과 같아야 합니다). 문제는 코드가 사용자가 존재한다고 가정하고 이를 확인하지 않은 채, “아무것도 없는” 상태가 어떤 그룹에 속하는지 확인하려고 한다는 점입니다.

1개의 좋아요