Advertisement
BladeMechanics

Login TS

Oct 22nd, 2019
321
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. import { Component, OnInit } from '@angular/core';
  2. import { FormBuilder } from '@angular/forms';
  3. import { AngularFirestore } from '@angular/fire/firestore';
  4. import { Router } from '@angular/router';
  5. import { FirebaseDBMService } from 'src/app/firebase-dbm.service';
  6. import Joi from '@hapi/joi';
  7. import bcryptjs from 'bcryptjs';
  8.  
  9. @Component({
  10.   selector: 'app-login',
  11.   templateUrl: './login.component.html',
  12.   styleUrls: ['./login.component.css']
  13. })
  14. export class LoginComponent implements OnInit {
  15.   private loginSchema = Joi.object(
  16.     {
  17.     Email: Joi.string().required(),
  18.     Password: Joi.string()
  19.       .min(3)
  20.       .required()
  21.     }
  22.   );
  23.  
  24.   private loginForm;
  25.  
  26.   constructor(
  27.     private formBuilder: FormBuilder,
  28.     private firestore: AngularFirestore,
  29.     private db: FirebaseDBMService,
  30.     private router: Router
  31.   ) {
  32.     this.loginForm = this.formBuilder.group({
  33.       email: '',
  34.       password: ''
  35.     });
  36.   }
  37.  
  38.  
  39.  
  40.   ngOnInit(): void {}
  41.  
  42.   onSubmit(userData) {
  43.     const user = {
  44.       Email: userData.email,
  45.       Password: userData.password
  46.     };
  47.     const { error } = this.loginSchema.validate(user);
  48.     if (error !== undefined) {
  49.       return alert(error.details[0].message);
  50.     }
  51.     let retData;
  52.     this.firestore
  53.       .collection('users')
  54.       .doc(userData.email)
  55.       .ref.get()
  56.       .then((doc) => {
  57.         if (doc.exists) {
  58.           return (retData = doc.data());
  59.         } else {
  60.           throw new Error('User not found');
  61.         }
  62.       })
  63.       .then(async () => {
  64.         const validPass = await bcryptjs.compare(user.Password, retData.Password);
  65.         if (!validPass) {
  66.           throw new Error('Invalid Password');
  67.         } else {
  68.           // successful login
  69.           sessionStorage.setItem('loggedIn', 'true');
  70.           sessionStorage.setItem(
  71.             'userData',
  72.             JSON.stringify({ username: user.Email, isAdmin: retData.isAdmin })
  73.           );
  74.           this.db.getDestinations();
  75.           this.router.navigate(['/'], { skipLocationChange: true });
  76.         }
  77.       })
  78.       .catch((error) => {
  79.         alert(
  80.           error
  81.         );
  82.       });
  83.   }
  84.  
  85.   onReset() {
  86.     const resetForm = document.getElementById('loginForm') as HTMLFormElement;
  87.     resetForm.reset();
  88.   }
  89. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement