Управление доступом на основе ролей с помощью Firebase - PullRequest
0 голосов
/ 10 января 2019

Я пытаюсь создать контроль доступа пользователей на основе ролей с помощью Firebase, чтобы разрешить доступ к маршруту, если пользователь прошел проверку подлинности && admin ..., и я пробую это с этим учебным пособием: https://angularfirebase.com/lessons/role-based-permissions-and-authorization-with-firebase-auth/ но я использую угловой 7, Я получаю синтаксическую ошибку на "Observable.of (null)" а также ".subscribe (user => { this.user.next (пользователь) "

my My AuthService:

import { Injectable } from '@angular/core';
import { User } from 'src/app/register/user';
import { AngularFireAuth } from '@angular/fire/auth';
import { map } from "rxjs/operators";
import { auth } from 'firebase';
import { Router } from "@angular/router";
import { AngularFirestore } from '@angular/fire/firestore';
import { Observable } from 'rxjs';
import { switchMap } from 'rxjs/operators';
//import * as firebase from 'firebase/app';
import { AngularFireDatabase } from '@angular/fire/database';
import { BehaviorSubject } from 'rxjs/internal/BehaviorSubject';
import { observable } from 'rxjs/internal/symbol/observable';

@Injectable({
  providedIn: 'root'
})
export class AuthService {
  user: BehaviorSubject<User> = new BehaviorSubject(null)

  constructor(public db: AngularFireDatabase, private fire: AngularFireAuth) {

    this.fire.authState.pipe(switchMap(auth => {
      if (auth) {
        /// signed in
        return this.db.object('users/${auth.uid}')
      } else {
        /// not signed in
        return Observable.of(null)
      }
    }).subscribe(user => {
      this.user.next(user)
    }))


  }

Моя модель пользователя:

export interface Roles {
    reqUser: boolean;
    volunteer?: boolean;
    admin?:  boolean;
  }

  export class User {
    uid: string;
    email:    string;
    username: string;
    password : string;
    roles:    Roles;
    fullname : string;

    constructor(auth) {
      this.email    = auth.email
      this.uid = auth.uid
      this.roles    = { reqUser: true }
    }
  }

1 Ответ

0 голосов
/ 10 января 2019

попробуйте это return of(null) вместо return Observable.of(null), это решит ошибку синтаксической ошибки на Observable.of(null), которую вы в настоящее время получаете

и для вашей второй ошибки в функции подписки просто попробуйте этот код

subscribe(user => this.user = user)

вместо

subscribe(user => {
  this.user.next(user)
}

надеюсь, что это спасет вашу ошибку, а если не ответит мне вашими ошибками и кодом

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