https://www.europesays.com/afrique/241384/ Le rand sud-africain stable avant la revue budgétaire de mi-exercice #AfriqueDuSud #Bourse
Search
8 results for “rand_ash”
-
Russell Brand Told Fan To “Clean Up Mess” After Alleged Rape
#Legal #News #RussellBrandhttps://deadline.com/2026/10/russell-brand-accuser-raped-clean-up-mess-court-hears-1237168557/
-
South African Bonds Rally as Treasury Announces Bond Buyback Programme
Source: Reuters. The benchmark 2035 government bond rallied strongly, with its yield falling 14.5 basis points to 8.59%, while the rand was steady at 16.3775 per dollar at 1350 GMT. The National Treasury said it would reduce the amount of…
https://pressportal.co.za/stream/story/44b2736b6b8fd29d-20261022.html
#pressrelease #AfricaNewsroom #bizcommunity #publicrelations #africa #southafrica
-
#WritersCoffeeClub Oct 22
Share a work you found really challenging to read.Nonfiction: Godel Escher Bach. I still haven't finished this book that my grandmother gave me when I was in my teens. It occupies a guilty spot on my sparsely populated shelf. One day ...
Fiction: Atlas Shrugged. The adolescent politics and philosophy of Ayn Rand aside, she is a terrible writer. I read her abomination of a book so I would have a baseline from which to read the sequel/response by my friend Robert Peate, titled Sysyphus Shrugged.
-
Mitgefühl ist keine Bürgerpflicht
Wer, wie die SPD, so viel Schaden hat, muss für keinen Spott mehr sorgen. Gerade deswegen sind mir in der gestrigen Publizistik ein paar schwer geniessbare Werke aufgestossen. Keins dieser Beispiele ragt auch nur an Jürgen Trittin heran. Giftiger als bei ihm geht es eigentlich nicht, nämlich streng politisch und inhaltlich. Mit einem konstruktiven Schluss, über den sich mit einigem Recht streiten lässt. Es geht also. Jürgens Analyse wird abgestützt durch einen Blick auf die politische Welt da draussen, den der Weltstadtbürger Robert Misik in der taz wagt.
Andere stellen auf dem geschwächten Rücken der Genossin Bas ihre Bescheidwisserei aus. Nicht nur bei den Neigungs-Querfröntlern, sondern auch in einem ehemals innovativen Onlinemedium, bei dem sie in diesem Fall – fahrlässig oder absichtsvoll? – den Autor*innen-Namen weggelassen haben (mittlerweile ist er ergänzt worden, ein üblicher Verdächtiger, im Hauptberuf Filmexperte).
Näher zum aktuellen politischen Kernproblem führt Wolfgang Michal, der von Augsteins Freitag digital vermauert ist, in den nachdenkseiten aber aktuell zum Northstream-Attentat und der damit verbundenen Aussenpolitik so zitiert wird: “Die Anklage lautet auf ‘Kriegsverbrechen’: In Hamburg hat der Prozess um die Sprengung der Nord-Stream-Pipelines begonnen. Welche Strafe dem mutmaßlichen Mittäter Serhii Kuznetsov droht und welche findige Strategie die Verteidigung verfolgt. Mal angenommen, eine Spezialeinheit der ukrainischen Armee würde einen mit russischem Dieselöl beladenen Tanker-Konvoi vor der Küste New Yorks in die Luft sprengen, sodass US-Bürger horrende Preise für den Kraftstoff bezahlen müssten. Wie würden die USA auf einen solchen Anschlag vor ihrer Haustür reagieren? Würden sie die Ukraine des Terrorismus bezichtigen, Vergeltung üben, Botschaftsmitarbeiter ausweisen, Sanktionen verhängen? Würden sie ihre bisherige Unterstützung der Ukraine, die sich gegen einen Angriff Russlands zur Wehr setzt, beenden oder würden sie gar nichts tun? Würden sie schweigen und die Beurteilung der Tat den zuständigen Gerichten überlassen? Nein, niemand glaubt, dass die US-Regierung einen Anschlag – wie den auf die Nord-Stream-Pipelines am 26. September 2022 – schlafmützig hingenommen hätte. Doch exakt so blamabel haben sich die Bundesregierungen unter Olaf Scholz und Friedrich Merz verhalten: aufreizend desinteressiert. Ein Gutteil der Verachtung für die Regierungsparteien und ein Gutteil des Zustroms zu Parteien, die das heftig kritisieren, resultiert daraus.” Leider, leider sehr, sehr richtig.
Doch Ausenpolitik bildet nur den Rand öffentlicher Wahrnehmung durch die Wahlbürger*innen. Zum Kern dringt der von Brüssel aus schreibende Eric Bonse/taz vor: “Proteste in Europa: Und die EU-Spitze schaut weg – Die europaweiten Proteste könnten sich zu einer Revolte à la 1968 ausweiten. Denn das Nichtstun der EU verstärkt die Wut noch. Dabei gäbe es einen Ausweg.”
Die romantisierende Parallele zu “68” teile ich nicht. Das ist Wunschdenken der alten Linken. Die materiellen Rahmenbedingungen sind viel zu verschieden. In den Worten des oben verlinkten Misik:
“Das allgemeine Empfinden unserer Zeit ist das eines Verfalls, einer Bedrohungslage, von sinkendem Wohlstand und wachsender Kriegsgefahr, von Konkurrenz um knappe Ressourcen, von steigenden Preisen, stagnierenden oder schrumpfenden Realeinkommen, Ökokatastrophen, kurzum, jenes Zeitgefühl, das gerade eben Naomi Klein und Astra Taylor in ihrem Bestseller ‘Endzeit-Faschismus’ beschreiben.”
Bonse ansonsten gedanklich folgend würde ich zuspitzen. Macron setzt seine verbliebene politische Energie dafür ein, dass er und seine Polizei den roten Teppich für einen Wahlerfolg der Faschist*inn*en ausrollen. Es gibt hier eine tatsächliche Parallele zu “68”, und zwar eine besonders Üble: als die Medien in Deutschland voll von der 68er-Randale waren, erreichte die faschistische NPD in der West-BRD ihre grössten Wahlerfolge in mehreren Bundesländern und scheiterte 1969 nur knapp am Einzug in den Bundestag. Zu dieser Erinnerung gehört die auf diese faschistischen “Wahlerfolge” folgende “Aktion Widerstand” gegen die erste sozialliberale Bundesregierung und insbesondere ihre beginnende Ost- und Entspannungspolitik, von der heute keine Partei der “Mitte” mehr was wissen will.
So droht es nun in Frankreich zu kommen, begünstigt durch die innere Spaltung und Feindschaft in den Linksparteien, die angesichts der realen Protestbewegungen wie aus der Zeit gefallen aussehen und durch die Gesellschaft taumeln.
Sieht es wenigstens im Brexit-UK wieder besser aus? Hoffentlich. Aber wie wenig substanziell solches Pfeifen im Wald sein kann, hat Misik (s.o.) in seinem Zwergstaat gerade erlebt.
-
We're heading to PHUSE EU Connect 2026! 📍
Colin Gillespie will present "Navigating Package Updates at Scale", exploring how Diffify can help pharma teams govern open source R and Python dependencies and make informed package update decisions.
Amieroh Abrahams and Esther Gillespie will also be there. Come say hello! 👋
-
You wrote a tidy Row Level Security policy, something like
auth.uid() = user_id, and now one of two annoying things happens: your query returns no rows at all, or it returns everybody's rows. Both are common, both are fixable, and neither means RLS is broken. It means the policy isn't seeing the identity you think it's seeing.Let's walk the actual causes, in rough order of how often they bite people, with copy-pasteable SQL you can run against your own project.
First, what
auth.uid()actually isauth.uid()reads thesubclaim out of the JWT attached to the current request. No JWT, or a JWT without a user, meansauth.uid()returns NULL.That single fact explains most "no rows" bugs. A policy like
auth.uid() = user_idbecomesNULL = user_id, which evaluates to NULL (not true), so the row is filtered out. Every row. Silently.So the first debugging question is never "is my policy wrong?" It's "who does the database think I am right now?"
Cause 1: You're on the anon key, so auth.uid() is NULL
Every Supabase project ships two keys, and they are not interchangeable:- anon / publishable (
role: anon) — public by design. It's meant to sit in your browser bundle. It is not a secret and does not need rotating. RLS is what protects your data when this key is used. - service_role (
role: service_role) — a server-only secret that bypasses RLS entirely. More on why that's dangerous below.
If you initialize the client with the anon key and the user hasn't logged in, there's no user JWT, so
auth.uid()is NULL andauth.uid() = user_idmatches nothing.Confirm which key you're holding by decoding the middle segment of the JWT (base64url-encoded JSON):
echo 'PASTE_KEY_HERE' | cut -d. -f2 | base64 -d 2>/dev/null | python3 -m json.tool
Read the
rolefield:"anon"or"service_role". The newer key formats make it obvious without decoding:sb_publishable_...is public,sb_secret_...is the secret one.Then confirm you're actually authenticated. In the browser:
const { data: { user } } = await supabase.auth.getUser()
console.log(user) // null here means auth.uid() will be NULL server-sideIf
useris null, fix sign-in first — no policy change helps until the request carries a user JWT.Cause 2: RLS isn't actually enabled, so you get everything
The opposite symptom — you see all rows — usually means RLS isn't switched on for the table. Policies are ignored entirely until you enable RLS:select relname, relrowsecurity
from pg_class
where relname = 'your_table';If
relrowsecurityisfalse, turn it on:alter table your_table enable row level security;
One gotcha: the table owner and superusers still bypass RLS. To apply the rules even to the owner, add
alter table your_table force row level security;.Cause 3: You're testing with service_role, so it "works" (misleadingly)
The sneakiest one. Your test passes, data comes back exactly right — because the test client is using the service_role key, which bypasses RLS completely. You're not testing your policies; you're testing with the guard switched off.service_role belongs only on a trusted server. Never in a browser, never in a public repo, never in a client
.envthat gets bundled. Anything prefixedNEXT_PUBLIC_,VITE_, orEXPO_PUBLIC_gets inlined into the client bundle at build time — perfect for the anon key and project URL, catastrophic for service_role.And if service_role has already been committed to a repo: deleting the file is not enough. A committed secret lives in git history forever. Rotate the key in the dashboard and purge history (
git filter-repoor BFG). Rotation is the part that actually revokes the leak; history-scrubbing stops the old value from being fetched back out.Test policies with the anon key plus a real logged-in session, the way your app runs. To check directly in SQL, impersonate a role and a user inside a transaction:
begin;
-- become the anon role
set local role anon;
select * from your_table; -- honors your anon policies-- now simulate a logged-in user
set local role authenticated;
select set_config(
'request.jwt.claims',
'{"sub":"11111111-1111-1111-1111-111111111111","role":"authenticated"}',
true
);
select * from your_table; -- auth.uid() now returns that sub
rollback;If it returns rows here but not in your app, the difference is your app's auth state, not the policy.
Cause 4: Missing GRANT
RLS policies do not grant access — they restrict it. A role needs both a matching policy and a table-level privilege. Ifanonorauthenticatedwas never grantedSELECT, no policy will save you; the query errors out regardless of the rows.select grantee, privilege_type
from information_schema.role_table_grants
where table_name = 'your_table';Supabase's default setup grants the API roles broad privileges, but if you've been locking things down by hand you may have revoked them:
grant select, insert, update, delete on your_table to authenticated;
Then let RLS decide which rows each user actually touches.
Cause 5: Missing (or wrong) TO clause
A policy with noTOclause applies to every role, includinganon. That's a frequent source of "why can logged-out visitors read this?"Scope policies explicitly:
create policy "Users read own rows"
on your_table
for select
to authenticated -- <- this line matters
using ( (select auth.uid()) = user_id );Multiple permissive policies are OR'd together, so a broad one you forgot about widens access. List what's really on the table:
select policyname, cmd, roles, qual, with_check
from pg_policies
where tablename = 'your_table';Read the
rolescolumn. If you see{public}where you expected{authenticated}, that's your leak —publicmeans every role, anon included.Cause 6: Comparing a uuid to a text column
auth.uid()returns a uuid. If youruser_idcolumn istext, Postgres resolvesuuid = textby casting the text to uuid — which throwsinvalid input syntax for type uuidthe moment any value isn't a well-formed uuid, and adds a per-row cast even when it isn't. Check the type:select column_name, data_type
from information_schema.columns
where table_name = 'your_table' and column_name = 'user_id';The clean fix is a real
uuidcolumn referencingauth.users:alter table your_table
alter column user_id type uuid using user_id::uuid;If you can't change the schema right now, cast inside the policy so both sides match:
using ( (select auth.uid())::text = user_id )
Prefer fixing the column type — a
uuidthat referencesauth.users(id)indexes better and is harder to get wrong later.The policy pattern to standardize on
Notice I keep writing(select auth.uid())instead of bareauth.uid(). Wrapping it in aselectlets Postgres evaluate the function once per query instead of once per row — a real, measurable win on larger tables, and the pattern Supabase now recommends. A complete per-user set:alter table documents enable row level security;
create policy "read own documents"
on documents for select
to authenticated
using ( (select auth.uid()) = user_id );create policy "insert own documents"
on documents for insert
to authenticated
with check ( (select auth.uid()) = user_id );create policy "update own documents"
on documents for update
to authenticated
using ( (select auth.uid()) = user_id )
with check ( (select auth.uid()) = user_id );Mental model for the two clauses:
USINGfilters which existing rows a role can see (and which rows anUPDATE/DELETEmay touch);WITH CHECKvalidates the new values being written.INSERTpolicies haveWITH CHECKonly.UPDATEusually wants both —USINGto pick the row,WITH CHECKso a user can't reassignuser_idto someone else.A 60-second self-audit
-- tables in public with RLS still disabled
select c.relname
from pg_class c
join pg_namespace n on n.oid = c.relnamespace
where n.nspname = 'public'
and c.relkind = 'r'
and c.relrowsecurity = false;-- policies with no role restriction (they apply to anon too)
select tablename, policyname, cmd, roles
from pg_policies
where schemaname = 'public'
and roles = '{public}';If you want a reproducible sandbox where each failure mode fires on demand — anon-key NULL, missing GRANT, service_role bypass — plus a fuller read-only audit query to paste into the SQL editor, I put a small demo repo together: github.com/cekuu35/supabase-rls-leak-demo. Clone it, run the SQL, and watch the "no rows / all rows" behavior flip as you toggle each cause. It's the fastest way I know to build the intuition.
The takeaway
Whenauth.uid()"doesn't work," it's almost never that RLS is broken. It's that the request isn't carrying the identity you assume: you're on the anon key with no session, RLS was never enabled, a test used service_role and hid the bug, a GRANT is missing, theTOclause is too wide, or a uuid is being compared to text. Walk the six checks in order and you'll find it.If you'd rather not hand-audit every time you ship a new table, I maintain a $29 RLS Audit Kit — ready-to-run policy tests and a checklist that flags exactly these six failure modes across your whole schema. Entirely optional; the queries above will get you unstuck today either way.#supabase #postgres #security #webdev #software #coding #development #engineering #inclusive #community
Supabase RLS with auth.uid() not working? Causes and fixes - anon / publishable (