@nowzoo/ngx-firebase-auth
Version:
Angular components for Firebase email-first sign in and out-of-band (oob) actions (reset password, etc).
155 lines (147 loc) • 11.4 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
*/
import { Component, Input, Output, EventEmitter } from '@angular/core';
import { AngularFireAuth } from 'angularfire2/auth';
import { screenAnimation } from '../../shared';
export class OobRecoverEmailComponent {
/**
* @param {?} _afAuth
*/
constructor(_afAuth) {
this._afAuth = _afAuth;
this.success = new EventEmitter();
this.screen = 'wait';
this.submitting = false;
}
/**
* @return {?}
*/
get auth() {
return this._afAuth.auth;
}
/**
* @return {?}
*/
ngOnInit() {
this.auth.checkActionCode(this.oobCode)
.then((result) => {
this.info = result;
this.screen = 'form';
})
.catch((error) => {
this.unhandledError = error;
this.screen = 'error';
});
}
/**
* @return {?}
*/
submit() {
this.auth.applyActionCode(this.oobCode)
.then(() => {
this.screen = 'success';
this.success.emit({
mode: 'recoverEmail',
info: this.info,
user: this.auth.currentUser
});
})
.catch((error) => {
this.unhandledError = error;
this.screen = 'error';
});
}
}
OobRecoverEmailComponent.decorators = [
{ type: Component, args: [{
selector: 'ngx-firebase-auth-oob-recover-email',
template: `
<div *ngIf="'wait' === screen" []="'in'">
<div class="alert alert-secondary">
<i class="fas fa-spin fa-spinner fa-fw" aria-hidden="true"></i>
Please wait...
</div>
</div>
<div *ngIf="'success' === screen" []="'in'">
<div class="alert alert-success">
<i class="fas fa-check fa-fw" aria-hidden="true"></i>
Your email has been changed back to {{info.data.email}};
</div>
</div>
<div *ngIf="screen === 'form'" []="'in'">
<div class="form-group">
<p>
Are you sure you want to change your email back to
{{info.data.email}} from {{info.data.fromEmail}}?
</p>
<button
type="button"
[disabled]="submitting"
(click)="submit()"
class="btn btn-block btn-success">
<i class="fas fa-save fa-fw" aria-hidden="true"></i>
Yes, Continue
</button>
</div>
</div>
<div *ngIf="screen === 'error'" []="'in'">
<div class="alert alert-danger">
<p>
<i class="fas fa-exclamation-triangle fa-fw" aria-hidden="true"></i>
Woops! An error occurred.
</p>
<div [ngSwitch]="unhandledError.code">
<p class="mb-0" *ngSwitchCase="'auth/expired-action-code'">
The recover email link you used has expired.
</p>
<p class="mb-0" *ngSwitchCase="'auth/invalid-action-code'">
The recover email link you used is not valid. This may be because it
has already been used.
</p>
<p class="mb-0" *ngSwitchCase="'auth/user-disabled'">
The account associated with the recover email link you used has been disabled.
</p>
<p class="mb-0" *ngSwitchCase="'auth/user-not-found'">
The account associated with the recover email link you used has been removed.
</p>
<div *ngSwitchDefault>
<p>Code: {{unhandledError.code}}</p>
<p class="mb-0">
Message: {{unhandledError.message}}
</p>
</div>
</div>
</div>
</div>
`,
styles: [``],
animations: [screenAnimation]
},] },
];
/** @nocollapse */
OobRecoverEmailComponent.ctorParameters = () => [
{ type: AngularFireAuth }
];
OobRecoverEmailComponent.propDecorators = {
oobCode: [{ type: Input }],
success: [{ type: Output }]
};
if (false) {
/** @type {?} */
OobRecoverEmailComponent.prototype.oobCode;
/** @type {?} */
OobRecoverEmailComponent.prototype.success;
/** @type {?} */
OobRecoverEmailComponent.prototype.screen;
/** @type {?} */
OobRecoverEmailComponent.prototype.info;
/** @type {?} */
OobRecoverEmailComponent.prototype.submitting;
/** @type {?} */
OobRecoverEmailComponent.prototype.unhandledError;
/** @type {?} */
OobRecoverEmailComponent.prototype._afAuth;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib29iLXJlY292ZXItZW1haWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQG5vd3pvby9uZ3gtZmlyZWJhc2UtYXV0aC8iLCJzb3VyY2VzIjpbImxpYi9vb2Ivb29iLXJlY292ZXItZW1haWwvb29iLXJlY292ZXItZW1haWwuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRS9FLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUdwRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBeUUvQyxNQUFNOzs7O0lBVUosWUFDVTtRQUFBLFlBQU8sR0FBUCxPQUFPO3VCQVI2QyxJQUFJLFlBQVksRUFBRTtzQkFFaEMsTUFBTTswQkFFekMsS0FBSztLQUtiOzs7O0lBRUwsSUFBSSxJQUFJO1FBQ04sTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDO0tBQzFCOzs7O0lBRUQsUUFBUTtRQUVOLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7YUFDcEMsSUFBSSxDQUFDLENBQUMsTUFBMkIsRUFBRSxFQUFFO1lBQ3BDLElBQUksQ0FBQyxJQUFJLEdBQUcsTUFBTSxDQUFDO1lBQ25CLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1NBQ3RCLENBQUM7YUFDRCxLQUFLLENBQUMsQ0FBQyxLQUFpQixFQUFFLEVBQUU7WUFDM0IsSUFBSSxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUM7WUFDNUIsSUFBSSxDQUFDLE1BQU0sR0FBRyxPQUFPLENBQUM7U0FDdkIsQ0FBQyxDQUFDO0tBQ047Ozs7SUFFRCxNQUFNO1FBQ0osSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQzthQUNwQyxJQUFJLENBQUMsR0FBRyxFQUFFO1lBQ1QsSUFBSSxDQUFDLE1BQU0sR0FBRyxTQUFTLENBQUM7WUFDeEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUM7Z0JBQ2hCLElBQUksRUFBRSxjQUFjO2dCQUNwQixJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7Z0JBQ2YsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVzthQUM1QixDQUFDLENBQUM7U0FDSixDQUFDO2FBQ0QsS0FBSyxDQUFDLENBQUMsS0FBaUIsRUFBRSxFQUFFO1lBQzNCLElBQUksQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDO1lBQzVCLElBQUksQ0FBQyxNQUFNLEdBQUcsT0FBTyxDQUFDO1NBQ3ZCLENBQUMsQ0FBQztLQUNOOzs7WUFwSEYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxxQ0FBcUM7Z0JBQy9DLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0FpRVg7Z0JBQ0MsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDO2dCQUNaLFVBQVUsRUFBRSxDQUFDLGVBQWUsQ0FBQzthQUM5Qjs7OztZQTNFUSxlQUFlOzs7c0JBOEVyQixLQUFLO3NCQUNMLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtR3JvdXAsIEZvcm1Db250cm9sLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQW5ndWxhckZpcmVBdXRoIH0gZnJvbSAnYW5ndWxhcmZpcmUyL2F1dGgnO1xuaW1wb3J0IHsgYXV0aCwgVXNlciB9IGZyb20gJ2ZpcmViYXNlL2FwcCc7XG5pbXBvcnQgeyBJTmd4RmlyZWJhc2VBdXRoT29iU3VjY2VzcyB9IGZyb20gJy4uLy4uL3NoYXJlZCc7XG5pbXBvcnQgeyBzY3JlZW5BbmltYXRpb24gfSBmcm9tICcuLi8uLi9zaGFyZWQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICduZ3gtZmlyZWJhc2UtYXV0aC1vb2ItcmVjb3Zlci1lbWFpbCcsXG4gIHRlbXBsYXRlOiBgXG5cbjxkaXYgKm5nSWY9XCInd2FpdCcgPT09IHNjcmVlblwiIFtAc2NyZWVuXT1cIidpbidcIj5cbiAgPGRpdiBjbGFzcz1cImFsZXJ0IGFsZXJ0LXNlY29uZGFyeVwiPlxuICAgIDxpIGNsYXNzPVwiZmFzIGZhLXNwaW4gZmEtc3Bpbm5lciBmYS1md1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cbiAgICBQbGVhc2Ugd2FpdC4uLlxuICA8L2Rpdj5cbjwvZGl2PlxuXG5cbjxkaXYgKm5nSWY9XCInc3VjY2VzcycgPT09IHNjcmVlblwiIFtAc2NyZWVuXT1cIidpbidcIj5cbiAgPGRpdiBjbGFzcz1cImFsZXJ0IGFsZXJ0LXN1Y2Nlc3NcIj5cbiAgICA8aSBjbGFzcz1cImZhcyBmYS1jaGVjayBmYS1md1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cbiAgICBZb3VyIGVtYWlsIGhhcyBiZWVuIGNoYW5nZWQgYmFjayB0byB7e2luZm8uZGF0YS5lbWFpbH19O1xuICA8L2Rpdj5cbjwvZGl2PlxuXG48ZGl2ICpuZ0lmPVwic2NyZWVuID09PSAnZm9ybSdcIiBbQHNjcmVlbl09XCInaW4nXCI+XG4gIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgPHA+XG4gICAgICBBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gY2hhbmdlIHlvdXIgZW1haWwgYmFjayB0b1xuICAgICAge3tpbmZvLmRhdGEuZW1haWx9fSBmcm9tIHt7aW5mby5kYXRhLmZyb21FbWFpbH19P1xuICAgIDwvcD5cbiAgICA8YnV0dG9uXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIFtkaXNhYmxlZF09XCJzdWJtaXR0aW5nXCJcbiAgICAgIChjbGljayk9XCJzdWJtaXQoKVwiXG4gICAgICBjbGFzcz1cImJ0biBidG4tYmxvY2sgYnRuLXN1Y2Nlc3NcIj5cbiAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLXNhdmUgZmEtZndcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XG4gICAgICBZZXMsIENvbnRpbnVlXG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuPC9kaXY+XG5cblxuXG48ZGl2ICpuZ0lmPVwic2NyZWVuID09PSAnZXJyb3InXCIgW0BzY3JlZW5dPVwiJ2luJ1wiPlxuICA8ZGl2IGNsYXNzPVwiYWxlcnQgYWxlcnQtZGFuZ2VyXCI+XG4gICAgPHA+XG4gICAgICA8aSBjbGFzcz1cImZhcyBmYS1leGNsYW1hdGlvbi10cmlhbmdsZSBmYS1md1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cbiAgICAgIFdvb3BzISBBbiBlcnJvciBvY2N1cnJlZC5cbiAgICA8L3A+XG4gICAgPGRpdiBbbmdTd2l0Y2hdPVwidW5oYW5kbGVkRXJyb3IuY29kZVwiPlxuICAgICAgPHAgY2xhc3M9XCJtYi0wXCIgKm5nU3dpdGNoQ2FzZT1cIidhdXRoL2V4cGlyZWQtYWN0aW9uLWNvZGUnXCI+XG4gICAgICAgIFRoZSByZWNvdmVyIGVtYWlsIGxpbmsgeW91IHVzZWQgaGFzIGV4cGlyZWQuXG4gICAgICA8L3A+XG4gICAgICA8cCBjbGFzcz1cIm1iLTBcIiAqbmdTd2l0Y2hDYXNlPVwiJ2F1dGgvaW52YWxpZC1hY3Rpb24tY29kZSdcIj5cbiAgICAgICAgVGhlIHJlY292ZXIgZW1haWwgbGluayB5b3UgdXNlZCBpcyBub3QgdmFsaWQuIFRoaXMgbWF5IGJlIGJlY2F1c2UgaXRcbiAgICAgICAgaGFzIGFscmVhZHkgYmVlbiB1c2VkLlxuICAgICAgPC9wPlxuICAgICAgPHAgY2xhc3M9XCJtYi0wXCIgKm5nU3dpdGNoQ2FzZT1cIidhdXRoL3VzZXItZGlzYWJsZWQnXCI+XG4gICAgICAgIFRoZSBhY2NvdW50IGFzc29jaWF0ZWQgd2l0aCB0aGUgcmVjb3ZlciBlbWFpbCBsaW5rIHlvdSB1c2VkIGhhcyBiZWVuIGRpc2FibGVkLlxuICAgICAgPC9wPlxuICAgICAgPHAgY2xhc3M9XCJtYi0wXCIgKm5nU3dpdGNoQ2FzZT1cIidhdXRoL3VzZXItbm90LWZvdW5kJ1wiPlxuICAgICAgICBUaGUgYWNjb3VudCBhc3NvY2lhdGVkIHdpdGggdGhlIHJlY292ZXIgZW1haWwgbGluayB5b3UgdXNlZCBoYXMgYmVlbiByZW1vdmVkLlxuICAgICAgPC9wPlxuICAgICAgPGRpdiAqbmdTd2l0Y2hEZWZhdWx0PlxuICAgICAgICA8cD5Db2RlOiB7e3VuaGFuZGxlZEVycm9yLmNvZGV9fTwvcD5cbiAgICAgICAgPHAgY2xhc3M9XCJtYi0wXCI+XG4gICAgICAgICAgTWVzc2FnZToge3t1bmhhbmRsZWRFcnJvci5tZXNzYWdlfX1cbiAgICAgICAgPC9wPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG5gLFxuICBzdHlsZXM6IFtgYF0sXG4gIGFuaW1hdGlvbnM6IFtzY3JlZW5BbmltYXRpb25dXG59KVxuZXhwb3J0IGNsYXNzIE9vYlJlY292ZXJFbWFpbENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgQElucHV0KCkgb29iQ29kZTogc3RyaW5nO1xuICBAT3V0cHV0KCkgc3VjY2VzczogRXZlbnRFbWl0dGVyPElOZ3hGaXJlYmFzZUF1dGhPb2JTdWNjZXNzPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBzY3JlZW46ICd3YWl0JyB8ICdmb3JtJyB8ICdlcnJvcicgfCAnc3VjY2VzcycgPSAnd2FpdCc7XG4gIGluZm86IGF1dGguQWN0aW9uQ29kZUluZm87XG4gIHN1Ym1pdHRpbmcgPSBmYWxzZTtcbiAgdW5oYW5kbGVkRXJyb3I6IGF1dGguRXJyb3I7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBfYWZBdXRoOiBBbmd1bGFyRmlyZUF1dGgsXG4gICkgeyB9XG5cbiAgZ2V0IGF1dGgoKTogYXV0aC5BdXRoIHtcbiAgICByZXR1cm4gdGhpcy5fYWZBdXRoLmF1dGg7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcblxuICAgIHRoaXMuYXV0aC5jaGVja0FjdGlvbkNvZGUodGhpcy5vb2JDb2RlKVxuICAgICAgLnRoZW4oKHJlc3VsdDogYXV0aC5BY3Rpb25Db2RlSW5mbykgPT4ge1xuICAgICAgICB0aGlzLmluZm8gPSByZXN1bHQ7XG4gICAgICAgIHRoaXMuc2NyZWVuID0gJ2Zvcm0nO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZXJyb3I6IGF1dGguRXJyb3IpID0+IHtcbiAgICAgICAgdGhpcy51bmhhbmRsZWRFcnJvciA9IGVycm9yO1xuICAgICAgICB0aGlzLnNjcmVlbiA9ICdlcnJvcic7XG4gICAgICB9KTtcbiAgfVxuXG4gIHN1Ym1pdCgpIHtcbiAgICB0aGlzLmF1dGguYXBwbHlBY3Rpb25Db2RlKHRoaXMub29iQ29kZSlcbiAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgdGhpcy5zY3JlZW4gPSAnc3VjY2Vzcyc7XG4gICAgICAgIHRoaXMuc3VjY2Vzcy5lbWl0KHtcbiAgICAgICAgICBtb2RlOiAncmVjb3ZlckVtYWlsJyxcbiAgICAgICAgICBpbmZvOiB0aGlzLmluZm8sXG4gICAgICAgICAgdXNlcjogdGhpcy5hdXRoLmN1cnJlbnRVc2VyXG4gICAgICAgIH0pO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZXJyb3I6IGF1dGguRXJyb3IpID0+IHtcbiAgICAgICAgdGhpcy51bmhhbmRsZWRFcnJvciA9IGVycm9yO1xuICAgICAgICB0aGlzLnNjcmVlbiA9ICdlcnJvcic7XG4gICAgICB9KTtcbiAgfVxuXG5cbn1cbiJdfQ==