59 lines
2.0 KiB
SQL
59 lines
2.0 KiB
SQL
-- user_id'yi nullable yap
|
||
ALTER TABLE trips ALTER COLUMN user_id DROP NOT NULL;
|
||
|
||
-- Anonim kullanıcılar için RLS politikaları
|
||
DROP POLICY IF EXISTS "Kullanıcılar kendi seyahatlerini oluşturabilir" ON trips;
|
||
DROP POLICY IF EXISTS "Kullanıcılar kendi seyahatlerini görebilir" ON trips;
|
||
DROP POLICY IF EXISTS "Kullanıcılar kendi seyahatlerini güncelleyebilir" ON trips;
|
||
DROP POLICY IF EXISTS "Kullanıcılar kendi seyahatlerini silebilir" ON trips;
|
||
|
||
-- Yeni politikalar
|
||
CREATE POLICY "Herkes seyahat oluşturabilir"
|
||
ON trips FOR INSERT
|
||
WITH CHECK (true);
|
||
|
||
CREATE POLICY "Herkes public seyahatleri görebilir"
|
||
ON trips FOR SELECT
|
||
USING (is_public = true OR auth.uid() = user_id OR user_id IS NULL);
|
||
|
||
CREATE POLICY "Kullanıcılar kendi seyahatlerini güncelleyebilir"
|
||
ON trips FOR UPDATE
|
||
USING (auth.uid() = user_id OR user_id IS NULL);
|
||
|
||
CREATE POLICY "Kullanıcılar kendi seyahatlerini silebilir"
|
||
ON trips FOR DELETE
|
||
USING (auth.uid() = user_id OR user_id IS NULL);
|
||
|
||
-- Trip days için anonim erişim
|
||
DROP POLICY IF EXISTS "Kullanıcılar kendi seyahat günlerini yönetebilir" ON trip_days;
|
||
|
||
CREATE POLICY "Herkes seyahat günlerini yönetebilir"
|
||
ON trip_days FOR ALL
|
||
USING (
|
||
EXISTS (
|
||
SELECT 1 FROM trips
|
||
WHERE trips.id = trip_days.trip_id
|
||
AND (trips.user_id = auth.uid() OR trips.user_id IS NULL OR trips.is_public = true)
|
||
)
|
||
);
|
||
|
||
-- Trip places için anonim erişim
|
||
DROP POLICY IF EXISTS "Kullanıcılar kendi seyahat yerlerini yönetebilir" ON trip_places;
|
||
|
||
CREATE POLICY "Herkes seyahat yerlerini yönetebilir"
|
||
ON trip_places FOR ALL
|
||
USING (
|
||
EXISTS (
|
||
SELECT 1 FROM trip_days
|
||
JOIN trips ON trips.id = trip_days.trip_id
|
||
WHERE trip_days.id = trip_places.trip_day_id
|
||
AND (trips.user_id = auth.uid() OR trips.user_id IS NULL OR trips.is_public = true)
|
||
)
|
||
);
|
||
|
||
-- Places tablosu için anonim okuma
|
||
DROP POLICY IF EXISTS "Herkes yerleri görebilir" ON places;
|
||
|
||
CREATE POLICY "Herkes yerleri görebilir"
|
||
ON places FOR SELECT
|
||
USING (true); |