emolog

脳内メモです。

【ruby】 aws cognitoのアドレスを変更する

cognitoつかっためも

前提

  • ruby: 2.6.3
  • aws-ruby-sdk: 3系
  • aws cognitoにで認証情報を管理している。
  • DBにもemailを主キーとしたusersテーブルが存在する。

f:id:ababababa0222:20210309174209p:plain

やりたいこと

  • cognito上のattributeを更新
    • emailを更新する
    • email_
  • DB上のemailを更新

雑にメモ

以下はcognitoのSDKのメソッド

# ドキュメントから引用
# usernameが必須なので無理そう
resp = client.admin_get_user({
  user_pool_id: "UserPoolIdType", # required
  username: "UsernameType", # required
})
# list_usersの引数のfilterにemailを指定して、where句みたいにする
client.list_users(
  user_pool_id: user_pool_id,
  filter: "email = \"#{email}\""
).users.first
client.admin_update_user_attributes({
  user_pool_id: "UserPoolIdType", # required
  username: "UsernameType", # required
  user_attributes: [ # required
    {
      name: "email", # 変更後のemail
      value: "changed_email",
    },
    {
      name: "email_verified", # emailが承認されているかどうか
      value: "true",
    },
  ],
  client_metadata: {
    "StringType" => "StringType",
  },
})