UNPKG

@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
/** * @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" [@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" [@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'" [@screen]="'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'" [@screen]="'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==