Improve MineGeo interface and functionality

This commit is contained in:
2026-10-06 19:24:41 +05:00
parent 7404f1dc1c
commit 233e4d57f0
67 changed files with 3053 additions and 643 deletions

View File

@@ -0,0 +1,36 @@
create table public.site_settings (
id boolean primary key default true check (id),
beta_badge_enabled boolean not null default true,
updated_at timestamptz not null default now(),
updated_by uuid references public.profiles(id) on delete set null
);
insert into public.site_settings (id) values (true);
alter table public.site_settings enable row level security;
revoke all on public.site_settings from public, anon, authenticated;
grant select, update on public.site_settings to service_role;
create policy "Server manages site settings" on public.site_settings
for all to service_role using (true) with check (true);
-- Invoked only by the server after authenticating the moderator. The profile
-- check also protects this operation if another server caller is added later.
create function public.set_beta_badge(p_reviewer uuid, p_enabled boolean)
returns boolean language plpgsql security invoker set search_path = '' as $$
begin
if not exists (
select 1 from public.profiles where id = p_reviewer and role = 'moderator'
) then
raise exception using errcode = '42501', message = 'Moderator permission required';
end if;
if p_enabled is null then
raise exception 'Beta badge visibility is required';
end if;
update public.site_settings
set beta_badge_enabled = p_enabled, updated_at = now(), updated_by = p_reviewer
where id = true;
if not found then raise exception 'Site settings not found'; end if;
return p_enabled;
end;
$$;
revoke all on function public.set_beta_badge(uuid, boolean) from public, anon, authenticated;
grant execute on function public.set_beta_badge(uuid, boolean) to service_role;