Firebase: проверка через облачные функции, если электронная почта пользователя подтверждена - PullRequest
0 голосов
/ 03 июля 2018

Есть ли способ проверить, проверена ли электронная почта через облачные функции? то есть, если у меня есть идентификатор пользователя, могу ли я проверить, подтвержден ли адрес электронной почты для этого конкретного пользователя. В моем случае я должен убедиться, что электронная почта проверена перед выполнением транзакции. Я хочу проверить это на стороне сервера

Пример облачной функции:

exports.executeTransaction = functions.https.onCall((data,context)=>{ 

const userid = context.auth.uid 

//Check if email is verified
//I want to use context variable to somehow extract whether email is verified. Is there a way to do it ?
//Execute Transaction if email is verified
})

Ответы [ 2 ]

0 голосов
/ 07 февраля 2019

Согласно документам, контекст включает decodedIdToken, который уже содержит поле email_verified.

Таким образом, все, что вам нужно сделать, это:

exports.executeTransaction = functions.https.onCall((data, context) => {
  const { token } = context.auth;
  if (!token.firebase.email_verified)
    throw new functions.https.HttpsError(
      "failed-precondition",
      "The function must be called while authenticated."
    );

  // ...do stuff
})

https://firebase.google.com/docs/reference/functions/functions.https#.CallableContext

https://firebase.google.com/docs/reference/admin/node/admin.auth.DecodedIdToken#email_verified

0 голосов
/ 03 июля 2018

Не бери в голову, мне удалось разобраться.

См. Следующее для любого с подобной проблемой:

exports.executeTransaction = functions.https.onCall((data,context)=>{ 
const userid = context.auth.uid 
//Check if email is verified
return admin.auth().getUser(context.auth.uid).then(user => {
//Check if email verified
  if(user.emailVerified)
  {
return "Verified"
}
else{
console.log("User Email not verified")
return "Not Verified"
}
}).catch(function(err){
  console.log(err)
  throw new functions.https.HttpsError('Error Validating', err.message, err)
})
})
...