-
Notifications
You must be signed in to change notification settings - Fork 17
/
auth.service.ts
78 lines (66 loc) · 2.18 KB
/
auth.service.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
/* -----------------------------------|
*| Auth Service - Firebase
*/
import { Injectable } from '@angular/core';
import { AngularFire, FirebaseAuthState,
FirebaseObjectObservable,
AuthMethods, AuthProviders } from 'angularfire2';
import { Observable } from 'rxjs/Observable';
import { Subject } from 'rxjs/Subject';
import { Logger } from '../shared/logger.service';
import { Router } from '@angular/router'
import { FirebaseDbService } from '../shared/firebase-db.service';
@Injectable()
export class AuthService {
private authState: FirebaseAuthState;
private userObj$: FirebaseObjectObservable<any>;
constructor(
public af: AngularFire,
private _log: Logger,
private _FireDb: FirebaseDbService,
private router: Router
) {
this.af.auth.subscribe(auth => {
this._log['log']( "Auth State Updated: ", auth )
this.authState = auth;
if(!auth) this.login();
if(!auth.anonymous) this.userObj$ = this._FireDb.getUser(this.authState.uid);
});
}
login(provider = ''): void {
this.af.auth.login( this.getAuthProvider(provider)).then((success) => {
this._log['log']( "Logged In: ", success )
}).catch((err) => {
this._log['warn']( "Error Logging In: ", err )
});
}
logout(): void {
this.af.auth.logout();
this.router.navigate(['']);
}
getUID(): string {
//this._log['log']( 'getUID():', this.authState );
return this.authState.uid;
}
getUserName(): string {
//this._log['log']( 'getUserName():', this.authState.auth );
return this.authState.auth.displayName || '';
}
getUserPhoto(){
return this.authState.auth.photoURL || '';
}
getAuthProvider(provider: string): {} {
var authProvider = {method: AuthMethods.Redirect};
switch (provider){
case 'Google': authProvider['provider'] = AuthProviders.Google; break;
case 'Github': authProvider['provider'] = AuthProviders.Github; break;
case 'Facebook': authProvider['provider'] = AuthProviders.Facebook; break;
case 'Twitter': authProvider['provider'] = AuthProviders.Twitter; break;
default: return '{}';
}
return authProvider;
}
getAuthState(): boolean {
return this.authState !== null;
}
}