65 lines
1.5 KiB
SQL
65 lines
1.5 KiB
SQL
-- Включаем RLS для всех таблиц
|
|
ALTER TABLE users ENABLE ROW LEVEL SECURITY;
|
|
ALTER TABLE media ENABLE ROW LEVEL SECURITY;
|
|
ALTER TABLE reviews ENABLE ROW LEVEL SECURITY;
|
|
|
|
-- Политики для таблицы users
|
|
CREATE POLICY "Users can view own profile"
|
|
ON users FOR SELECT
|
|
USING (auth.uid() = id);
|
|
|
|
CREATE POLICY "Users can update own profile"
|
|
ON users FOR UPDATE
|
|
USING (auth.uid() = id);
|
|
|
|
-- Политики для таблицы media
|
|
CREATE POLICY "Anyone can view media"
|
|
ON media FOR SELECT
|
|
USING (true);
|
|
|
|
CREATE POLICY "Admins can insert media"
|
|
ON media FOR INSERT
|
|
WITH CHECK (
|
|
EXISTS (
|
|
SELECT 1 FROM users
|
|
WHERE users.id = auth.uid()
|
|
AND users.role = 'admin'
|
|
)
|
|
);
|
|
|
|
CREATE POLICY "Admins can update media"
|
|
ON media FOR UPDATE
|
|
USING (
|
|
EXISTS (
|
|
SELECT 1 FROM users
|
|
WHERE users.id = auth.uid()
|
|
AND users.role = 'admin'
|
|
)
|
|
);
|
|
|
|
CREATE POLICY "Admins can delete media"
|
|
ON media FOR DELETE
|
|
USING (
|
|
EXISTS (
|
|
SELECT 1 FROM users
|
|
WHERE users.id = auth.uid()
|
|
AND users.role = 'admin'
|
|
)
|
|
);
|
|
|
|
-- Политики для таблицы reviews
|
|
CREATE POLICY "Anyone can view reviews"
|
|
ON reviews FOR SELECT
|
|
USING (true);
|
|
|
|
CREATE POLICY "Authenticated users can insert reviews"
|
|
ON reviews FOR INSERT
|
|
WITH CHECK (auth.uid() IS NOT NULL);
|
|
|
|
CREATE POLICY "Users can update own reviews"
|
|
ON reviews FOR UPDATE
|
|
USING (auth.uid() = user_id);
|
|
|
|
CREATE POLICY "Users can delete own reviews"
|
|
ON reviews FOR DELETE
|
|
USING (auth.uid() = user_id); |