Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import { Injectable } from '@angular/core';
- import { HttpClient, HttpErrorResponse, HttpHeaders, HttpParams } from '@angular/common/http';
- import { throwError, Observable } from 'rxjs';
- import { map, catchError } from 'rxjs/operators';
- import { Restaurant } from '../models/Restaurant';
- import { LocalStorage } from '@ngx-pwa/local-storage';
- @Injectable({
- providedIn: 'root'
- })
- export class AuthService {
- loginUrl = 'xxxxxxxxxx';
- errorData: {};
- constructor(private http: HttpClient) { }
- redirectUrl: string;
- login(email: string, password: string) {
- var postData = {email: email, password: password};
- return this.http.post<Restaurant>(this.loginUrl, postData)
- .pipe(map(restaurant => {
- if (restaurant) {
- localStorage.setItem('currentRestaurant', JSON.stringify(restaurant));
- return restaurant;
- }
- }),
- catchError(this.handleError)
- );
- }
- isLoggedIn() {
- if (localStorage.getItem('currentRestaurant')) {
- return true;
- }
- return false;
- }
- getAuthorizationToken() {
- const currentRestaurant = JSON.parse(localStorage.getItem('currentRestaurant'));
- return currentRestaurant.token;
- }
- logout() {
- localStorage.removeItem('currentRestaurant');
- }
- private handleError(error: HttpErrorResponse) {
- if (error.error instanceof ErrorEvent) {
- // A client-side or network error occurred. Handle it accordingly.
- console.error('An error occurred:', error.error.message);
- } else {
- // The backend returned an unsuccessful response code.
- // The response body may contain clues as to what went wrong.
- console.error(`Backend returned code ${error.status}, ` + `body was: ${error.error}`);
- }
- // return an observable with a user-facing error message
- this.errorData = {
- errorTitle: 'Oops! Request for document failed',
- errorDesc: 'Something bad happened. Please try again later.'
- };
- return throwError(this.errorData);
- }
- currRestaurant: Restaurant = JSON.parse(localStorage.getItem('currentRestaurant'));
- currID = this. currRestaurant.id;
- }
- import { Component, OnInit } from '@angular/core';
- import { FormBuilder, Validators, FormGroup } from '@angular/forms';
- import { Router } from '@angular/router';
- import { AuthService } from '../services/auth.service';
- @Component({
- selector: 'app-login',
- templateUrl: './login.component.html',
- styleUrls: ['./login.component.scss']
- })
- export class LoginComponent implements OnInit {
- loginForm: FormGroup;
- submitted = false;
- returnUrl: string;
- error: {};
- loginError: string;
- constructor(
- private fb: FormBuilder,
- private router: Router,
- private authService: AuthService
- ) { }
- ngOnInit() {
- this.loginForm = this.fb.group({
- email: ['', Validators.required],
- password: ['', Validators.required]
- });
- this.authService.logout();
- }
- get email() { return this.loginForm.get('email'); }
- get password() { return this.loginForm.get('password'); }
- onSubmit() {
- this.submitted = true;
- this.authService.login( this.email.value, this.password.value).subscribe((data) => {
- if (this.authService.isLoggedIn) {
- const redirect = this.authService.redirectUrl ? this.authService.redirectUrl : '/';
- this.router.navigate([redirect]);
- } else {
- this.loginError = 'email or password is incorrect.';
- }
- },
- error => this.error = error
- );
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement