あるuserIdがUserPoolに存在するかチェックする
UserPoolに、そのuserIdが存在するかどうかだけを知りたいのだが
userExist(userName: string): boolean的なAPIないんか?
認証とか関係なく、これだけが知りたい
Amplifyでusernameの存在チェック
以下のことをしたらできた
この際に、const code='000000'ではdefaultでは動かない
そこで、これに従ってUserPoolの設定を変える この変更により、ErrorMessageがやや詳細になる
詳細になると、クラッカーにとって有利になるので、推奨されない
例えば、email/passwordがないときに「そのemailは存在しません」まで言っちゃうイメージ
まぁ、でもclientのerror messageをちゃんとやれば回避可能
code: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;
});
});
code: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;
}
}
}