웹훅 user 이벤트를 생성할 것으로 기대(하고, 원)하는 동작들이 여러 가지 있지만, 실제로는 생성되지 않습니다. 버그 리포트를 제출하거나 PR을 올리기 전에, 그 이유가 무엇인지 좀 더 파악하고 싶습니다.
| 동작 | 예상되는 user 이벤트 |
|---|---|
| 관리자가 계정을 비활성화 | user_logged_out |
| 관리자가 계정을 익명화 | user_logged_out |
| 사용자가 “모두 로그아웃” 버튼을 통해 스스로 로그아웃 | user_logged_out |
| — | — |
| 그룹에 추가됨 | user_updated |
| 그룹에서 제거됨 | user_updated |
| 신뢰 수준이 증가/감소 | user_updated |
| 모더레이터 권한이 부여/회수됨 | user_updated |
| 관리자 권한이 부여/회수됨 | user_updated |
| 정지가 해제됨 | user_updated |
| 무음 설정/해제됨 | user_updated |
- 첫 번째 세 동작은 모두 사용자의 모든 세션이 무효화되는 전역 로그아웃으로 이어집니다. 하지만 다른 유사한 동작(예: 관리자에 의해 로그아웃된 경우)과 달리, 이 세 동작은 user/user_logged_out 이벤트(또는 다른 어떤 이벤트)도 생성하지 않습니다.
- 그룹에 추가/제거되면 group_user 이벤트는 생성되지만 user 이벤트는 생성되지 않습니다. group_user 이벤트 자체는 그룹과 사용자의 내부 숫자 ID만 포함하고 있어 큰 도움이 되지 않습니다. 반면, user 이벤트 발생 시 전송되는
"user"레코드에는 사용자가 속한 모든 그룹에 대한 매우 유용한 정보(그룹 이름 및 사용자가 해당 그룹과의 관계에 대한 세부 정보 포함)가 포함되어 있습니다. - 사용자의 신뢰 수준이 증가하면 user_promoted 이벤트가 발생하며, 이는 user 이벤트와 매우 유사하지만 완전히 동일하지는 않은 데이터를 포함합니다. 사용자의 신뢰 수준이 감소하는 경우에는 유사한 이벤트가 전혀 발생하지 않습니다.
- 모더레이터 또는 관리자 권한이 변경될 때 user 이벤트는 발생하지 않습니다. (부여 동작에 대해서는 group_user 이벤트를 통해 간접적으로 사용자 관련 증거를 얻을 수 있지만, 회수 동작에 대한 사용자 관련 증거는 없습니다.)
- 사용자를 정지할 때는 user/user_logged_out 이벤트가 발생하지만(
"suspended_reason"및"suspended_till"필드로 정지를 나타냄)… 사용자가 정지 해제될 때는 이벤트가 발생하지 않습니다. 사용자가 무음 설정 또는 해제될 때는 어떤 이벤트도 발생하지 않습니다.
이러한 누락 중 일부는 의도적인 것인가요?
제 일반적인 생각은 "user 이벤트의 "user" 레코드에 포함된 데이터가 변경되었다면, user 이벤트가 발생해야 한다"는 것입니다. 이는 현재 이벤트를 유발하지 않는 더 많은 상황을 포괄할 가능성이 있습니다. 그러나 위에서 표로 나열한 몇 가지 항목은 모두 사용자의 권한 상태 변경과 관련되어 있어 현재로서는 제가 가장 중요하게 생각하는 부분입니다.