Skip to content

Commit f18533a

Browse files
committed
feat(package): added authentication providers' component
1 parent 69ccdd1 commit f18533a

9 files changed

+150
-17
lines changed

Diff for: src/auth/module/components/auth/auth.component.html

+1
Original file line numberDiff line numberDiff line change
@@ -300,3 +300,4 @@
300300

301301
</ngb-tab>
302302
</ngb-tabset>
303+
<ngb-auth-firebaseui-providers class="mt-2"></ngb-auth-firebaseui-providers>

Diff for: src/auth/module/components/auth/auth.component.spec.ts

+16-5
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,18 @@ import {async, ComponentFixture, TestBed} from '@angular/core/testing';
22
import {DebugElement, EventEmitter} from '@angular/core';
33

44
import {AngularFireModule} from 'angularfire2';
5-
import {AngularFireAuth, AngularFireAuthModule} from 'angularfire2/auth';
5+
import {AngularFireAuth} from 'angularfire2/auth';
66
import {BehaviorSubject} from 'rxjs/internal/BehaviorSubject';
77
import {AngularFirestore} from 'angularfire2/firestore';
88
import {HttpClientTestingModule} from '@angular/common/http/testing';
9-
import {AuthComponent, AuthProcessService, FirestoreSyncService} from '../../../..';
10-
import {NgBootstrapAuthFirebaseUIConfigToken} from '../../ngb-auth-firebase-u-i.module';
11-
import {defaultAuthFirebaseUIConfig} from '../../interfaces/config.interface';
9+
import {
10+
AuthComponent,
11+
AuthProcessService,
12+
AuthProvidersComponent,
13+
EmailConfirmationComponent,
14+
FirestoreSyncService,
15+
ProgressBarComponent
16+
} from '../../../..';
1217
import {FormsModule, ReactiveFormsModule} from '@angular/forms';
1318
import {NgbModule} from '@ng-bootstrap/ng-bootstrap';
1419

@@ -88,7 +93,13 @@ describe('AuthProvidersComponent', function () {
8893
FormsModule,
8994
ReactiveFormsModule
9095
],
91-
declarations: [AuthComponent],
96+
declarations:
97+
[
98+
AuthComponent,
99+
AuthProvidersComponent,
100+
EmailConfirmationComponent,
101+
ProgressBarComponent
102+
],
92103
providers: [
93104
HttpClientTestingModule,
94105
FirestoreSyncService,
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
import {Component} from '@angular/core';
2+
3+
@Component({
4+
selector: 'ngb-auth-firebaseui-progress-bar',
5+
templateUrl: './progress-bar.component.html',
6+
styleUrls: ['./progress-bar.component.scss']
7+
})
8+
export class ProgressBarComponent {
9+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
<div class="container">
2+
3+
<div class="row ">
4+
<button *ngIf="providers === authProvider.ALL || providers.includes(authProvider.Google)"
5+
class="btn btn-google my-1 mx-sm-0 col-md-3 col-sm-6 col-xs-12 text-center"
6+
(click)="authProcess.signInWith(authProvider.Google)">
7+
<span class="fa fa-google"></span>
8+
Google
9+
</button>
10+
<button *ngIf="providers === authProvider.ALL || providers.includes(authProvider.Facebook)"
11+
class="btn btn-facebook my-1 mx-sm-0 col-md-3 col-sm-6 col-xs-12 text-center"
12+
(click)="authProcess.signInWith(authProvider.Facebook)">
13+
<span class="fa fa-facebook"></span>
14+
Facebook
15+
</button>
16+
<button *ngIf="providers === authProvider.ALL || providers.includes(authProvider.Twitter)"
17+
class="btn btn-twitter my-1 mx-sm-0 col-md-3 col-sm-6 col-xs-12 text-center"
18+
(click)="authProcess.signInWith(authProvider.Twitter)">
19+
<span class="fa fa-twitter"></span>
20+
Twitter
21+
</button>
22+
<button *ngIf="providers === authProvider.ALL || providers.includes(authProvider.Github)"
23+
class="btn btn-github my-1 mx-sm-0 col-md-3 col-sm-6 col-xs-12 text-center"
24+
(click)="authProcess.signInWith(authProvider.Github)">
25+
<span class="fa fa-github"></span>
26+
GitHub
27+
</button>
28+
</div>
29+
30+
</div>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
$google: #db4437;
2+
$facebook: #385899;
3+
$facebook-hover: #2d4373;
4+
$twitter: #1da1f2;
5+
$twitter-hover: #2795e9;
6+
$github: #444;
7+
$github-hover: #000000;
8+
9+
:host {
10+
display: block;
11+
}
12+
13+
.space-full-xs {
14+
width: 100%;
15+
margin: .4rem;
16+
}
17+
18+
.btn {
19+
color: white;
20+
}
21+
22+
.btn-google {
23+
background-color: $google;
24+
}
25+
26+
.btn-google:hover {
27+
background-color: #c23321;
28+
}
29+
30+
.btn-facebook {
31+
background-color: $facebook;
32+
}
33+
34+
.btn-facebook:hover {
35+
background-color: $facebook-hover;
36+
}
37+
38+
.btn-twitter {
39+
background-color: $twitter;
40+
}
41+
42+
.btn-twitter:hover {
43+
background-color: $twitter-hover;
44+
}
45+
46+
.btn-github {
47+
background-color: $github;
48+
}
49+
50+
.btn-github:hover {
51+
background-color: $github-hover;
52+
}
53+
54+
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
import {Component, Input} from '@angular/core';
2+
import {AuthProcessService, AuthProvider} from '../../services/auth-process.service';
3+
4+
export enum Layout {
5+
ROW = 'row',
6+
COLUMN = 'column'
7+
}
8+
9+
@Component({
10+
selector: 'ngb-auth-firebaseui-providers',
11+
templateUrl: 'auth.providers.component.html',
12+
styleUrls: ['auth.providers.component.scss']
13+
})
14+
15+
export class AuthProvidersComponent {
16+
17+
@Input()
18+
layout: string = Layout.ROW;
19+
20+
@Input()
21+
providers: string[] | string = AuthProvider.ALL; // google, facebook, twitter, github
22+
23+
authProvider = AuthProvider;
24+
25+
constructor(public authProcess: AuthProcessService) {
26+
}
27+
28+
}

Diff for: src/auth/module/interfaces/config.interface.ts

-5
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,3 @@
1-
import * as firebase from 'firebase';
2-
import GoogleAuthProvider = firebase.auth.GoogleAuthProvider;
3-
import FacebookAuthProvider = firebase.auth.FacebookAuthProvider;
4-
import TwitterAuthProvider = firebase.auth.TwitterAuthProvider;
5-
import GithubAuthProvider = firebase.auth.GithubAuthProvider;
61
import AuthProvider = firebase.auth.AuthProvider;
72

83
export interface NgBootstrapAuthFirebaseUIConfig {

Diff for: src/auth/module/ngb-auth-firebase-u-i.module.ts

+4
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,14 @@ import {AngularFireAuthModule} from 'angularfire2/auth';
1313
import {NgbModule} from '@ng-bootstrap/ng-bootstrap';
1414
import {EmailConfirmationComponent} from './components/email-confirmation/email-confirmation.component';
1515
import {ProgressBarComponent} from './components/progress-bar/progress-bar.component';
16+
import {AuthProvidersComponent} from './components/providers/auth.providers.component';
1617

1718
// Export module's public API
1819
// components
1920
export {AuthComponent} from './components/auth/auth.component';
2021
export {EmailConfirmationComponent} from './components/email-confirmation/email-confirmation.component';
2122
export {ProgressBarComponent} from './components/progress-bar/progress-bar.component';
23+
export {AuthProvidersComponent} from './components/providers/auth.providers.component';
2224

2325
// services
2426
export {AuthProcessService, AuthProvider} from './services/auth-process.service';
@@ -42,6 +44,7 @@ export const NgBootstrapAuthFirebaseUIConfigToken = new InjectionToken<NgBootstr
4244
exports:
4345
[
4446
AuthComponent,
47+
AuthProvidersComponent,
4548
EmailConfirmationComponent,
4649
ProgressBarComponent,
4750
AngularFireAuthModule,
@@ -50,6 +53,7 @@ export const NgBootstrapAuthFirebaseUIConfigToken = new InjectionToken<NgBootstr
5053
declarations:
5154
[
5255
AuthComponent,
56+
AuthProvidersComponent,
5357
EmailConfirmationComponent,
5458
ProgressBarComponent
5559
]

Diff for: src/auth/module/services/auth-process.service.ts

+8-7
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
1-
import {EventEmitter, Inject, Injectable} from '@angular/core';
1+
import {EventEmitter, Injectable} from '@angular/core';
22
import {AngularFireAuth} from 'angularfire2/auth';
33
import {ISignInProcess, ISignUpProcess} from '../interfaces/main.interface';
44
import {FirestoreSyncService} from './firestore-sync.service';
55
import * as firebase from 'firebase';
66
import {User, UserInfo} from 'firebase';
77

88
import {Accounts} from '../components/enums';
9-
import {NgBootstrapAuthFirebaseUIConfig, NgBootstrapAuthFirebaseUIConfigToken} from '../../..';
9+
1010
// import User = firebase.User;
1111
import GoogleAuthProvider = firebase.auth.GoogleAuthProvider;
1212
import FacebookAuthProvider = firebase.auth.FacebookAuthProvider;
@@ -35,7 +35,6 @@ export class AuthProcessService implements ISignInProcess, ISignUpProcess {
3535
emailToConfirm: string;
3636

3737
constructor(public auth: AngularFireAuth,
38-
@Inject(NgBootstrapAuthFirebaseUIConfigToken) private config: NgBootstrapAuthFirebaseUIConfig,
3938
private _fireStoreService: FirestoreSyncService) {
4039
}
4140

@@ -141,10 +140,12 @@ export class AuthProcessService implements ISignInProcess, ISignUpProcess {
141140
await user.sendEmailVerification();
142141
await this.updateProfile(name, user.photoURL);
143142
this.emailConfirmationSent = true;
143+
console.log('emailConfirmationSent = ', this.emailConfirmationSent);
144144
this.emailToConfirm = email;
145145

146146
await this.handleSuccess(userCredential);
147147
} catch (err) {
148+
console.error(err);
148149
this.handleError(err);
149150
} finally {
150151
this.isLoading = false;
@@ -206,17 +207,17 @@ export class AuthProcessService implements ISignInProcess, ISignUpProcess {
206207

207208
await this._fireStoreService.updateUserData(this.parseUserInfo(userCredential.user));
208209

209-
if (this.config.toastMessageOnAuthSuccess) {
210+
// if (this.config.toastMessageOnAuthSuccess) {
210211
// this._snackBar.open(`Hallo ${userCredential.user.displayName ? userCredential.user.displayName : ''}!`,
211212
// 'OK', {duration: 5000});
212-
}
213+
// }
213214
this.onSuccessEmitter.next(userCredential.user);
214215
}
215216

216217
handleError(error: any) {
217-
if (this.config.toastMessageOnAuthError) {
218+
// if (this.config.toastMessageOnAuthError) {
218219
// this._snackBar.open(error.message, 'OK', {duration: 5000});
219-
}
220+
// }
220221
console.error(error);
221222
this.onErrorEmitter.next(error);
222223
}

0 commit comments

Comments
 (0)