generated at
あるuserIdがUserPoolに存在するかチェックする

UserPoolに、そのuserIdが存在するかどうかだけを知りたいのだが
userExist(userName: string): boolean 的なAPIないんか?
認証とか関係なく、これだけが知りたい


Amplifyでusernameの存在チェック
以下のことをしたらできた
このコードを参考にする
この際に、 const code='000000' ではdefaultでは動かない
そこで、これに従ってUserPoolの設定を変える
アプリクライアントの「詳細を開く」をして、「セキュリティ設定」を「レガシー」に変える
この変更により、ErrorMessageがやや詳細になる
詳細になると、クラッカーにとって有利になるので、推奨されない
例えば、email/passwordがないときに「そのemailは存在しません」まで言っちゃうイメージ
まぁ、でもclientのerror messageをちゃんとやれば回避可能



yup.ts
yup.addMethod<yup.StringSchema>(yup.string, 'uniq', function () { return this.test('unique', '既に使用されています', function (username) { if (username == null || username === '') return true; const a = new Promise<boolean>(async resolve => { const b = await confirmUserSignUp(username); console.log(b); return resolve(b); }); return a; }); });
comfirmUserSignUp.ts
export async function confirmUserSignUp(username: string) { try { const result = await Amplify.Auth.confirmSignUp(username, '000000'); console.log({ result }); return false; } catch (err) { console.log({ err }); switch (err.code) { case 'UserNotFoundException': return true; default: return false; } } }