공유된 Discourse/정적 사이트 로그인

여러분 안녕하세요,

제 상황을 설명드리겠습니다. 저는 www.example.com에 웹사이트를 유지하면서 talk.example.com에서 Discourse를 실행하려고 합니다. 사용자가 Discourse 사이트에 로그인하면 www 사이트에서도 로그인된 상태로 표시되기를 원합니다. 반대로 Discourse에서 로그아웃하면 www 사이트에서도 로그아웃되어야 합니다.

여기서 많은 주제들을 읽었지만, 공통된 답은 SSO를 사용하라는 것이었습니다. 하지만 제 상황에서는 SSO가 작동하지 않을 것 같고, 그 이유는 다음과 같습니다.

www.example.com의 사이트는 Hugo로 빌드된 정적(Static) 웹사이트입니다. Hugo를 모르시는 분들을 위해 말씀드리면, Jekyll과 비슷하다고 생각하시면 됩니다. 따라서 데이터베이스나 백엔드가 전혀 없습니다. 이 사이트는 "앱"이 아닙니다. 기본적으로 이 정적 사이트를 위해 Discourse를 유사 백엔드(Pseudo backend)로 활용하고 싶습니다. 사용자가 Discourse에서 읽지 않은 알림이 있다면, 이를 정적 사이트를 통해 표시하고 싶습니다.

제가 생각할 수 있는 유일한 방법은 서브도메인을 포함하지 않는 Discourse 쿠키를 사용하는 것입니다. 하지만 지금까지의 조사 결과에 따르면 Discourse는 이를 지원하지 않는다고 합니다.

혹시 아이디어가 있으신 분 계신가요?

흥미로운 과제네요.

만약 해당 사이트가 백엔드를 갖춘 동적 사이트였다면, 그리고 Discourse와 사이트 간에 SSO가 설정되어 있었다면 명확한 해결책이 있었을 것입니다. 백엔드가 사용자를 알 수 있으므로, Admin API 키를 사용해 현재 사용자의 Discourse 알림을 조회하고 모든 요청 시 페이지와 함께 전달할 수 있기 때문입니다.

하지만 해당 사이트가 정적 페이지라면, 로그인된 상태가 사실상 존재하지 않는 것이 맞나요?

Discourse 토픽 목록을 다른 사이트에 임베딩하고 JavaScript를 통해 Discourse 댓글을 임베딩하는 옵션이 있으며, 이 두 가지 모두 정적 사이트에서 작동합니다.

알림을 위한 새로운 기능을 추가하는 것은 훌륭한 아이디어라고 생각합니다!

맞습니다. HTML, CSS, 그리고 일반적인 프론트엔드 JavaScript로만 구성되어 있습니다.

이상적인 시나리오에서는 브라우저에서 실행되는 JavaScript를 사용하여 정적 사이트에서 Discourse의 데이터를 가져올 수 있기를 바랍니다.

알림(Notifications)이 한 가지 예시이며, 이를 위한 임베드(Embed) 기능이 있다면 좋겠습니다.

또 다른 예시로, Discourse에서 사용자가 채울 수 있는 사용자 필드(User Field)를 설정하고 싶고, 그런 다음 정적 사이트에서 해당 사용자 필드에 접근하여 콘텐츠 렌더링 방식을 변경(JavaScript를 통해)할 수 있기를 원합니다. 예를 들어, 사용자에게 맞게 콘텐츠를 재배열하여 커스터마이징하는 것 등이 가능합니다.


지원되지 않는 해킹 방식일 것이라는 점은 알고 있지만, 업데이트에도 유지될 수 있도록 Discourse가 세션 쿠키를 설정하는 방식을 서브도메인을 포함하지 않도록 변경하는 방법이 있을까요?