Skip to content
Loafacto 문서/참고 문서/web-ui 문서/17. supabase-pending-approval-status.sql

17. supabase-pending-approval-status.sql

원본 파일: 'C:\Repository\loafacto-hub\docs\web-ui\17. supabase-pending-approval-status.sql'

sql
-- =============================================================================
-- 회원가입 후 관리자 승인: profiles.status에 pending_approval 추가
-- 15. supabase-withdraw-account.sql, 16. supabase-admin-set-profile-status.sql 적용 후 실행하세요.
-- get_my_account_status()는 이미 profiles.status를 그대로 반환하므로 pending_approval 자동 반영됨.
-- =============================================================================

-- 1) profiles.status CHECK에 pending_approval 추가
-- (제약 이름이 다르면: SELECT conname FROM pg_constraint WHERE conrelid = 'public.profiles'::regclass AND contype = 'c'; 로 확인 후 DROP)
ALTER TABLE public.profiles DROP CONSTRAINT IF EXISTS profiles_status_check;
ALTER TABLE public.profiles ADD CONSTRAINT profiles_status_check
  CHECK (status IN ('active', 'pending_approval', 'warning', 'banned', 'withdrawn'));

COMMENT ON COLUMN public.profiles.status IS '계정 상태: active(활성) | pending_approval(승인대기) | warning(경고) | banned(정지) | withdrawn(탈퇴)';

-- 2) set_user_profile_status는 이미 active를 허용하므로, 관리자가 승인대기 사용자를 "활성"으로 변경 가능.
--    pending_approval 값을 인자로 받을 필요는 없음(관리자는 active로만 승인).

-- =============================================================================
-- (선택) 신규 가입 시 자동으로 승인대기로 넣으려면
-- =============================================================================
-- 관리자 설정 "회원가입 후 관리자 승인 사용"을 DB에 저장하고, 프로필 생성 시 해당 설정을 읽어
-- status를 pending_approval로 넣는 트리거가 필요합니다.
--
-- 예: public.app_settings (key text PRIMARY KEY, value text)
--     key = 'require_admin_approval', value = '1' 이면 신규 프로필을 pending_approval로 생성.
-- 프로필 생성 트리거에서 (SELECT value FROM public.app_settings WHERE key = 'require_admin_approval') = '1'
-- 이면 INSERT되는 status를 'pending_approval'로 설정하면 됩니다.
-- 관리자 설정 저장 시 이 테이블을 업데이트하는 RPC를 호출하도록 프론트엔드 연동하면 됩니다.