Облачные функции - пользовательские заявки возвращают неопределенные - PullRequest
0 голосов
/ 04 июля 2019

Я создал нового пользователя с помощью пользовательского токена с дополнительными утверждениями.

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

Код для создания пользователя:

admin.auth()
.createCustomToken(uid, claims)
.then(token => {
    console.log(token);
 });

Код для получения созданного пользователя:

admin.auth().getUser(uid)
.then((userRecord) => { 

 console.log(userRecord.customClaims);

});

userRecord.customClaims возвращает неопределенное значение

1 Ответ

1 голос
/ 05 июля 2019

Вы должны использовать setCustomUserClaims().Не createCustomToken().

admin.auth()
.setCustomUserClaims(uid, claims)
.then(token => {
    console.log(token);
 });

setCustomUserClaims() всегда переопределяется, поэтому я рекомендую получить текущие customClaims и объединить.

В зависимости от ситуации, я рекомендую использовать async / await.

Как это.

async function setClaims(uid, claims) {
    try {
        const userRecord = await admin.auth().getUser(uid);
        return await admin.auth().setCustomUserClaims(uid, {
            ...userRecord.customClaims,
            ...claims
        });
    } catch (e) {
        return Promise.reject(e);
    }
}

См.

Обновлено

setCustomUserClaims()

Устанавливает дополнительные заявки разработчиков на существующего пользователя, идентифицированного предоставленным uid

См.

createCustomToken()

Создает новый пользовательский токен Firebase (JWT), который можно отправить обратно на клиентское устройство, чтобы использовать для входа с помощью signInWithCustomToken клиентских SDK.() методы.

Вы также можете при желании указать дополнительные утверждения, которые будут включены в пользовательский токен.Например, ниже, в премиум-поле было добавлено поле premiumAccount, которое будет доступно в объектах auth / request.auth в ваших Правилах безопасности:

Оно доступно только в auth / requestОбъекты .auth в ваших Правилах безопасности.Так что не настраивайте user customClaims.

См.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...