Допустим, у меня есть таблица, определенная так;
CREATE TABLE IF NOT EXISTS Users (
name TEXT,
email EMAIL
);
Я хотел бы разрешить всем пользователям указывать имя пользователя. Я бы хотел, чтобы только сам пользователь (прошедший проверку подлинности через JWT) мог выбирать свою электронную почту.
В идеале я хотел бы написать что-то вроде
-- Allow all selections but email
CREATE POLICY select_users ON Users FOR SELECT (name) USING (true);
-- Allow selection of email to the user itself
CREATE POLICY select_users_email ON Users FOR SELECT (email) USING
(id = NULLIF(current_setting('jwt.claims.id', true), '')::UUID);
но это не сработает.
Как я могу объединить безопасность на уровне столбцов (разрешить кому-либо видеть имя) с безопасностью на уровне строк с помощью политики, чтобы пользователь мог только читать свою электронную почту?