사용자 중 한 명이 두 개의 Discourse 계정을 보유하고 있습니다. 하나는 더 이상 사용하지 않는 계정이고, 다른 하나는 로그인할 수 없는 새 계정입니다. 원인은 CAS SSO 제공자에서 새 계정에 설정된 이메일 주소가 포럼의 기존 계정 이메일 주소와 동일하기 때문인 것으로 보입니다.
저는 자신의 테스트 계정으로 실험을 해보며, 계정을 비활성화하고 SSO 기록을 삭제해 보았습니다. 하지만 기존 기록이 더 이상 SSO 페이로드와 일치하지 않아 해당 계정에 대한 새로운 로그인이 방지되는 것 같고, 이제 이메일 주소가 충돌하는 것으로 인식되고 있습니다.
또한, 사용자가 새 계정으로 로그인할 수 있도록 사용하지 않는 Discourse 계정의 이메일 주소를 변경하는 시도도 해보았습니다. 하지만 이를 위해서는 이메일 확인이 필요합니다. 임의의 주소를 가로챌 수 있도록 SMTP 서버에 이메일 별명을 설정했지만, 링크를 따를 때 SSO를 통해 해당 사용자로 로그인해야 합니다. 문제는 이를 위해 사용자 계정을 다시 활성화하고, 새 비밀번호를 설정하고, 계정을 멤버 데이터베이스에 연결하며, SSO 제공자에 가짜 멤버십을 생성해야 한다는 것입니다. 이는 분명히 가능한 일이지만, 이 사용자의 계정을 수정하기 위해 엉켜버린 거미줄 속에 빠져 있는 것 같습니다.
데이터베이스에 직접 들어가서 SQL 쿼리를 통해 변경하는 것은 과거에 해본 적이 있지만, 위험한 작업이므로 가능하면 이 방법을 피하고 싶습니다.
Discourse를 깨뜨리지 않는다면, 비활성화된 계정의 이메일 주소를 단순히 '확인되지 않음’으로 설정하는 것 대신 삭제할 수 있는 기능이 있으면 좋겠습니다.
현재 Discourse의 SSO 구현을 사용 중이며, SSO 페이로드에서 require_activation SSO 매개변수를 true로 설정하고 있는 것으로 보입니다. 그렇다면 해당 문제를 해결하는 방법에 대한 자세한 내용은 이 토픽을 참고해 주세요: Debug and fixing common DiscourseConnect issues. SQL 쿼리를 통해 데이터베이스를 직접 업데이트하는 것보다 해당 토픽에 제시된 Rails 콘솔 명령어를 실행하는 것이 더 안전합니다.
위 게시물에서 언급했듯이 두 계정을 병합하는 것이 좋은 접근 방식일 수 있지만, 그 작업을 완료한 후 SSO 레코드에 대해 일부 조정이 필요할 수 있습니다.