###前提・実現したいこと
【実現したいこと】
サインアップする際に入力されたemailに対して、Poolユーザの属性に既に同一emailを指定しているユーザがいないか確認したい。
###発生している問題・エラーメッセージ
【発生している問題】
最も理想的なのは、cognito自身が属性に指定したメールアドレスの重複チェックを実施してくれればよいのですが
現状「別username」、「同一email」でもpoolできてしまうのでこれを解決したい。
※そもそもemailにAliasを設定しているのになぜ同一emailが指定できるのかもログイン未実装のためまだよくわかっていません・・。
cognito関連のドキュメントを閲覧していくとlistUsersを使用してユーザ情報がリスト取得できるとあったので
ドキュメントに倣い以下を実装したのですがエラーがでます。
Javascript
1var params = { 2 UserPoolId : --, 3 AttributesToGet: [], 4 Filter: "email = hoge@example.com", 5 Limit: 2 6}; 7var cognitoidentityserviceprovider = new AWS.CognitoIdentityServiceProvider(); 8cognitoidentityserviceprovider.listUsers(params, function(err, data) { 9 if (err) { 10 console.log(err); 11 } else { 12 console.log(data); 13 } 14});
message":"User: arn:aws:sts::---:assumed-role/Cognito_HOGE_Role/CognitoIdentityCredentials is not authorized to perform: cognito-idp:ListUsers on resource: arn:aws:cognito-idp:us-east-1:---:userpool/us-east----","code":"AccessDeniedException","time":"2017-07-05T07:17:34.072Z","requestId":"03ee977a-6152-11e7-98a3-895655ba5d13","statusCode":400,"retryable":false,"retryDelay":62.65074356583431}
このエラーメッセージを見る限り、ロール:Cognito_HOGE_RoleがlistUsersの実行権限を持ってないのだと思うのですが、
現状このあたりで手が止まっています。
どなたか解決できる方法を教示頂けますか?
よろしくお願い致します。
###補足情報
当初usernameにemailを指定しており、これであればusernameは重複を許さないので
当件が該当することはなかったのですがusernameは一度登録したら変更できないと記載があり、
今後ユーザがemailを変更した場合、属性のemailとusernameに乖離がでてしまうため
現状usernameには一意となる文字列を指定しています。
※サインアップや認証コードの送信などは問題なくできているので、
IDの記載ミス等問題ではないと思われます。
回答1件
あなたの回答
tips
プレビュー