Skip to content

통합 로그인 ​

모든 픽골라 서비스는 accounts.pickgola.com 하나로 로그인합니다.

동작 방식 ​

  1. 사용자가 서비스(예: dayvent.pickgola.com)에 들어오면, 서비스는 getMe()로 로그인 여부를 확인합니다.
  2. 로그인하지 않았으면 redirectToLogin()으로 accounts.pickgola.com/login?return_to=<현재 주소>로 보냅니다.
  3. 로그인에 성공하면 API가 Domain=.pickgola.com httpOnly 쿠키를 발급하고, accounts 앱이 return_to 주소로 돌려보냅니다.
  4. 이후 모든 *.pickgola.com 서비스가 같은 쿠키로 로그인 상태를 공유합니다.
쿠키내용유효기간경로
pg_at액세스 토큰 (JWT)15분/
pg_rt리프레시 토큰30일/v1/auth

두 쿠키 모두 httpOnly라서 자바스크립트에서 읽을 수 없습니다. 로그인 여부는 항상 getMe()로 확인하세요.

예시: 로그인이 필요한 화면 ​

ts
import { createClient, getMe, redirectToLogin, resolveUrls } from '@devercorp/pickgola-sdk';

const urls = resolveUrls();
const client = createClient({ baseUrl: urls.api });

const me = await getMe(client);
if (!me) {
  redirectToLogin({ accountsUrl: urls.accounts, service: 'day' });
}

서비스별 역할 ​

가입할 때 서비스와 역할을 함께 고릅니다. 한 계정이 여러 서비스·역할을 가질 수 있습니다.

서비스역할
day (데이벤트)user 일반 사용자, influencer 인플루언서, venue 장소·브랜드 운영자
studio (픽골라 스튜디오)advertiser 광고주, creator 크리에이터

다른 서비스를 처음 쓰는 사용자는 client.users.addProfile({ service, role })로 역할을 추가합니다.

ts
const hasDay = me.profiles.some((profile) => profile.service === 'day');

return_to 검증 ​

로그인 뒤 돌아갈 주소는 isAllowedReturnTo()로 검사합니다. 운영에서는 https://*.pickgola.com만 허용하고, 로컬 개발에서만 allowLocalhost: true로 localhost를 허용합니다.

ts
isAllowedReturnTo('https://dayvent.pickgola.com/me'); // true
isAllowedReturnTo('https://evil.com'); // false
isAllowedReturnTo('http://localhost:3003', { allowLocalhost: true }); // true