zoukankan      html  css  js  c++  java
  • [AngularFire2] Signup and logout


    import {AuthProviders, FirebaseAuthState, FirebaseAuth, AuthMethods} from "angularfire2";
    import {Injectable} from "@angular/core";
    import {Subject, BehaviorSubject} from "rxjs";
    import {AuthInfo} from "./AuthInfo";

    @Injectable()
    export class AuthService {

    static UNKNOW_USER = new AuthInfo(null);

    private authState: FirebaseAuthState = null;
    public authInfo$: BehaviorSubject<AuthInfo> = new BehaviorSubject<AuthInfo>(AuthService.UNKNOW_USER);

    constructor(public auth$: FirebaseAuth) {
    auth$.subscribe((state: FirebaseAuthState) => {
    this.authState = state;
    });
    }

    signUp(email, password){
    return this.fromFirebaseAuthPromise(this.auth$.createUser(
    {email, password}
    ));
    }

    login(email, password) {

    return this.fromFirebaseAuthPromise(this.auth$.login({
    email, password
    },{
    method: AuthMethods.Password,
    provider: AuthProviders.Password
    }));
    }

    logout(){
    this.auth$.logout();
    this.authInfo$.next(AuthService.UNKNOW_USER);
    }

    fromFirebaseAuthPromise(promise) {
    const subject = new Subject<any>();

    promise.then((res) => {
    const uid = this.authState.uid;
    const authInfo = new AuthInfo(uid);
    this.authInfo$.next(authInfo);
    subject.next(res);
    subject.complete();
    }, err => {
    this.authInfo$.error(err);
    subject.error(err);
    subject.complete();
    });

    return subject.asObservable();
    }
    }
  • 相关阅读:
    第八次作业
    设计一款给爸爸妈妈用的手机
    第五次作业
    第四次作业(项目分析)
    第二次作业(个人项目实践)
    即时通讯软件的发展演变
    C++用法的学习心得
    JavaScript(变量、作用域和内存问题)
    一、Java和JavaScript
    使用Hyper-V创建虚拟机
  • 原文地址:https://www.cnblogs.com/Answer1215/p/6087733.html
Copyright © 2011-2022 走看看