이메일 커스터마이징 오류로 변경 후 확인 이메일 링크가 깨짐(“Oops!”)

이 문제는 이메일이 변경된 경우에만 발생하는 것 같습니다. 예를 들어,

https://forum.{mySite}.com/u/{user}/preferences/email

  1. 사용자가 확인 이메일을 정상적으로 수신합니다.
  2. 사용자가 링크를 클릭합니다.
  3. “Oops! Page not found or private” 오류가 발생합니다.

image

확인 이메일 링크 템플릿:

%{base_url}/u/authorize-email/%{email_token}

실제 확인 이메일 링크:

https://forum.{mySite}.com/u/authorize-email/{someHash}

이 문제를 재현해 볼 수 있을까요 @tshenry?

이번 주에도 우리 쪽에서 위에서 설명한 것과 똑같이 발생했어요.

링크를 변경하기 전에 해당 이메일을 커스텀하셨을 가능성이 높습니다.

/admin/customize/email_templates/user_notifications.confirm_new_email로 이동하여, 거기에 있는 링크가

%{base_url}/u/confirm-new-email/%{email_token}

으로 되어 있는지 확인해 주세요.

%{base_url}/u/authorize-email/%{email_token}

으로 되어 있다면 안 됩니다.


결국 마이그레이션을 추가하는 것이 좋은 아이디어일 수 있습니다. 이 문제는 이미 여러 번 발생했었거든요.
cc @sam
https://review.discourse.org/t/feature-improve-email-change-workflow-pr-8377/7150/4

깨진 링크 문제는 그렇게 처리했습니다… 대략적으로요. 이제 사용자가 로그인 화면으로 리다이렉트되도록 바뀌었습니다.

이 문제를 알게 되어 다행이라 생각하지만, 사람들이 이메일을 변경할 수 있도록 보장하기 위해 관리자 패널에서 이메일을 수정할 수 있는 방법이 왜 없을까요? 제가 읽은 바로는, impersonate(계정 impersonation) >> 프로필 >> 이메일 변경을 하는 것이 유일한 방법이라고 하던데, 정말로 이것이 공식적인 방법인가요?

계정은 삭제하고 impersonate는 할 수 있는데, 이메일은 변경할 수 없다니… 좀 직관에 반하는 것 같네요~

%{base_url}/u/confirm-new-email/%{email_token}

제 링크는 이렇게 생겼는데, 여전히 사용자를 오류 메시지로 보내고 있습니다. 순서를 바꿔야 한다는 말씀이신가요?

제게는 %{base_url}/u/confirm-new-email/%{email_token} 링크가 계정을 활성화하지 않고 로그인 페이지로 리다이렉트됩니다. 다른 하나는 “오류” 페이지입니다.

이상하긴 한데:
이랬을 때:
%{base_url}/u/confirm-new-email/%{email_token} 오류 메시지가 떴습니다.

이걸로 바꿨는데:
%{email_token}/u/authorize-email/%{base_url} . 그래도 오류 메시지가 떴습니다.

다시 원래대로:
%{base_url}/u/confirm-new-email/%{email_token} 수동으로(초기화하지 않고) 바꿨더니
이제 작동합니다! :woman_shrugging:

수정: 아, 그리고 이제 다시 안 되네요.

이 부분은 좀 더 시간을 두고 결정하고 싶습니다.

하위 호환(비추천) 미러 링크는 어떨까요? 아니면 몇 가지 버전에 대한 대체 스크립트는요? 다음 버전에서 replace()를 사용해 구버전의 %{}를 새로운 %{}로 교체할 수 있을까요? 이미 마이그레이션이 완료된 경우 아무 일도 일어나지 않을 것입니다.

하지만 어느 쪽이든 – 제 문제는 해결되지 않았습니다… 아니면, 그렇게 보입니다: 활성화 없이 로그인 화면으로만 보내고 있거든요.

https://forum.{mySite}.com/u/confirm-new-email/{someHash}

^ 이것이 올바른 URL인가요? 해당 사용자는 인코그니토 모드를 사용했다고 주장하며 로그인 화면의 스크린샷을 보여주었습니다. 확인해 보니 관리자 화면에서 여전히 구 이메일 주소가 표시되고 있습니다.

잘 이해가 안 됩니다. 관련 로컬라이제이션 커스터마이징을 전부 삭제하고 처음부터 다시 시작하면 안 될까요?

저나 다른 분들처럼, 이런 일이 일어났다는 사실조차 모르고 있었거든요. “클릭하여 업데이트” 버튼이 이메일 템플릿을 변경하라고 깜빡이는 불을 켜고 있었던 것도 아니잖아요.

말씀하신 대로 그대로 해봤는데:

  1. 해당 문제를 구체적으로 발견하고, 검색해서 이 글을 찾아내고, 수동으로 해결하지 않는 한 이런 일이 일어나고 있다는 사실조차 알 수 없습니다.
  2. 이 과정은 전혀 직관적이지 않습니다(사용자가 이런 일이 일어나고 있다는 것을 마법처럼 알아야 한다는 전제 하에 말이죠). 이는 Discourse의 성격과 맞지 않습니다.
  3. 정확도 상실과 번거로움 - 템플릿을 잘못 수정하면 테스트를 위해 모의 이메일이 필요합니다. 이 글을 찾지 않는 한 무엇을 어떻게 변경해야 할지 알 수도 없습니다.

솔직히 말해서, 저는 여기서 계정이 있었음에도 여전히 이 사실을 모르고 있었고 해결책을 찾기 위해 헤매야 했습니다. 제 생각에는 다른 어떤 업데이트와 비교했을 때 Discourse 관리자에게 이런 경험을 제공하는 것은 용인할 수 없는 일입니다(경험한 첫 번째 “의도적으로 깨뜨리는” 업데이트입니다). 제가 이미 말씀하신 대로 해결했기 때문에 저를 위한 요청은 아닙니다 – 하지만 다른 분들을 위해서입니다.

제 포럼에서 이것이 얼마나 오랫동안 진행되어 왔는지 알 수 없습니다. 업데이트 x에 템플릿이 깨지는 변경 사항이 있었다는 사실조차 몰라서 얼마나 많은 신규 사용자를 잃어버렸을지 궁금합니다. 저만이 이런 경험을 하는 것은 절대 아닐 겁니다.

이 건에 대해 후속 문의드리려고 합니다.

저는 커스터마이징을 한 적이 없습니다. 조언해 주신 대로 %{base_url}/u/confirm-new-email/%{email_token}가 포함되어 있어야 하는데, 실제 이메일에는 링크에 /authorize-email/가 들어 있습니다. 그래서 웹 관리 패널과 Discourse 엔진 룸 깊숙한 곳에 있는 어떤 설정 파일 사이에서 무언가 잘못되고 있는 것 같습니다. 2.5.0.beta6 버전을 실행 중입니다.

수정: 더 이상한 점은: 관리자가 이메일 주소를 변경하면 기존 주소에는 %{base_url}/u/confirm-new-email/%{email_token}로 확인 이메일이 도착하지만, 새 주소에는 %{base_url}/u/authorize-email/%{email_token}로 도착합니다.

@Willemb2 저희 인스턴스에서 해당 문제가 특정 언어로 인터페이스를 설정한 사용자에게만 발생하는 것을 확인했습니다. 그래서 제가 사용하는 언어로 아무리 설정을 변경해도 프랑스어를 사용하는 사용자에게는 아무런 차이가 없었습니다. 결국 제 인터페이스를 프랑스어로 설정하자 갑자기 프랑스어 버전을 커스터마이즈할 수 있었고, 그 이후로 문제는 발생하지 않았습니다.

@gh_irina 이 부분을 확인해 보았는데, 기본 언어(우리의 경우: 네덜란드어)를 사용하는 사용자들에게도 동일한 문제가 발생합니다.

아, 정말 짜증나네요. 죄송합니다.

제가 회원으로 활동 중인 포럼에서 이 문제를 겪었습니다. 링크를 수동으로 조정해서 임시로 해결했습니다. 이런 깨지는 변경 사항에 대해, 기존 링크를 감지해서 관리자에게 알림을 주는 처리를 포함하는 건 어떨까요?