Rulesでユーザーを同期する
Auth0には、ログイン要求のたびに呼び出されるように設定できるルールがあります。Auth0設定の2番目のステップを思い出してください。カスタムJWTクレームを適用するルールを作成しました。ここでは、Auth0におけるルールを設定して、Auth0のユーザーがデータベース内のユーザーと同期できるようにする必要があります。以下のコードスニペットによって、それが可能です。再度Rules機能を使用して、新しい空のルールを作成して、以下のコードスニペットに貼り付けます。
function (user, context, callback) {const userId = user.user_id;const nickname = user.nickname;const admin_secret = "xxxx";const url = "https://ready-panda-91.hasura.app/v1/graphql";const query = `mutation($userId: String!, $nickname: String) {insert_users(objects: [{id: $userId, name: $nickname, last_seen: "now()"}], on_conflict: {constraint: users_pkey, update_columns: [last_seen, name]}) {affected_rows}}`;const variables = { "userId": userId, "nickname": nickname };request.post({url: url,headers: {'content-type' : 'application/json', 'x-hasura-admin-secret': admin_secret},body: JSON.stringify({query: query,variables: variables})}, function(error, response, body){console.log(body);callback(null, user, context);});}
注:アプリに応じて、x-hasura-admin-secret
および url
パラメーターを適切に変更します。
ここでは、 users
テーブルにミューテーションを実行する要求を行います。
それでおしまいです!このルールは、サインアップまたはログインが成功するたびにトリガーされます。そして、Hasura GraphQLミューテーションを使用して、ユーザーデータをデータベースに挿入または、更新します。
上記の要求では、id
値と name
値によってユーザーテーブルでミューテーションを実行します。
Did you find this page helpful?
Start with GraphQL on Hasura for Free
- Build apps and APIs 10x faster
- Built-in authorization and caching
- 8x more performant than hand-rolled APIs