이 컴포넌트는 로그인 후 사용자가 원하는 어디로든 리다이렉트할 수 있게 해 주며, 그룹( /g ) 페이지에 환영 배너를 표시할 수도 있습니다.
이 테마 컴포넌트 설치
두 기능이 독립적으로 작동하도록 구성되어 있어 원하는 곳으로 리다이렉트하거나, 단순히 그룹 페이지에 배너만 표시하는 용도로만 사용할 수 있습니다. 기본 동작은 새 사용자를 그룹 페이지로 리다이렉트하여, 커뮤니티 참여를 돕기 위해 그룹 가입을 독려하는 환영 배너를 보여주는 것입니다.
이 컴포넌트를 사용하여 특정 신뢰 수준(Trust Level) 이하의 사용자를 로그인 시 특정 페이지로 리다이렉트하거나, 사용자가 선택한 그룹 수 미만으로 가입한 사용자를 대상으로 할 수도 있습니다.
First Login Redirect
그룹 가입 이력이 없는 사용자를 사용자 정의 페이지로 리다이렉트하고 사용자 정의 가능한 환영 배너를 표시하는 Discourse 테마 컴포넌트입니다.
주요 기능
- 스마트 리다이렉트 - 그룹 가입 이력이 없는 사용자를 로그인 시 사용자 정의 페이지로 리다이렉트
- 사용자 정의 가능한 배너 - 그룹 페이지에 표시되는 다채로운 환영 배너
- 완전 사용자 설정 가능 - 리다이렉트와 배너를 독립적으로 활성화/비활성화
- 그룹 기반 로직 - 사용자가 어떤 그룹이든 가입하면 리다이렉트 중단
- 신뢰 수준 인식 - 배너 표시 여부를 신뢰 수준별로 제한 가능
- 무지개 그라데이션 - 시선을 사로잡는 6색 그라데이션 배경 (단색 전환 옵션 포함)
- 모바일 반응형 - 배너가 모바일 화면에 자동 최적화
설치 방법
-
Discourse 관리자 콘솔에서 Customize → Themes → Components로 이동하고 Install을 클릭합니다.
-
From a Git repository를 선택하고 아래 주소를 붙여넣습니다:
https://github.com/focallocal/first-login-redirect -
설치完成后, 해당 컴포넌트를 활성 테마에 추가합니다.
작동 방식
리다이렉트 로직
- 사용자가 어떤 그룹의 멤버인지 확인
- 홈페이지로 이동하는 시점 감지
- 설정된 URL(기본값:
/g)로 리다이렉트 - 사용자가 어떤 그룹이든 가입하면 리다이렉트 중단
- 배너와 독립적으로 비활성화 가능
환영 배너
- 기본적으로 그룹 인덱스 페이지(
/g)에 표시 - 신뢰 수준 설정에 따라 표시 여부 제어
- 리다이렉트와 독립적으로 비활성화 가능
- 사용자가 신뢰 수준 1(TL1)에 도달하면 자동으로 숨김
before-groups-index아웃렛을 사용하여 그룹 목록 상단에 배치
사용자 설정
테마 설정 (관리자 패널)
모든 사용자 설정은 코드를 수정하지 않고 Discourse 관리자 패널에서 수행할 수 있습니다!
- Admin → Customize → Themes로 이동
- 이 컴포넌트를 포함하는 테마를 클릭
- Settings로 이동하여 “First Login Redirect” 섹션을 찾음
사용 가능한 설정:
리다이렉트 설정:
- Enable Redirect: 리다이렉트 기능 켜기/끄기 (기본값: true)
- Min Groups Required: 리다이렉트가 중단되기 전에 사용자가 가입해야 하는 사용자 생성 그룹 수 (기본값: 1)
- 자동 그룹(예: trust_level_0, everyone)은 계산에 포함되지 않음
- Redirect URL: 그룹 미가입 사용자를 보낼 위치 (기본값:
/g)- 예:
/g(그룹),/categories,/about,/latest
- 예:
배너 설정:
- Show Banner: 배너 켜기/끄기 (기본값: true)
- Min Trust Level: 배너를 볼 수 있는 최소 신뢰 수준 (0-4, 기본값: 0)
- Max Trust Level: 배너를 볼 수 있는 최대 신뢰 수준 (0-4, 기본값: 4)
- Banner Heading: 주요 큰 텍스트
- Banner Subheading: 설명용 작은 텍스트
타이포그래피:
- Heading Font Size: 제목 글자 크기 (기본값: 2.5em)
- Subheading Font Size: 부제목 글자 크기 (기본값: 1.25em)
- Text Shadow Enabled: 가독성을 위한 텍스트 그림자 켜기/끄기
- Text Glow Enabled: 외부 글로우 효과 켜기/끄기
색상:
- Use Gradient: 그라데이션 활성화/비활성화 (비활성화 시 단색 사용)
- Gradient Color 1-6: 그라데이션의 각 색상 사용자 정의
- 기본값: 분홍 → 주황 → 노랑 → 초록 → 청록
- 단색 사용하려면 “Use Gradient”를 OFF로 설정하고 Color 1 사용
레이아웃:
- Banner Padding: 배너 내부 여백 (기본값: 3rem 2rem)
- Border Radius: 모서리 둥글기 (기본값: 12px, 사각형이면 0 사용)
사용 예시
TL0(신규 사용자)에만 표시:
Min Trust Level = 0, Max Trust Level = 0으로 설정
관리자를 제외한 모든 사람에게 표시:
Min Trust Level = 0, Max Trust Level = 3으로 설정
단색 배너:
“Use Gradient”를 OFF로 전환하고 Color 1을 원하는 색상(예: 주황색의 경우 #FF5722)으로 설정
2색 그라데이션:
“Use Gradient”를 ON으로 전환하고 색상 1-3을 하나의 색상, 색상 4-6을 다른 색상으로 설정
더 큰 텍스트:
제목은 3em, 부제목은 1.5em으로 설정
효과 없음:
평탄한 텍스트를 위해 “Text Shadow”와 “Text Glow”를 모두 비활성화
리다이렉트 비활성화 (배너만 사용)
다음 파일을 삭제하거나 주석 처리하세요:
javascripts/discourse/api-initializers/first-login-redirect.js
신뢰 수준 요구 사항 변경
두 초기화 파일(initializer)에서 다음을 변경하세요:
currentUser.trust_level === 0
아래로 변경:
currentUser.trust_level <= 1 // TL0 및 TL1
기술적 세부 사항
- API 버전: 1.8.0 (최신 Discourse API)
- 컴포넌트 유형: 템플릿 태그가 있는 Glimmer 컴포넌트
- 플러그인 아웃렛:
before-groups-index - 호환성: Discourse 2.8.0 이상
문제 해결
Q: 리다이렉트가 작동하지 않습니다
A: 브라우저의 sessionStorage를 지우고 신뢰 수준 0(TL0) 계정으로 새로 테스트해 보세요
Q: 테스트 중 배너가 표시되지 않습니다
A: /g 루트에 있는지, TL0 사용자 또는 관리자에서 설정한 값으로 로그인되어 있는지 확인하고, 브라우저 콘솔에서 오류를 확인하세요.
Q: 리다이렉트 루프가 발생합니다
A: sessionStorage 체크가 이를 방지해야 합니다. 발생 시 브라우저 캐시와 sessionStorage를 지워주세요.
라이선스
MIT — Public Happiness Movement



