войти из базы данных Firebase в реальном времени без аутентификации - PullRequest
0 голосов
/ 21 января 2020

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

Я приложил код, просмотрите меня.

loginComponent. html

<div class="form-group">
                <input type="text" id="empid" [(ngModel)]="empid" class="form-control m-2" placeholder="Employee Id">
            </div>
            <div class="form-group" *ngIf="!isForgotPassword">
                <input type="password" class="form-control m-2" [(ngModel)]="passwordInput" placeholder="Password" id="password">
            </div>
            <div class="form-group" *ngIf="!isForgotPassword">
            <span *ngIf="selectedVal == 'login'; else elseBlock">
                <button type="button" class="btn btn-orange btn-block m-2" (click)="loginUser()">Login</button>
            </span>

loginComponent.ts

 emailInput: string;
 passwordInput: string;
 isForgotPassword: boolean;
 empId : string;
 userDetails: any;

constructor(
 private userService: UserService,
 private router: Router
) {
 this.selectedVal = 'login';
 this.isForgotPassword = false;
}

loginUser(){
  this.userService.login(this.empId, this.passwordInput);
}

UserService.ts

import { Injectable } from '@angular/core';
import { AngularFireDatabase} from 'angularfire2/database';
import { User } from '../user.model'
import { Router } from '@angular/router';
import * as firebase from 'firebase';

@Injectable({
  providedIn: 'root'
  })
 export class UserService {
  user : User[];
  ref = 'Batch'
  batch = 'DEC2019'

  constructor(
     public af: AngularFireDatabase,
     public router: Router
  ) { }

  login(empId: string, password: string){
     return this.af.database.ref('Users/').child(empId).once('value')
    .then(snapshot=>{ 

   })
   .catch(err =>{
     console.log('Something went wrong',err.message)
   })
 }

1 Ответ

0 голосов
/ 21 января 2020

Вы используете angularfire, вы можете сделать следующее в классе обслуживания:

items: Observable<any[]>;
...

 login(empId: string){
     return this.itemRef = db.object('item/' + empId).snapshotChanges();
 }

Затем в компоненте вы можете subscribe до observable:

loginUser(){
  this.userService.login(this.empId).subscribe(action => {
  console.log(action.type);
  console.log(action.key)
  console.log(action.payload.val())
 });
}

action.payload.val() будет содержать ваши данные, вы, вероятно, сможете восстановить пароль, выполнив action.payload.val().password, если у вас есть password в качестве атрибута в базе данных. Затем вы можете проверить, совпадает ли полученный пароль с passwordInput. Вам, вероятно, следует использовать reactive-form, поскольку вы можете легко сделать validation с ним:

https://angular.io/guide/reactive-forms#simple -form-validation

https://github.com/angular/angularfire/blob/master/docs/rtdb/objects.md

...