きめ細かい認証ルールが必要な場合、PostgreSQLのRow Level Security (RLS)に勝るものはありません。
ポリシーはPostgreSQLのルールエンジンです。非常に強力で柔軟性があり、独自のビジネスニーズに合った複雑なSQLルールを記述することができます。
これは、Firestoreのセキュリティールールと同じものだと思ってもらえれば良いです。
ローレベルセキュリティを使用する方法ですが、最近Udemyで学んだ割と簡単な方法で設定するのをやってみます。完成済みのデモアプリに、Supabaseのプロジェクトを新規作成して作られたURLとAnon Keyを使用して、チュートリアルを進めていきます。
こちらがデモアプリです
こちらのデモアプリに.envファイルを作成して、ご自身のURLとAnon Keyを設定してください。
以下のコードを参考に.envに設定をしてください。
SUPABASE_URL = https://mikkqqij*****************
SUPABASE_KEY = eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJp************
Table editorのページで、notesテーブルを作成します。ここが重要な工程です。user_idというカラムがないと、ローレベルセキュリティーを適用することができません。
リアルタイムにデータが取得できるように、スクリーンショットと同じ箇所にチェックをつけて、設定を変えてください。その後にテーブルのカラムの定義をします。
表示を許可するルールを設定する
テーブルを作成したら、Authenticationのページで、Pliciesを選択して、先ほど作成したnotesの情報が記載されいるので、こちらでローレベルセキュリティーの設定を行います。
New Policyのボタンを押します。
Get started quicklyを選択します。その後にスクリーンショットと同じ操作をすると、アプリにデータを表示することを許可することができます。
以下の設定をすると、アプリにデータを表示するのを許可することができます。
auth.id() user_id::uuid
データの追加を許可する
次は、データの追加を許可する設定をしましょう。
編集を許可する設定をする
編集の設定をするときは、deleteの箇所を修正して行います。
削除を許可する設定をする
deleteと書かれている一番下の項目を選択して、ルールの設定をする。
これでローレベルセキュリティーの設定は完了です。お疲れ様でした。