1

Я пытаюсь показать шаблон dom-if только некоторым пользователям, но я не знаю, как это сделать. Вот псевдокод, что я пытаюсь сделать:Dom-if по роли пользователя с полимером и firebase с использованием firebase-auth и google как провайдера

<template is="dom-if" if="{{user.isAdmin}}" restamp="true"> 
     <hr /> 
     <h1>Add new conference:</h1> 
     <paper-input 
     id="title" 
     label="Título" 
     type="text" 
     name="title"> 
    </paper-input> 
    <paper-fab id="saveFab" icon="cloud-upload" on-tap="add"></paper-fab> 
</template> 
<script> 
     Polymer({ 
      is: 'my-conferences', 
      properties: { 
       data: Array, 
       user: Object, 
      }, 

...

Где «пользователь» является объектом, который я получил от <firebase-auth> элемента. Что-то вроде user.isAdmin - это то, чего я хотел бы достичь.

Любые идеи? Спасибо!

+0

Не могли бы вы разместить полный пример своего кода? В настоящее время я не вижу 'dom-module' для вашего элемента' my-конференций'. Если у вас его нет, то это ваша проблема. Если у вас это есть, проблема кроется в другом месте, и нам нужно увидеть больше вашего кода, чтобы его проанализировать. – alesc

+0

У меня есть структура полимерных элементов по умолчанию (включая dom-модуль). Здесь весь исходный код: https://github.com/zolastro/HackersWeekMalaga/blob/master/src/my-app/my-conferences.html – Zolastro

+0

Как вы аутентифицируете своего администратора? какой тип аутентификации вы используете с firebase? , возможно, смотрите здесь: http://stackoverflow.com/questions/17607101/firebase-authenticate-as-admin – Niklas

ответ

0

вот как вы могли это сделать.

  1. Создайте запись пользователя на вашей базе с тем же идентификатором.

затем:

<firebase-auth id="auth" provider="google" user="{{auth}}" on-error="showError"> 
</firebase-auth> 

<app-user 
    uid="[[auth.uid]]" 
    user="{{user}}"></app-user> 

App элемент пользователь

<script> 
    (function() { 
     'use strict'; 
     Polymer({ 
      is: 'app-user', 

      properties: { 
       uid: { 
        type: String, 
        reflectToAttribute: true, 
        notify: true, 
        observer: '_uidChanged' 
       }, 
       user: { 
        type: Object, 
        value: null, 
        notify: true 
       } 
      }, 

      _uidChanged: function (uid) { 

       if (this.uid) { 
        firebase.database().ref('/users/' + uid).once('value', function(snapshot) { 
         if (snapshot.val()) { 
          this.user = snapshot.val(); 
         } 
        }.bind(this)); 

       } 
      } 
     }); 
    })(); 
</script> 

дайте мне знать, если вам нужна дополнительная помощь.

Смежные вопросы