📜 Helps you write Supabase Row Level Security (RLS) in Typescript. (* plv8)
New website opned!!: https://supabase-rls.up.railway.app (Web Source)
git clone https://github.com/hmmhmmhm/rls-ts.git
cd ./rls-ts
npm install
Please read the guide and follow it to read the type of Supabase project. Generating Supabase Types
Create or modify the
example.ts
file in the./src
directory.
export default createPolicy<TABLE_NAME>((context) => {
// TODO: Your policy logic
return true;
});
Below is an example of use.
export default createPolicy<"channels">((context) => {
// * Allow only creators to update their own channels
return context.row.created_by === context.auth.uid();
});
After entering the command below, a file is created, such as
build/example.plv8.sql
.
npm run build
Copying the translated script and pasting it into the desired policy within Supabase takes effect. (Below is an example of sql file.)
-- example.ts.plv8.sql
boolean as $$
function createPolicy(cb) {
cb({
row: globalThis,
function: globalThis,
auth: globalThis.auth,
plv8: globalThis.plv8
});
}
return createPolicy(function(context) {
// Allow only creators to update their own channels
if (context.row.created_by === context.auth.uid()) return true;
});
$$ language plv8;
MIT Licensed.