안녕하세요 ![]()
나라별로 로그인을 필수로 설정하는 방법을 찾고 있습니다. 제 사용 사례에 가장 가까운 것으로 보이는 Geo Blocking 플러그인을 찾았지만, 지금은 Ruby가 제 역량 범위 밖이라… 아직은요. 해당 플러그인을 수정하여 특정 국가에 대해 로그인 필수를 활성화하고 /login으로 리디렉션하도록 할 수 있을 것 같습니다.
어떤 조언이라도 감사하겠습니다! ![]()
안녕하세요 ![]()
나라별로 로그인을 필수로 설정하는 방법을 찾고 있습니다. 제 사용 사례에 가장 가까운 것으로 보이는 Geo Blocking 플러그인을 찾았지만, 지금은 Ruby가 제 역량 범위 밖이라… 아직은요. 해당 플러그인을 수정하여 특정 국가에 대해 로그인 필수를 활성화하고 /login으로 리디렉션하도록 할 수 있을 것 같습니다.
어떤 조언이라도 감사하겠습니다! ![]()
안녕하세요 ![]()
이 변경 사항을 수행해야 했던 주요 이유는 제 사이트를 영향을 미치는 새로운 국가별 법률 규정 때문입니다. 제 사이트와 주제는 18세 이상 성인에게만 공개되어 있습니다. 하지만 SEO를 해치고 싶지 않았습니다. 그래서 처음에 생각한 것은 특정 국가에서 사이트를 로그인 필수로 설정하여, 구글 봇과 다른 크롤러가 다른 국가에서는 사이트를 계속 크롤링할 수 있도록 하는 것이었습니다. 전체 사이트의 로그인을 필수로 하는 것은 사이트 전체와 그 콘텐츠가 차단되므로 좋은 옵션으로 보이지 않았습니다.
클라이언트 사이드에서 처리하는 것이 다른 좋은 옵션이라고 판단하여, 로그인 필수 기능을 부드러운 클라이언트 사이드 방식으로 구현하기로 했습니다. 현재로서는 이 방식이 충분해 보이기 때문에 이 방향으로 시작했습니다.
제가 사용하는 전체 코드를 여기에 공유하는 것이 최선의 아이디어는 아니라고 생각합니다. 다른 사용 사례에는 적합하지 않을 수 있고, 최종 버전이 아닐 가능성이 높으며, 물론 로그인 시스템이 크게 수정되었기 때문입니다.
전체 프로세스는 현재 미래에 통합될 수 있는 두 개의 독립적인 테마 컴포넌트로 작동합니다.
하지만 이 작업을 수행하기 전에 몇 가지 다른 사항을 수정해야 했습니다. 첫째, 우리가 원하는 특정 봇들은 이 전체 프로세스에서 면제되어 사이트를 계속 크롤링할 수 있습니다. Discourse에는 login required 사이트 설정이 활성화될 때 활성화되는 정적 로그인 페이지가 있습니다. 이 기능이 없으면 site.com/login으로 이동하면 사이트의 실제 홈페이지로 리디렉션되고 로그인 모달이 열립니다. 이 기능을 비활성화하고 방문자가 /login 페이지에 머물도록 했습니다. 또한 애플리케이션 JS 파일에서 수정해야 하는 다른 부분들도 있습니다. 예를 들어: 방문자에게 사이드바를 숨기기 위한 canDisplaySidebar(), 사이트 설정을 요구하지 않고 방문자에게도 활성화되도록 하기 위한 loginRequired(), 우리가 원하는 경우에만 헤더를 렌더링하기 위한 showSiteHeader(관련 쿠키가 활성화될 때 렌더링됨) 등이 있습니다.
1. 첫 번째 테마 컴포넌트. (Policy Gate)
이를 달성하기 위해 이 컴포넌트를 크게 수정했습니다: GitHub - discourse/discourse-splash-screen: A welcome splash screen for first time users · GitHub
첫 번째 화면에 18세 이상 확인(18세 이상입니까?)과 기타 정보에 대한 게이트를 추가했습니다.
방문자가 아니요를 클릭하면, 키-값 저장소 항목이 추가되어 18+ 페이지를 제거하고 방문자가 성인 전용 사이트의 이유와 중독이 청소년에게 미치는 영향에 대해 작성한 게시된 기사 페이지로 리디렉션됩니다. 또한 방문자를 해당 페이지에 머물게 하기 위해 키-값 저장소를 배치합니다. 따라서 키-값 저장소 항목은 두 가지 일을 합니다.
방문자가 예를 클릭하면, 쿠키 정보에 대한 두 번째 화면으로 이동합니다. 여기서 방문자는 우리가 사용하는 쿠키에 대해 정보를 얻을 수 있습니다. 알겠습니다, 이해했습니다 버튼을 클릭하면 브라우저에 1년 동안 쿠키 동의 쿠키가 배치됩니다. 이는 이 컴포넌트 부분을 로그인한 사용자에도 사용하기 때문에 중요합니다. 로그인한 사용자도 매년 쿠키 정책을 동의해야 합니다. 따라서 쿠키 동의 쿠키는 세 가지 일을 합니다.
2. 두 번째 테마 컴포넌트. (Gated Site)
이 테마 컴포넌트는 로그인 페이지 템플릿을 생성합니다. Guest Gate 또는 Gated Category 테마 컴포넌트와 유사하지만 URL 기반으로 전체 페이지에 렌더링됩니다. 두 가지 설정이 있습니다.
허용된 URL과 허용되지 않는 URL입니다.
*이며, 이는 모든 URL에서 게이트를 렌더링한다는 의미입니다./about, /tos, /faq, /privacy, 기타 등록 페이지 등…렌더링될 때 /login 페이지로 자동 리디렉션됩니다. 소셜 로그인 등 관련 부분을 포함하는 제 템플릿으로 전체 정적 로그인 페이지 템플릿을 오버라이드했습니다. /login 페이지에서는 이 컴포넌트를 렌더링하지 않습니다.
이것이 이 목표를 달성하기 위해 제가 만든 것의 대략적인 내용입니다.
정말 흥미롭네요, Don! 이런 세부 정보를 공유해 주셔서 감사합니다. ![]()