Tax is added directly to product for sale
Auth guard and auth service simplified and fixed so that user is updated upon login Home component changed to use square buttons Fixed showing the totals in the bill ng linted the project
This commit is contained in:
@ -1,10 +1,10 @@
|
||||
import { Injectable } from '@angular/core';
|
||||
import { HttpClient, HttpHeaders } from '@angular/common/http';
|
||||
import { Observable } from 'rxjs/internal/Observable';
|
||||
import { catchError, tap } from 'rxjs/operators';
|
||||
import { Subject } from 'rxjs/internal/Subject';
|
||||
import { catchError, map, tap } from 'rxjs/operators';
|
||||
import { ErrorLoggerService } from '../core/error-logger.service';
|
||||
import { User } from '../core/user';
|
||||
import { merge, Subject } from 'rxjs';
|
||||
|
||||
|
||||
const httpOptions = {
|
||||
@ -19,22 +19,18 @@ const checkUrl = '/v1/auth';
|
||||
providedIn: 'root'
|
||||
})
|
||||
export class AuthService {
|
||||
public userObservable = new Subject<User>();
|
||||
|
||||
private readonly userSubject: Subject<User>;
|
||||
private user: User;
|
||||
public userObservable: Observable<User>;
|
||||
constructor(private http: HttpClient, private log: ErrorLoggerService) {
|
||||
this.check().subscribe();
|
||||
this.userSubject = new Subject<User>();
|
||||
this.userObservable = merge(this.checkObserver(), this.userSubject).pipe(
|
||||
tap(x => this.user = x)
|
||||
);
|
||||
}
|
||||
|
||||
private _user: User;
|
||||
|
||||
get user() {
|
||||
return this._user;
|
||||
}
|
||||
|
||||
set user(user: User) {
|
||||
this._user = user;
|
||||
this.log.handleError('AuthService', 'Set User', user);
|
||||
this.userObservable.next(user);
|
||||
checkObserver(): Observable<User> {
|
||||
return <Observable<User>>this.http.get<User>(checkUrl, httpOptions);
|
||||
}
|
||||
|
||||
login(name: string, password: string, otp?: string, clientName?: string): Observable<any> {
|
||||
@ -49,29 +45,20 @@ export class AuthService {
|
||||
|
||||
return this.http.post(loginUrl, data, httpOptions)
|
||||
.pipe(
|
||||
tap((user: User) => this.user = user),
|
||||
tap((user: User) => this.userSubject.next(user)),
|
||||
catchError(this.log.handleError('AuthService', 'login'))
|
||||
);
|
||||
}
|
||||
|
||||
logout(): Observable<any> {
|
||||
return this.http.post(logoutUrl, {}, httpOptions)
|
||||
logout(): Observable<boolean> {
|
||||
return <Observable<boolean>>this.http.post<User>(logoutUrl, {}, httpOptions)
|
||||
.pipe(
|
||||
tap((user: User) => this.user = user),
|
||||
catchError(this.log.handleError('AuthService', 'logout'))
|
||||
tap((user: User) => this.userSubject.next(user)),
|
||||
map(() => true)
|
||||
);
|
||||
}
|
||||
|
||||
check(): Observable<any> {
|
||||
return this.http.get(checkUrl, httpOptions)
|
||||
.pipe(
|
||||
tap((user: User) => this.user = user),
|
||||
catchError(this.log.handleError('AuthService', 'check'))
|
||||
);
|
||||
}
|
||||
|
||||
hasPermission(permission: string) : boolean {
|
||||
hasPermission(permission: string): boolean {
|
||||
return this.user !== undefined && this.user.isAuthenticated && this.user.perms.indexOf(permission) !== -1;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user