Добавление пользовательской заявки в облачную функцию onCreate пользователя firebase - PullRequest
0 голосов
/ 26 марта 2019

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

Я пробовал некоторые учебники, в которых роль пользователя добавляется после создания пользователя.https://www.youtube.com/watch?v=4wa3CMK4E2Y. Но я подумал о добавлении пользовательских утверждений о создании пользователя и возврате с ответом

const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp(functions.config().firebase);

exports.addDefaultUserRole = functions.auth.user().onCreate((user) => {

    let uid = user.uid;

    //add custom claims
    return admin.auth().setCustomUserClaims(uid,{
        isAdmin: true,

    });


});

Даже приведенный выше код выполняется в firebase, ничего не произошло, а утверждения не были получены вответ.Разве не стоит добавлять пользовательские утверждения при создании пользователя?Какова будет причина не прикреплять пользовательские претензии с кодом выше

1 Ответ

2 голосов
/ 26 марта 2019

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

Проблема, с которой вы, похоже, сталкиваетесь, заключается в том, что вы не можете подтвердить, что заявка установлена ​​правильно.Фактически, метод setCustomUserClaims() возвращает ненулевое Обещание, содержащее void (и ничто иное!).

Вы можете сделать следующее, если хотите проверить через Журнал, что утверждение имеетбыл правильно установлен.

exports.addDefaultUserRole = functions.auth.user().onCreate((user) => {

    let uid = user.uid;

    //add custom claims
    return admin.auth().setCustomUserClaims(uid,{
        isAdmin: true
    })
    .then(() => {
         //Interesting to note: we need to re-fetch the userRecord, as the user variable **does not** hold the claim
         return admin.auth().getUser(uid);
    })
    .then(userRecord => {
        console.log(uid);
        console.log(userRecord.customClaims.isAdmin);
        return null;
    }); 
});

Наконец, обратите внимание, что добавление пользовательских утверждений при создании пользователя вовсе не является «плохой практикой»!Это имеет смысл делать при создании пользователя, когда вы знаете, какие претензии нужно установить.

...