백엔드/Supabase

[Supabase] 정책 생성 SQL 템플릿 코드

순코딩 2025. 4. 28. 22:57

테이블 정책

-- 1. CREATE
CREATE POLICY "CREATE : 로그인한 사용자"
  ON tableName
  FOR INSERT
  WITH CHECK (auth.uid() IS NOT NULL);

-- 2. READ
CREATE POLICY "READ : 모든 사용자"
  ON tableName
  FOR SELECT
  USING (true);

-- 3. UPDATE
CREATE POLICY "UPDATE : 생성자"
  ON tableName
  FOR UPDATE
  USING (auth.uid() = "userId");

-- 4. DELETE
CREATE POLICY "DELETE : 생성자"
  ON tableName
  FOR DELETE
  USING (auth.uid() = "userId");

-- 참고
-- 1. USING (auth.uid() = "userId")에서 auth.uid()는 현재 로그인한 사용자 ID, userId 해당 테이블 행의 userId 컬럼값을 의미합니다.
--    따라서 해당 정책은 로그인된 사용자의 고유 ID (auth.uid())와 테이블 행의 userId 컬럼값이 동일할 때만 해당 작업을 허용합니다.
-- 2. INSERT 정책을 생성할 때에는 WITH CHECK를, 이 외는 USING를 사용합니다.
-- 3. 컬럼명에 대문자가 포함되어 있다면 따움표로 감싸야합니다(ex : userId)

 

스토리지 정책

-- 1. READ : 모든 사용자
CREATE POLICY "READ : 모든 사용자" 
ON storage.objects FOR SELECT 
USING (bucket_id = 'bucketName');

-- 2. CREATE : 모든 사용자
CREATE POLICY "CREATE : 모든 사용자" 
ON storage.objects FOR INSERT 
WITH CHECK (bucket_id = 'bucketName');

-- 3. UPDATE : 모든 사용자
CREATE POLICY "UPDATE : 모든 사용자" 
ON storage.objects FOR UPDATE 
USING (bucket_id = 'bucketName')
WITH CHECK (bucket_id = 'bucketName');

-- 4. DELETE : 모든 사용자
CREATE POLICY "DELETE : 모든 사용자" 
ON storage.objects FOR DELETE 
USING (bucket_id = 'bucketName');