Сводка
AdminUpdateUserAttributes создает нового пользователя в Cognito UserPool, когда я пытаюсь изменить адрес электронной почты и email_verified.
Я хочу обновить атрибут 'email' без подтверждения адреса электронной почты.
Код
const provider = new AWS.CognitoIdentityServiceProvider();
provider.adminUpdateUserAttributes({
UserPoolId: userPoolId,
Username: username, // this is previous email
UserAttributes: [
{
Name: "email",
Value: email, // this is new email
},
{
Name: "email_verified",
Value: "true"
}
]
}, ...)
Вопрос
Электронная почта установлена как псевдоним пользователя.
Я хочу обновить электронную почту пользователя с помощью adminUpdateUserAttributes.
Иногда пользователь успешно обновляется.
Однако я обнаружил, что некоторые пользователи дублируются при обновлении электронной почты.
Они имеют все те же значения атрибутов, кроме электронной почты иИмя пользователя (UUID).
Почему произошла такая ситуация?и как ее решить?
ОБНОВЛЕНИЕ
Весь код, который я попробовал ниже.
const provider = new AWS.CognitoIdentityServiceProvider();
provider.adminGetUser({
UserPoolId: userPoolId,
Username: username // previous email
}, (err, data) => {
if (err) {
console.log(err, err.stack)
}else {
const oldUsername = data.Username // get uuid username
provider.adminUpdateUserAttributes({
UserPoolId: userPoolId,
Username: oldUsername,
UserAttributes: [
{
Name: "email",
Value: email, // new email
},
{
Name: "email_verified",
Value: "true"
}
]
}, (err, data) => {
if (err) {
console.log(err, err.stack);
}else {
provider.adminGetUser({
UserPoolId: userPoolId,
Username: email, // new email
}, function(err, data) {
if (err){
console.log(err, err.stack)
}else{
console.log(data.Username, oldUsername)
if (data.Username !== oldUsername){ // I would like to disable old user if they are duplicated.
provider.adminDisableUser({
UserPoolId: userPoolId,
Username: oldUsername
}, callback)
}
}
})
}
})
}
})
Извините за вложенный некрасивый код.
Идея
Этот код проверяет, разные имена пользователей UUID или нет.
Если UUID разные, я подумал, что это означает, что пользователь был дублирован.
Я пытаюсь отключить пользователя, когда это происходит.
Real
Даже если идентификаторы UUID одинаковы, создается новый пользователь.
Кажется, что функция AdminUpdateUserAttributes не всегда предназначена для создания нового пользователя.Поэтому я не могу отключить пользователя каждый раз.