@@ -8,6 +8,7 @@ import { IResponseLogin } from '@interfaces/response.interface';
88import Storage from "@utils/storage.util" ;
99import { User } from '@models/user.model' ;
1010import { SettingService } from './setting.service' ;
11+ import { IModalAuth } from '@interfaces/modal.interface' ;
1112
1213const base_url = environment . base_url ;
1314
@@ -16,8 +17,8 @@ const base_url = environment.base_url;
1617} )
1718export class AuthService {
1819
19- private userActive : User ;
20- public isAuthenticatedEmitter : EventEmitter < boolean > = new EventEmitter ( ) ;
20+ private userActive : User | null ;
21+ public isAuthenticatedEmitter : EventEmitter < IModalAuth > = new EventEmitter ( ) ;
2122
2223 constructor (
2324 private http : HttpClient ,
@@ -36,26 +37,32 @@ export class AuthService {
3637 return ( this . userActive ) ? true : false ;
3738 }
3839
39- showModalAuth ( ) : void {
40+ showModalAuth ( to : 'login' | 'register' | 'init' ) : void {
4041 const isAuth : boolean = this . userActive ? true : false ;
41- this . isAuthenticatedEmitter . emit ( isAuth ) ;
42+ this . isAuthenticatedEmitter . emit ( { isAuth, to } ) ;
4243 }
4344
4445 get getUserActive ( ) : User {
45- return this . userActive ;
46+ return this . userActive as User ;
4647 }
4748
4849 login ( data : ILogin ) : Observable < IResponseLogin > {
4950 const url = `${ base_url } /auth/login` ;
5051 return this . http . post < IResponseLogin > ( url , data ) . pipe ( map ( resp => {
5152 this . setUserActiveInfo ( resp ) ;
52- this . isAuthenticatedEmitter . emit ( true ) ;
53+ this . isAuthenticatedEmitter . emit ( { isAuth : true } ) ;
5354 const { user } = resp ;
5455 this . settingService . setTheme ( user . darkMode ? 'dark' : 'light' ) ;
5556 return resp ;
5657 } ) ) ;
5758 }
5859
60+ logout ( ) : void {
61+ Storage . deleteSessionStorage ( 'x-token' ) ;
62+ this . userActive = null ;
63+ this . isAuthenticatedEmitter . emit ( { isAuth : false , to : 'hide' } ) ;
64+ }
65+
5966 validateToken ( ) {
6067 const url = `${ base_url } /auth/renew` ;
6168 return this . http . get < IResponseLogin > ( url , this . headers ) . pipe ( map ( resp => {
@@ -68,21 +75,23 @@ export class AuthService {
6875 Storage . deleteSessionStorage ( 'x-token' ) ;
6976 Storage . saveSessionStorage ( 'x-token' , resp . token ) ;
7077 this . userActive = resp . user ;
71- this . showModalAuth ( ) ;
78+ this . showModalAuth ( 'init' ) ;
7279 }
7380
7481 signIn ( data : ILogin ) : Observable < Boolean > {
7582 const url = `${ base_url } /user` ;
7683 return this . http . post < IResponseLogin > ( url , data ) . pipe ( map ( resp => {
7784 this . setUserActiveInfo ( resp ) ;
78- this . isAuthenticatedEmitter . emit ( true ) ;
85+ this . isAuthenticatedEmitter . emit ( { isAuth : true } ) ;
7986 return resp . ok ;
8087 } ) )
8188 }
8289
8390 setNewUserInfo ( name : string , lastName : string ) : void {
84- this . userActive . name = name ;
85- this . userActive . lastName = lastName
91+ if ( this . userActive ) {
92+ this . userActive . name = name ;
93+ this . userActive . lastName = lastName
94+ }
8695 }
8796
8897}
0 commit comments