53 lines
4.5 KiB
Markdown
53 lines
4.5 KiB
Markdown
# Custom Launcher
|
|
|
|
사이트 본문에 작은 iOS 스타일 배너로 삽입되는 런처입니다.
|
|
|
|
```html
|
|
<meta charset="UTF-8">
|
|
<link href="/custom/launcher/css/style.css?v=20260710_launcher1" rel="stylesheet" />
|
|
<div id="findMyShortcut" class="find-container"></div>
|
|
<script src="/custom/launcher/js/main.js?v=20260710_launcher1"></script>
|
|
```
|
|
|
|
## 기능
|
|
|
|
- 나의 찾기 이동
|
|
- PC 켜기
|
|
- 콕 찌르기
|
|
- 차량 모니터 이동
|
|
- 공통 암호 로그인
|
|
- 공통 암호 변경
|
|
- 4자리 숫자 PIN 입력과 커스텀 숫자 키패드
|
|
- 사이트 관리자 로그인 상태에서만 관리 버튼 표시
|
|
- 사이트 관리자 로그인 상태에서는 미니앱 실행 시 공통 암호 생략
|
|
- 사이트 관리자 세션으로 미니앱 진입 시 공통 접근 쿠키 자동 발급
|
|
|
|
## 구조
|
|
|
|
- `api.php`: 로그인, 로그아웃, 암호 변경, 관리자 세션 확인, 콕 찌르기 카운트/웹훅 처리
|
|
- `js/main.js`: 4개 아이콘 렌더링, 인증 흐름, 암호 변경 UI
|
|
- `css/style.css`: 기존 삽입 코드 호환용 공용 CSS import
|
|
- `img/`: 런처 아이콘 이미지
|
|
|
|
## 공통 모듈 연동
|
|
|
|
인증, 암호 hash 저장, Home Assistant 호출은 `/custom/common` 모듈을 사용합니다. 런처는 더 이상 Home Assistant 토큰이나 웹훅을 브라우저로 직접 노출하지 않습니다.
|
|
|
|
런처 CSS 원본은 `/custom/common/css/launcher.css`를 사용합니다. 기존 운영 HTML이 `/custom/launcher/css/style.css`를 참조해도 호환 파일이 공용 CSS를 import합니다.
|
|
|
|
런처는 채건닷컴 본문 안에 들어가는 배너라서 파일 변경 감시로 전체 Rhymix 페이지를 다시 열지 않습니다. 배포 직후 브라우저 캐시를 새로 받아야 할 때는 삽입 HTML의 `?v=` 값만 바꿉니다. 나의 찾기나 속도 측정처럼 화면 자체가 도구인 서비스만 공통 파일 변경 감시를 씁니다.
|
|
|
|
## 운영 메모
|
|
|
|
일반 사용자 화면은 나의 찾기, 콕 찌르기, 니모, GIT 4개 버튼만 표시합니다. PC 켜기 항목은 운영 코드에 주석으로 보존해 두고 화면에서는 제외합니다. GIT/프로젝트 바로가기는 공개 저장소 목록으로 이동하므로 공통 암호 인증을 거치지 않습니다.
|
|
|
|
Rhymix 사이트 관리자 로그인 상태에서는 나의 찾기, 콕 찌르기, 니모, 프로젝트, Block, Notice, Weblog, Speed Stats를 4개씩 2줄로 표시합니다. 프로젝트 바로가기는 공개 저장소 목록인 `https://git.chaegeon.com/explore/repos`로 이동합니다. 관리자 상태에서 미니앱을 실행하면 공통 암호를 묻지 않습니다. 이때 `/custom/launcher/api.php?adminSession=1` 또는 `session=1` 응답에서 관리자 공통 접근 쿠키를 함께 발급해, 이동한 미니앱 내부 세션 검사에서도 바로 통과합니다.
|
|
|
|
공통 암호로 로그인한 일반 인증 쿠키는 30분만 유지합니다. 사이트 관리자 세션이 확인되어 발급된 관리자 인증 쿠키는 반영구 운영값으로 10년 유지합니다. `/custom/launcher/api.php?session=1`은 현재 브라우저가 가진 공통 쿠키 또는 사이트 관리자 세션을 확인하고, `/custom/launcher/api.php?adminSession=1`은 관리 버튼 노출처럼 실제 Rhymix 관리자 세션이 필요한 화면에서만 사용합니다.
|
|
|
|
암호는 숫자 4자리만 허용합니다. 로그인과 암호 변경 입력창은 `inputmode=numeric`, `[0-9]*` 패턴, 커스텀 숫자 키패드를 사용하며 Android/iPhone에서 문자 키보드가 뜨지 않도록 `readonly` 입력창에 화면 키패드로 값을 넣습니다. 서버 API도 4자리 숫자가 아닌 암호를 거부합니다.
|
|
|
|
로그인은 확인 버튼 없이 4자리가 입력되면 즉시 검증하고 성공 시 원래 선택한 미니앱으로 이동합니다. 암호 변경 화면도 변경/확인 버튼 없이 현재 암호, 새 암호, 새 암호 확인 순서로 4자리 입력이 끝날 때마다 다음 칸으로 이동하며, 마지막 칸까지 입력되면 바로 변경을 검증합니다. 이미 값이 들어간 입력창을 누르면 로그인 화면은 해당 칸을 지우고, 암호 변경 화면은 클릭한 칸부터 뒤 칸까지 지운 뒤 다시 입력받습니다. 현재 입력 중인 칸은 상태 문구와 파란 테두리로 표시합니다.
|
|
|
|
암호 변경은 배너 우하단의 작은 `관리` 링크에서 처리하며, 이 링크는 사이트 관리자 로그인 상태에서만 표시합니다. 암호 변경 시에는 현재 공통 암호 입력을 계속 요구합니다.
|