백엔드/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');