대시보드·CLI 로그인
auth 묶음의 오퍼레이션 5 개입니다.
| 메서드 | 경로 | 하는 일 |
|---|---|---|
| POST | /v1/auth/dev/login | dev 프로바이더로 로그인 |
| GET | /v1/auth/providers | 켜진 로그인 방식 |
| GET | /v1/auth/github/start | GitHub OAuth 시작 |
| GET | /v1/auth/github/callback | GitHub 이 돌아오는 자리 |
| GET | /v1/me | 현재 사용자와 소속 조직 |
POST /v1/auth/dev/login
로컬 전용. GitHub OAuth 와 같은 자리를 차지하되 외부 왕복이 없다
(docs/local-mvp.md §1). 프로덕션에서는 이 경로가 등록되지 않는다 —
GET /v1/auth/providers 로 무엇이 켜져 있는지 먼저 본다.
같은 subject 로 다시 부르면 같은 사용자를 돌려준다 — 로컬에서
토큰을 잃어버릴 때마다 새 계정이 생기면 쓸 수 없다.
operationId devLogin
본문 application/json · object
| 응답 | 뜻 | 본문 |
|---|---|---|
| 200 | 세션 토큰 | Session |
| 400 | — | — |
GET /v1/auth/providers
로그인 화면이 버튼을 그리는 데 쓴다. dev 는 RUNLOT_ENABLE_DEV_AUTH,
github 는 RUNLOT_GITHUB_CLIENT_ID 가 있을 때만 실린다.
operationId listAuthProviders
| 응답 | 뜻 | 본문 |
|---|---|---|
| 200 | 켜진 provider 목록 | object |
GET /v1/auth/github/start
redirect 는 로그인이 끝난 뒤 토큰을 fragment 로 실어 돌아갈 클라이언트
콜백이다 (https://dash.runlot.dev/login/callback). 서버의 허용 목록
(RUNLOT_GITHUB_REDIRECTS, 기본은 RUNLOT_PUBLIC_URL) 접두에 맞아야 한다.
302 로 GitHub authorize 페이지로 보낸다. 브라우저가 따라가는 경로라
클라이언트 라이브러리는 부르지 않는다 — window.location 으로 연다.
operationId githubStart
| 인자 | 자리 | 필수 | 형 | 설명 |
|---|---|---|---|---|
redirect | query | 예 | string | — |
| 응답 | 뜻 | 본문 |
|---|---|---|
| 302 | GitHub authorize 로 | — |
| 400 | — | — |
GET /v1/auth/github/callback
GitHub 앱의 Authorization callback URL 이 이 경로다. code 를 세션으로
바꾼 뒤 redirect 로 302 한다 — 성공이면
#token=…&expiresAt=…&userId=…&subject=…, 실패면 #error=<code>&message=….
fragment 인 이유는 토큰이 서버 로그·Referer 에 남지 않게 하려는 것이다.
operationId githubCallback
| 인자 | 자리 | 필수 | 형 | 설명 |
|---|---|---|---|---|
code | query | 아니오 | string | — |
state | query | 예 | string | — |
error | query | 아니오 | string | — |
| 응답 | 뜻 | 본문 |
|---|---|---|
| 302 | 클라이언트 콜백으로 | — |
| 400 | — | — |
GET /v1/me
현재 사용자와 소속 조직
operationId getMe
| 응답 | 뜻 | 본문 |
|---|---|---|
| 200 | 사용자 | object |
| 401 | — | — |