Ouvre Le Mur de la Honte aux Archontes, plafond quotidien relevé à 12
Build and deploy / deploy (push) Successful in 36s
Build and deploy / deploy (push) Successful in 36s
post_wall_note() n'a plus de vérification de rôle : un Archonte peut désormais publier une note anonyme comme n'importe quel Citoyen. La policy Storage d'upload sur wall-images perd aussi son filtre par rôle (sinon possible de poster une note mais pas d'y joindre une image). Limite quotidienne relevée de 10 à 12 notes pour couvrir tout le groupe plutôt que les seuls Citoyens. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
+19
-16
@@ -1392,10 +1392,13 @@ grant execute on function public.wall_notes_today() to authenticated;
|
||||
-- (contrairement au Char) : contrairement à la soirée de clôture, c'est une
|
||||
-- mécanique de toute la semaine. Petite fenêtre de course possible si deux
|
||||
-- personnes postent la même seconde alors qu'il reste 1 place (double
|
||||
-- insertion à 11) — acceptée sciemment, comme d'autres arbitrages similaires
|
||||
-- déjà faits dans le projet pour un groupe de ~12 amis. La signature change
|
||||
-- (ajout de p_image_url) : l'ancienne (text) est explicitement supprimée,
|
||||
-- sinon create or replace créerait une 2e surcharge au lieu de remplacer.
|
||||
-- insertion à 13) — acceptée sciemment, comme d'autres arbitrages similaires
|
||||
-- déjà faits dans le projet pour un groupe de ~12 amis. Ouvert aux Archontes
|
||||
-- en plus des Citoyens (plus de vérification de rôle) : plafond relevé à 12
|
||||
-- (au lieu de 10) pour couvrir tout le groupe, pas seulement les Citoyens.
|
||||
-- La signature change (ajout de p_image_url) : l'ancienne (text) est
|
||||
-- explicitement supprimée, sinon create or replace créerait une 2e
|
||||
-- surcharge au lieu de remplacer.
|
||||
drop function if exists public.post_wall_note(text);
|
||||
|
||||
create or replace function public.post_wall_note(p_text text, p_image_url text default null)
|
||||
@@ -1405,7 +1408,6 @@ security definer
|
||||
set search_path = public
|
||||
as $$
|
||||
declare
|
||||
v_caller_role text;
|
||||
v_today date := (now() at time zone 'Europe/Paris')::date;
|
||||
v_already_posted boolean;
|
||||
v_count_today int;
|
||||
@@ -1416,11 +1418,10 @@ begin
|
||||
raise exception 'authentication required';
|
||||
end if;
|
||||
|
||||
select role into v_caller_role from public.profiles where id = auth.uid();
|
||||
if v_caller_role = 'judge' then
|
||||
raise exception 'only citizens can post on the wall';
|
||||
end if;
|
||||
|
||||
-- Les Archontes peuvent désormais publier eux aussi (plus réservé aux
|
||||
-- Citoyens) : plus de vérification de rôle ici, tout authentifié peut
|
||||
-- poster une note anonyme — la limite de 12 (au lieu de 10) plus bas
|
||||
-- suit ce changement pour couvrir tout le groupe.
|
||||
if p_text is null or length(trim(p_text)) = 0 then
|
||||
raise exception 'note vide';
|
||||
end if;
|
||||
@@ -1447,7 +1448,7 @@ begin
|
||||
select count(*) into v_count_today
|
||||
from public.wall_notes
|
||||
where (created_at at time zone 'Europe/Paris')::date = v_today;
|
||||
if v_count_today >= 10 then
|
||||
if v_count_today >= 12 then
|
||||
raise exception 'wall full today';
|
||||
end if;
|
||||
|
||||
@@ -1481,14 +1482,16 @@ create policy "Wall images are publicly viewable"
|
||||
on storage.objects for select
|
||||
using (bucket_id = 'wall-images');
|
||||
|
||||
-- Les Archontes peuvent désormais publier sur le Mur eux aussi (voir
|
||||
-- post_wall_note plus haut, qui n'a plus de restriction de rôle) : plus de
|
||||
-- filtre par rôle ici non plus, sinon un Archonte pourrait poster une note
|
||||
-- mais pas y joindre d'image.
|
||||
drop policy if exists "Citizens can upload wall images" on storage.objects;
|
||||
create policy "Citizens can upload wall images"
|
||||
drop policy if exists "Members can upload wall images" on storage.objects;
|
||||
create policy "Members can upload wall images"
|
||||
on storage.objects for insert
|
||||
to authenticated
|
||||
with check (
|
||||
bucket_id = 'wall-images'
|
||||
and exists (select 1 from public.profiles p where p.id = auth.uid() and p.role <> 'judge')
|
||||
);
|
||||
with check (bucket_id = 'wall-images');
|
||||
|
||||
-- Réactions sur les notes -------------------------------------------------
|
||||
-- Même principe d'anonymat que les notes elles-mêmes : chacun ne voit que
|
||||
|
||||
Reference in New Issue
Block a user