Sign up for Hasura Newsletter
Loading...
Hasura Con
Workshop | June 30, 2022 | 08:00 AM PST
Learn how to use Hasura from the engineers who built it! Join our live workshop
Register Now
Hasura Con

ワークスペースのための権限

権限

Slackのログイン済みユーザーが読み取れるワークスペースデータはどれでしょうか?

  • ワークスペースのメンバーなら誰でも、ワークスペースに関するデータを読み取れる必要があります。

これは、ワークスペーステーブルのレコードにアクセスしようとしている人は所有者 owner_id = X-Hasura-User-Id でないといけないかまたは、同じワークスペース workspace_members.user_id = X-Hasura-User-Id に参加している必要があることを示す典型的なブール式です。

行レベル選択

上記のステートメントの拡張された有効なブール式は、次のようになります。

{
"_or": [
{
"owner_id": {
"_eq": "X-Hasura-User-Id"
}
},
{
"workspace_members": {
"user_id": {
"_eq": "X-Hasura-User-Id"
}
}
}
]
}

列レベル選択

ユーザーがアクセスすると想定される行を除外した後、読み取りが許可されるフィールドを除外する必要があります。特定のタイプのユーザーのみに制限する必要がある機密データはないため、すべての列に選択する権限を与えます。

読み取りアクセスが完了しました。次に、ユーザーが作成、更新、または削除できる書き込みアクセスを紹介します。

権限を挿入する

アプリのユーザーは、workspace テーブルに直接挿入できますか?はい。認証されたユーザーなら誰でも、自分でワークスペースを作成できます。以下の式になります。

{
"owner_id": {
"_eq": "X-Hasura-User-Id"
}
}

列プリセット

挿入中に、静的な値またはセッション変数を、列のデフォルトの値として設定できます。

ワークスペーステーブルで、owner_idは自動的にセッション変数 X-Hasura-User-Id に設定する必要があり、ユーザーにこの値の設定を許可してはなりません。この場合、列プリセットを使用します。

Slackワークスペースユーザー挿入

権限

workspace テーブル内の既存のデータを更新できるのは誰ですか?

アプリの認証されたユーザーとワークスペースの所有者にのみ、ワークスペース内のデータの更新を許可します。

行レベル更新

上記の条件は、以下の式になります。

{
"owner_id": {
"_eq": "X-Hasura-User-Id"
}
}

列の owner_id が認証されたユーザーのid値(X-Hasura-User-Id)と一致する場合のみ、行を更新します

列レベル更新

ユーザーがアプリから直接更新できる列を修正する必要があります。そのため、ユーザーに idowner_id、および created_at 値の更新を許可しないでください。残りの列は許可できます。

権限を削除する

ワークスペースの所有者は、ワークスペースを削除できる唯一のユーザーである必要があります。これも再度、以下の式に変換します。

{
"owner_id": {
"_eq": "X-Hasura-User-Id"
}
}

ワークスペースが削除された場合、他のすべてのテーブル内のすべての依存レコードも削除する必要があります。そのため、これは、クライアントからのワークスペースの直接削除を許可するのでなく、サーバー側の管理者ロールによる単一の操作として実行できます。もう1つのオプションは、ON DELETEトリガーを使用して、データベース全体のすべての依存行を削除するカスケード削除を実行することです。

Did you find this page helpful?
Start with GraphQL on Hasura for Free
  • ArrowBuild apps and APIs 10x faster
  • ArrowBuilt-in authorization and caching
  • Arrow8x more performant than hand-rolled APIs
Promo
footer illustration
Brand logo
© 2022 Hasura Inc. All rights reserved
Github
Titter
Discord
Facebook
Instagram
Youtube
Linkedin