mirror of
https://gitlab.com/MoonTestUse1/AdministrationItDepartmens.git
synced 2025-08-14 00:25:46 +02:00
56 lines
1.8 KiB
SQL
56 lines
1.8 KiB
SQL
/*
|
||
# Система приоритетов заявок
|
||
|
||
1. Новые таблицы
|
||
- `request_priorities`
|
||
- `id` (uuid, primary key)
|
||
- `name` (text, unique)
|
||
- `description` (text)
|
||
- `color` (text)
|
||
- `sla_hours` (integer)
|
||
- `created_at` (timestamptz)
|
||
|
||
2. Безопасность
|
||
- Включение RLS
|
||
- Политики для чтения и управления
|
||
*/
|
||
|
||
DO $$ BEGIN
|
||
-- Создание таблицы приоритетов, если она не существует
|
||
CREATE TABLE IF NOT EXISTS request_priorities (
|
||
id uuid PRIMARY KEY DEFAULT gen_random_uuid(),
|
||
name text NOT NULL UNIQUE,
|
||
description text,
|
||
color text NOT NULL,
|
||
sla_hours integer NOT NULL,
|
||
created_at timestamptz NOT NULL DEFAULT now()
|
||
);
|
||
|
||
-- Включение RLS
|
||
ALTER TABLE request_priorities ENABLE ROW LEVEL SECURITY;
|
||
|
||
-- Безопасное создание политик с проверкой существования
|
||
IF NOT EXISTS (
|
||
SELECT 1 FROM pg_policies
|
||
WHERE tablename = 'request_priorities'
|
||
AND policyname = 'Все могут просматривать приоритеты'
|
||
) THEN
|
||
CREATE POLICY "Все могут просматривать приоритеты"
|
||
ON request_priorities
|
||
FOR SELECT
|
||
TO authenticated
|
||
USING (true);
|
||
END IF;
|
||
|
||
IF NOT EXISTS (
|
||
SELECT 1 FROM pg_policies
|
||
WHERE tablename = 'request_priorities'
|
||
AND policyname = 'Только администраторы могут управлять приоритетами'
|
||
) THEN
|
||
CREATE POLICY "Только администраторы могут управлять приоритетами"
|
||
ON request_priorities
|
||
FOR ALL
|
||
TO authenticated
|
||
USING (auth.jwt() ->> 'role' = 'admin');
|
||
END IF;
|
||
END $$; |