Роли Firebase Admin SDK - PullRequest
       23

Роли Firebase Admin SDK

0 голосов
/ 18 сентября 2018

Я устанавливаю Firebase Admin SDK в NodeJS, Express API.

Я добавил конечную точку, которая позволяет мне создать пользователя -

  route.post('/create', (req, res) => {
    const { email, password } = req.body

    fbseAdmin.auth().createUser({ email, password })
      .then((userRecord) => {
        res.status(200).json({ userRecord })
      })
  })

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

Я не понимаю, как мне этого добиться? Я думал, возможно, я добавлю запись в базу данных в реальном времени, что-то вроде -

users/uid/roles/<role name>: true

Однако я не уверен, что что-то упустил. Кроме того, если это так, и мне нужно это сделать, я бы сделал что-то вроде -

  route.post('/create', (req, res) => {
    const { email, password } = req.body

    fbseAdmin.auth().createUser({ email, password })
      .then((userRecord) => {
        fbseAdmin.database()
          .ref('users')
          .child(`${userRecord.uid}/roles`)
          .set({
              admin: true
            })

        res.status(200).json({ userRecord })
      })
  })

Это кажется немного хрупким, если не сказать больше.

Кроме того, поскольку эта запись не является частью объекта пользователя, мне нужно будет искать в базе данных в реальном времени каждый раз, когда я хочу это проверить? Это правильно?

1 Ответ

0 голосов
/ 18 сентября 2018

Вы должны посмотреть, как установить пользовательскую претензию к пользователю .

  route.post('/create', (req, res) => {
    const { email, password } = req.body

    fbseAdmin.auth().createUser({ email, password })
      .then((userRecord) => {
        fbseAdmin.auth().setCustomUserClaims(userRecord.uid, { admin: true })
          .then(() => {
            res.status(200).json({ userRecord })
          })
      })
  })
...