Функция входа в систему, чтобы узнать, настроил ли пользователь профиль или нет - PullRequest
0 голосов
/ 26 мая 2018

Итак, у меня есть следующий код для моего LoginPage.

import { Component } from '@angular/core';
import { NavController } from 'ionic-angular';
import { User } from '../../models/user';
import { AngularFireAuth } from 'angularfire2/auth';
import { AlertController } from 'ionic-angular';

import { RegisterPage } from '../../pages/register/register';
import { HomePage } from '../../pages/home/home';
import { ProfileSetupPage } from '../../pages/profiles/profile-setup/profile-setup';

@Component({
  selector: 'page-login',
  templateUrl: 'login.html'
})
export class LoginPage {

  user = {} as User;

  constructor(private afAuth : AngularFireAuth, public navCtrl: NavController, public alertCon: AlertController) {

  }

  onGoToRegister(){
    this.navCtrl.push(RegisterPage);
  }

  showInvalidUserAlert(){
    let alert = this.alertCon.create({
      title: 'Invalid Login',
      subTitle: 'Sorry about that! Try logging in again',
      buttons: ['Got it']
    });
    alert.present();
  }

  async onLogin(user: User){
      this.afAuth.auth.signInWithEmailAndPassword(user.email, user.password)
      .then(res => {
        this.navCtrl.setRoot(ProfileSetupPage);
      }, err => {
        let msg;
        switch (err.code){
          case "auth/wrong-password":
            msg = "Email or Password is incorrect";
            break;
          case "auth/user-not-found":
            msg = "User not found"
            break;
          case "auth/invalid-email":
            msg = "Oops! Invalid email. Please try again"
            break;
        }
        alert(msg);
      });
  }

  onLogout(){
    this.afAuth.auth.signOut();
  }

}

Моя функция onLogin принимает значения из модели User, а затем проверяет эти учетные данные и, если они верны, перенаправит вас кProfileSetupPage.Это правильный рабочий процесс, если они являются новым пользователем и еще не создали свой профиль, однако, если они являются существующим пользователем, они должны просто пройти проверку подлинности и быть перенаправлены на домашнюю страницу.Каков наилучший способ справиться с этим?Должен ли я просто включить другое значение в модель User, которое является логическим, и переключить его таким образом?Или, может быть, у ионной / пожарной базы есть более простое решение.Спасибо за помощь

1 Ответ

0 голосов
/ 26 мая 2018

Один простой способ достижения вашей цели - сохранить токен в localStorage или Native Storage, когда пользователь впервые регистрируется, а затем проверить этот токен при открытии приложения.Если токен существует, вы можете перенаправить пользователя с помощью NavController

 import { RegisterPage } from '../../pages/register/register';
    import { HomePage } from '../../pages/home/home';
    import { ProfileSetupPage } from '../../pages/profiles/profile-setup/profile-setup';

    @Component({
      selector: 'page-login',
      templateUrl: 'login.html'
    })
    export class LoginPage {

      user = {} as User;

      constructor(private afAuth : AngularFireAuth, public navCtrl: NavController, public alertCon: AlertController) {
//Conditional Redirect On Constructor Call
if(window.localStorage.getItem('userExists')) navCtrl.setRoot(HomePage);

      }

      onGoToRegister(){
        this.navCtrl.push(RegisterPage);
      }

      showInvalidUserAlert(){
        let alert = this.alertCon.create({
          title: 'Invalid Login',
          subTitle: 'Sorry about that! Try logging in again',
          buttons: ['Got it']
        });
        alert.present();
      }

      async onLogin(user: User){
          this.afAuth.auth.signInWithEmailAndPassword(user.email, user.password)
          .then(res => {
    window.localStorage.setItem('userExists', JSON.stringify(res)};
            this.navCtrl.setRoot(ProfileSetupPage);

           }, err => {
            let msg;
            switch (err.code){
              case "auth/wrong-password":
                msg = "Email or Password is incorrect";
                break;
              case "auth/user-not-found":
                msg = "User not found"
                break;
              case "auth/invalid-email":
                msg = "Oops! Invalid email. Please try again"
                break;
            }
            alert(msg);
          });
      }

      onLogout(){
        this.afAuth.auth.signOut();
      }

    }

. Вы должны обязательно удалить сохраненный элемент из LocalStorage, когда пользователь выйдет из системы, в противном случае он будет продолжать иметь доступ кДомашняя страница после выхода из системы,

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