todosテーブル権限を設定する
todos テーブルの下の権限タブに移動して、関連する権限を追加します。
挿入権限
ログインしたユーザーが、新しいtodoエントリを作成して、is_publicとタイトル列だけを指定できるようにします。
- 新しい役割を入力するテキストボックスに、“user”と入力します
- 「挿入」権限の編集(鉛筆)アイコンをクリックします。これにより、下のセクションが開き、カスタムチェックを設定して列を許可できます。
- カスタムチェックで、以下の条件を選択します。
{"user_id":{"_eq":"X-Hasura-User-Id"}}

列の挿入権限の下で、title および is_public 列を選択します。

最後に、列のプリセットの下で、X-HASURA-USER-ID への from session variable マッピングから user_id を選択します。
注:セッション変数は、各要求の認証サービスから返されるキーと値のペアです。ユーザーが要求すると、セッショントークンは USER-ID にマッピングされます。この USER-ID は許可で使用され、user_id 列にセッション変数 USER-ID の値に等しい値がある場合にのみ、テーブルへの挿入が許可されることを示すことができます。
Save Permissions をクリックします。
閲覧権限
todoエントリがパブリックになっているか、ユーザーがログインしていれば、todoエントリを表示できるようにします。
「閲覧」権限の編集アイコンをクリックします。カスタムチェックで、以下の条件を選択します。
{"_or":[{"is_public":{"_eq":true}},{"user_id":{"_eq":"X-Hasura-User-Id"}}]}

列の閲覧権限の下で、すべての列を選択します。

Save Permissions をクリックする
更新権限
ユーザーがis_completed列しか更新できないようにします。
「更新」権限の編集アイコンをクリックします。更新前カスタムチェックで With same custom checks as insert を選択します。
そして、列の更新権限の下で、is_completed 列を選択します。

完了したら Save Permissions をクリックします。
削除権限
ログインしたユーザーのみ、todoエントリを削除できます。
最後に、削除権限についてはカスタムチェックの下で With same custom checks as insert, pre update を選択します。

Save Permissions をクリックすると、todos テーブルのアクセス制御が完了します。
Build apps and APIs 10x faster
Built-in authorization and caching
8x more performant than hand-rolled APIs





