hmmhmmhm / rls-ts

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

Home Page:https://supabase-rls.up.railway.app

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

๐Ÿงถ 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.

About

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

https://supabase-rls.up.railway.app

License:MIT License


Languages

Language:TypeScript 100.0%