Skip to content

Latest commit

 

History

History
77 lines (56 loc) · 1.89 KB

README.md

File metadata and controls

77 lines (56 loc) · 1.89 KB

🧶 Supabase RLS in Typescript

Watch the video Actual Image

📜 Helps you write Supabase Row Level Security (RLS) in Typescript. (* plv8)


🚀 Usage

New website opned!!: https://supabase-rls.up.railway.app (Web Source)

1. Clone And Install

git clone https://github.com/hmmhmmhm/rls-ts.git
cd ./rls-ts
npm install

2. Update Project Types

Please read the guide and follow it to read the type of Supabase project. Generating Supabase Types

3. Create or Modify File

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();
});

4. Build

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;

✅ License

MIT Licensed.