@spartacus/user
Version:
User feature library for Spartacus
70 lines • 9.23 kB
JavaScript
import { Injectable } from '@angular/core';
import { FormControl, FormGroup, Validators } from '@angular/forms';
import { GlobalMessageType, OAuthFlow, } from '@spartacus/core';
import { CustomFormValidators } from '@spartacus/storefront';
import { BehaviorSubject } from 'rxjs';
import { tap } from 'rxjs/operators';
import * as i0 from "@angular/core";
import * as i1 from "@spartacus/user/profile/root";
import * as i2 from "@spartacus/core";
export class ForgotPasswordComponentService {
constructor(userPasswordService, routingService, authConfigService, globalMessage) {
this.userPasswordService = userPasswordService;
this.routingService = routingService;
this.authConfigService = authConfigService;
this.globalMessage = globalMessage;
this.busy$ = new BehaviorSubject(false);
this.isUpdating$ = this.busy$.pipe(tap((state) => (state === true ? this.form.disable() : this.form.enable())));
this.form = new FormGroup({
userEmail: new FormControl('', [
Validators.required,
CustomFormValidators.emailValidator,
]),
});
}
/**
* Sends an email to the user to reset the password.
*
* When the `ResourceOwnerPasswordFlow` is used, the user is routed
* to the login page.
*/
requestEmail() {
if (!this.form.valid) {
this.form.markAllAsTouched();
return;
}
this.busy$.next(true);
this.userPasswordService
.requestForgotPasswordEmail(this.form.value.userEmail)
.subscribe({
next: () => this.onSuccess(),
error: (error) => this.onError(error),
});
}
onSuccess() {
this.globalMessage.add({ key: 'forgottenPassword.passwordResetEmailSent' }, GlobalMessageType.MSG_TYPE_CONFIRMATION);
this.busy$.next(false);
this.form.reset();
this.redirect();
}
onError(_error) {
this.busy$.next(false);
}
/**
* Redirects the user back to the login page.
*
* This only happens in case of the `ResourceOwnerPasswordFlow` OAuth flow.
*/
redirect() {
if (this.authConfigService.getOAuthFlow() ===
OAuthFlow.ResourceOwnerPasswordFlow) {
this.routingService.go({ cxRoute: 'login' });
}
}
}
ForgotPasswordComponentService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: ForgotPasswordComponentService, deps: [{ token: i1.UserPasswordFacade }, { token: i2.RoutingService }, { token: i2.AuthConfigService }, { token: i2.GlobalMessageService }], target: i0.ɵɵFactoryTarget.Injectable });
ForgotPasswordComponentService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: ForgotPasswordComponentService });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: ForgotPasswordComponentService, decorators: [{
type: Injectable
}], ctorParameters: function () { return [{ type: i1.UserPasswordFacade }, { type: i2.RoutingService }, { type: i2.AuthConfigService }, { type: i2.GlobalMessageService }]; } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9yZ290LXBhc3N3b3JkLWNvbXBvbmVudC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vZmVhdHVyZS1saWJzL3VzZXIvcHJvZmlsZS9jb21wb25lbnRzL2ZvcmdvdC1wYXNzd29yZC9mb3Jnb3QtcGFzc3dvcmQtY29tcG9uZW50LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNwRSxPQUFPLEVBR0wsaUJBQWlCLEVBQ2pCLFNBQVMsR0FFVixNQUFNLGlCQUFpQixDQUFDO0FBQ3pCLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRTdELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdkMsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7O0FBR3JDLE1BQU0sT0FBTyw4QkFBOEI7SUFDekMsWUFDWSxtQkFBdUMsRUFDdkMsY0FBOEIsRUFDOUIsaUJBQW9DLEVBQ3BDLGFBQW1DO1FBSG5DLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBb0I7UUFDdkMsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFDcEMsa0JBQWEsR0FBYixhQUFhLENBQXNCO1FBR3JDLFVBQUssR0FBRyxJQUFJLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUU3QyxnQkFBVyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUMzQixHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsS0FBSyxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQzVFLENBQUM7UUFFRixTQUFJLEdBQWMsSUFBSSxTQUFTLENBQUM7WUFDOUIsU0FBUyxFQUFFLElBQUksV0FBVyxDQUFDLEVBQUUsRUFBRTtnQkFDN0IsVUFBVSxDQUFDLFFBQVE7Z0JBQ25CLG9CQUFvQixDQUFDLGNBQWM7YUFDcEMsQ0FBQztTQUNILENBQUMsQ0FBQztJQWJBLENBQUM7SUFlSjs7Ozs7T0FLRztJQUNILFlBQVk7UUFDVixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDcEIsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQzdCLE9BQU87U0FDUjtRQUVELElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRXRCLElBQUksQ0FBQyxtQkFBbUI7YUFDckIsMEJBQTBCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDO2FBQ3JELFNBQVMsQ0FBQztZQUNULElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQzVCLEtBQUssRUFBRSxDQUFDLEtBQVksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUM7U0FDN0MsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVTLFNBQVM7UUFDakIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQ3BCLEVBQUUsR0FBRyxFQUFFLDBDQUEwQyxFQUFFLEVBQ25ELGlCQUFpQixDQUFDLHFCQUFxQixDQUN4QyxDQUFDO1FBQ0YsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdkIsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNsQixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDbEIsQ0FBQztJQUVTLE9BQU8sQ0FBQyxNQUFhO1FBQzdCLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3pCLENBQUM7SUFFRDs7OztPQUlHO0lBQ08sUUFBUTtRQUNoQixJQUNFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxZQUFZLEVBQUU7WUFDckMsU0FBUyxDQUFDLHlCQUF5QixFQUNuQztZQUNBLElBQUksQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUM7U0FDOUM7SUFDSCxDQUFDOzsySEFyRVUsOEJBQThCOytIQUE5Qiw4QkFBOEI7MkZBQTlCLDhCQUE4QjtrQkFEMUMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Db250cm9sLCBGb3JtR3JvdXAsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge1xuICBBdXRoQ29uZmlnU2VydmljZSxcbiAgR2xvYmFsTWVzc2FnZVNlcnZpY2UsXG4gIEdsb2JhbE1lc3NhZ2VUeXBlLFxuICBPQXV0aEZsb3csXG4gIFJvdXRpbmdTZXJ2aWNlLFxufSBmcm9tICdAc3BhcnRhY3VzL2NvcmUnO1xuaW1wb3J0IHsgQ3VzdG9tRm9ybVZhbGlkYXRvcnMgfSBmcm9tICdAc3BhcnRhY3VzL3N0b3JlZnJvbnQnO1xuaW1wb3J0IHsgVXNlclBhc3N3b3JkRmFjYWRlIH0gZnJvbSAnQHNwYXJ0YWN1cy91c2VyL3Byb2ZpbGUvcm9vdCc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEZvcmdvdFBhc3N3b3JkQ29tcG9uZW50U2VydmljZSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCB1c2VyUGFzc3dvcmRTZXJ2aWNlOiBVc2VyUGFzc3dvcmRGYWNhZGUsXG4gICAgcHJvdGVjdGVkIHJvdXRpbmdTZXJ2aWNlOiBSb3V0aW5nU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgYXV0aENvbmZpZ1NlcnZpY2U6IEF1dGhDb25maWdTZXJ2aWNlLFxuICAgIHByb3RlY3RlZCBnbG9iYWxNZXNzYWdlOiBHbG9iYWxNZXNzYWdlU2VydmljZVxuICApIHt9XG5cbiAgcHJvdGVjdGVkIGJ1c3kkID0gbmV3IEJlaGF2aW9yU3ViamVjdChmYWxzZSk7XG5cbiAgaXNVcGRhdGluZyQgPSB0aGlzLmJ1c3kkLnBpcGUoXG4gICAgdGFwKChzdGF0ZSkgPT4gKHN0YXRlID09PSB0cnVlID8gdGhpcy5mb3JtLmRpc2FibGUoKSA6IHRoaXMuZm9ybS5lbmFibGUoKSkpXG4gICk7XG5cbiAgZm9ybTogRm9ybUdyb3VwID0gbmV3IEZvcm1Hcm91cCh7XG4gICAgdXNlckVtYWlsOiBuZXcgRm9ybUNvbnRyb2woJycsIFtcbiAgICAgIFZhbGlkYXRvcnMucmVxdWlyZWQsXG4gICAgICBDdXN0b21Gb3JtVmFsaWRhdG9ycy5lbWFpbFZhbGlkYXRvcixcbiAgICBdKSxcbiAgfSk7XG5cbiAgLyoqXG4gICAqIFNlbmRzIGFuIGVtYWlsIHRvIHRoZSB1c2VyIHRvIHJlc2V0IHRoZSBwYXNzd29yZC5cbiAgICpcbiAgICogV2hlbiB0aGUgYFJlc291cmNlT3duZXJQYXNzd29yZEZsb3dgIGlzIHVzZWQsIHRoZSB1c2VyIGlzIHJvdXRlZFxuICAgKiB0byB0aGUgbG9naW4gcGFnZS5cbiAgICovXG4gIHJlcXVlc3RFbWFpbCgpIHtcbiAgICBpZiAoIXRoaXMuZm9ybS52YWxpZCkge1xuICAgICAgdGhpcy5mb3JtLm1hcmtBbGxBc1RvdWNoZWQoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmJ1c3kkLm5leHQodHJ1ZSk7XG5cbiAgICB0aGlzLnVzZXJQYXNzd29yZFNlcnZpY2VcbiAgICAgIC5yZXF1ZXN0Rm9yZ290UGFzc3dvcmRFbWFpbCh0aGlzLmZvcm0udmFsdWUudXNlckVtYWlsKVxuICAgICAgLnN1YnNjcmliZSh7XG4gICAgICAgIG5leHQ6ICgpID0+IHRoaXMub25TdWNjZXNzKCksXG4gICAgICAgIGVycm9yOiAoZXJyb3I6IEVycm9yKSA9PiB0aGlzLm9uRXJyb3IoZXJyb3IpLFxuICAgICAgfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb25TdWNjZXNzKCk6IHZvaWQge1xuICAgIHRoaXMuZ2xvYmFsTWVzc2FnZS5hZGQoXG4gICAgICB7IGtleTogJ2ZvcmdvdHRlblBhc3N3b3JkLnBhc3N3b3JkUmVzZXRFbWFpbFNlbnQnIH0sXG4gICAgICBHbG9iYWxNZXNzYWdlVHlwZS5NU0dfVFlQRV9DT05GSVJNQVRJT05cbiAgICApO1xuICAgIHRoaXMuYnVzeSQubmV4dChmYWxzZSk7XG4gICAgdGhpcy5mb3JtLnJlc2V0KCk7XG4gICAgdGhpcy5yZWRpcmVjdCgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG9uRXJyb3IoX2Vycm9yOiBFcnJvcik6IHZvaWQge1xuICAgIHRoaXMuYnVzeSQubmV4dChmYWxzZSk7XG4gIH1cblxuICAvKipcbiAgICogUmVkaXJlY3RzIHRoZSB1c2VyIGJhY2sgdG8gdGhlIGxvZ2luIHBhZ2UuXG4gICAqXG4gICAqIFRoaXMgb25seSBoYXBwZW5zIGluIGNhc2Ugb2YgdGhlIGBSZXNvdXJjZU93bmVyUGFzc3dvcmRGbG93YCBPQXV0aCBmbG93LlxuICAgKi9cbiAgcHJvdGVjdGVkIHJlZGlyZWN0KCkge1xuICAgIGlmIChcbiAgICAgIHRoaXMuYXV0aENvbmZpZ1NlcnZpY2UuZ2V0T0F1dGhGbG93KCkgPT09XG4gICAgICBPQXV0aEZsb3cuUmVzb3VyY2VPd25lclBhc3N3b3JkRmxvd1xuICAgICkge1xuICAgICAgdGhpcy5yb3V0aW5nU2VydmljZS5nbyh7IGN4Um91dGU6ICdsb2dpbicgfSk7XG4gICAgfVxuICB9XG59XG4iXX0=