UNPKG

@spartacus/user

Version:

User feature library for Spartacus

59 lines 8.8 kB
import { Injectable } from '@angular/core'; import { FormControl, FormGroup, Validators } from '@angular/forms'; import { GlobalMessageType, } from '@spartacus/core'; import { CustomFormValidators } from '@spartacus/storefront'; import { BehaviorSubject, from } from 'rxjs'; import { tap, withLatestFrom } from 'rxjs/operators'; import * as i0 from "@angular/core"; import * as i1 from "@spartacus/core"; export class LoginFormComponentService { constructor(auth, globalMessage, winRef) { this.auth = auth; this.globalMessage = globalMessage; this.winRef = winRef; this.busy$ = new BehaviorSubject(false); this.isUpdating$ = this.busy$.pipe(tap((state) => { var _a, _b, _c; const userId = (_c = (_b = (_a = this.winRef.nativeWindow) === null || _a === void 0 ? void 0 : _a.history) === null || _b === void 0 ? void 0 : _b.state) === null || _c === void 0 ? void 0 : _c['newUid']; if (userId) { this.form.patchValue({ userId }); } state === true ? this.form.disable() : this.form.enable(); })); this.form = new FormGroup({ userId: new FormControl('', [ Validators.required, CustomFormValidators.emailValidator, ]), password: new FormControl('', Validators.required), }); } login() { if (!this.form.valid) { this.form.markAllAsTouched(); return; } this.busy$.next(true); from(this.auth.loginWithCredentials( // TODO: consider dropping toLowerCase as this should not be part of the UI, // as it's too opinionated and doesn't work with other AUTH services this.form.value.userId.toLowerCase(), this.form.value.password)) .pipe(withLatestFrom(this.auth.isUserLoggedIn()), tap(([_, isLoggedIn]) => this.onSuccess(isLoggedIn))) .subscribe(); } onSuccess(isLoggedIn) { if (isLoggedIn) { // We want to remove error messages on successful login (primary the bad // username/password combination) this.globalMessage.remove(GlobalMessageType.MSG_TYPE_ERROR); this.form.reset(); } this.busy$.next(false); } } LoginFormComponentService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: LoginFormComponentService, deps: [{ token: i1.AuthService }, { token: i1.GlobalMessageService }, { token: i1.WindowRef }], target: i0.ɵɵFactoryTarget.Injectable }); LoginFormComponentService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: LoginFormComponentService }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: LoginFormComponentService, decorators: [{ type: Injectable }], ctorParameters: function () { return [{ type: i1.AuthService }, { type: i1.GlobalMessageService }, { type: i1.WindowRef }]; } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9naW4tZm9ybS1jb21wb25lbnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2ZlYXR1cmUtbGlicy91c2VyL2FjY291bnQvY29tcG9uZW50cy9sb2dpbi1mb3JtL2xvZ2luLWZvcm0tY29tcG9uZW50LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNwRSxPQUFPLEVBR0wsaUJBQWlCLEdBRWxCLE1BQU0saUJBQWlCLENBQUM7QUFDekIsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxJQUFJLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDN0MsT0FBTyxFQUFFLEdBQUcsRUFBRSxjQUFjLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7O0FBR3JELE1BQU0sT0FBTyx5QkFBeUI7SUFDcEMsWUFDWSxJQUFpQixFQUNqQixhQUFtQyxFQUNuQyxNQUFpQjtRQUZqQixTQUFJLEdBQUosSUFBSSxDQUFhO1FBQ2pCLGtCQUFhLEdBQWIsYUFBYSxDQUFzQjtRQUNuQyxXQUFNLEdBQU4sTUFBTSxDQUFXO1FBR25CLFVBQUssR0FBRyxJQUFJLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUU3QyxnQkFBVyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUMzQixHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTs7WUFDWixNQUFNLE1BQU0sR0FBRyxNQUFBLE1BQUEsTUFBQSxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksMENBQUUsT0FBTywwQ0FBRSxLQUFLLDBDQUFHLFFBQVEsQ0FBQyxDQUFDO1lBQ3BFLElBQUksTUFBTSxFQUFFO2dCQUNWLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQzthQUNsQztZQUNELEtBQUssS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDNUQsQ0FBQyxDQUFDLENBQ0gsQ0FBQztRQUVGLFNBQUksR0FBYyxJQUFJLFNBQVMsQ0FBQztZQUM5QixNQUFNLEVBQUUsSUFBSSxXQUFXLENBQUMsRUFBRSxFQUFFO2dCQUMxQixVQUFVLENBQUMsUUFBUTtnQkFDbkIsb0JBQW9CLENBQUMsY0FBYzthQUNwQyxDQUFDO1lBQ0YsUUFBUSxFQUFFLElBQUksV0FBVyxDQUFDLEVBQUUsRUFBRSxVQUFVLENBQUMsUUFBUSxDQUFDO1NBQ25ELENBQUMsQ0FBQztJQXBCQSxDQUFDO0lBc0JKLEtBQUs7UUFDSCxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDcEIsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQzdCLE9BQU87U0FDUjtRQUVELElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRXRCLElBQUksQ0FDRixJQUFJLENBQUMsSUFBSSxDQUFDLG9CQUFvQjtRQUM1Qiw0RUFBNEU7UUFDNUUsb0VBQW9FO1FBQ3BFLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsRUFDcEMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUN6QixDQUNGO2FBQ0UsSUFBSSxDQUNILGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDLEVBQzFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQ3JEO2FBQ0EsU0FBUyxFQUFFLENBQUM7SUFDakIsQ0FBQztJQUVTLFNBQVMsQ0FBQyxVQUFtQjtRQUNyQyxJQUFJLFVBQVUsRUFBRTtZQUNkLHdFQUF3RTtZQUN4RSxpQ0FBaUM7WUFDakMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsY0FBYyxDQUFDLENBQUM7WUFDNUQsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztTQUNuQjtRQUVELElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3pCLENBQUM7O3NIQTNEVSx5QkFBeUI7MEhBQXpCLHlCQUF5QjsyRkFBekIseUJBQXlCO2tCQURyQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7XG4gIEF1dGhTZXJ2aWNlLFxuICBHbG9iYWxNZXNzYWdlU2VydmljZSxcbiAgR2xvYmFsTWVzc2FnZVR5cGUsXG4gIFdpbmRvd1JlZixcbn0gZnJvbSAnQHNwYXJ0YWN1cy9jb3JlJztcbmltcG9ydCB7IEN1c3RvbUZvcm1WYWxpZGF0b3JzIH0gZnJvbSAnQHNwYXJ0YWN1cy9zdG9yZWZyb250JztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgZnJvbSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFwLCB3aXRoTGF0ZXN0RnJvbSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIExvZ2luRm9ybUNvbXBvbmVudFNlcnZpY2Uge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgYXV0aDogQXV0aFNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIGdsb2JhbE1lc3NhZ2U6IEdsb2JhbE1lc3NhZ2VTZXJ2aWNlLFxuICAgIHByb3RlY3RlZCB3aW5SZWY6IFdpbmRvd1JlZlxuICApIHt9XG5cbiAgcHJvdGVjdGVkIGJ1c3kkID0gbmV3IEJlaGF2aW9yU3ViamVjdChmYWxzZSk7XG5cbiAgaXNVcGRhdGluZyQgPSB0aGlzLmJ1c3kkLnBpcGUoXG4gICAgdGFwKChzdGF0ZSkgPT4ge1xuICAgICAgY29uc3QgdXNlcklkID0gdGhpcy53aW5SZWYubmF0aXZlV2luZG93Py5oaXN0b3J5Py5zdGF0ZT8uWyduZXdVaWQnXTtcbiAgICAgIGlmICh1c2VySWQpIHtcbiAgICAgICAgdGhpcy5mb3JtLnBhdGNoVmFsdWUoeyB1c2VySWQgfSk7XG4gICAgICB9XG4gICAgICBzdGF0ZSA9PT0gdHJ1ZSA/IHRoaXMuZm9ybS5kaXNhYmxlKCkgOiB0aGlzLmZvcm0uZW5hYmxlKCk7XG4gICAgfSlcbiAgKTtcblxuICBmb3JtOiBGb3JtR3JvdXAgPSBuZXcgRm9ybUdyb3VwKHtcbiAgICB1c2VySWQ6IG5ldyBGb3JtQ29udHJvbCgnJywgW1xuICAgICAgVmFsaWRhdG9ycy5yZXF1aXJlZCxcbiAgICAgIEN1c3RvbUZvcm1WYWxpZGF0b3JzLmVtYWlsVmFsaWRhdG9yLFxuICAgIF0pLFxuICAgIHBhc3N3b3JkOiBuZXcgRm9ybUNvbnRyb2woJycsIFZhbGlkYXRvcnMucmVxdWlyZWQpLFxuICB9KTtcblxuICBsb2dpbigpIHtcbiAgICBpZiAoIXRoaXMuZm9ybS52YWxpZCkge1xuICAgICAgdGhpcy5mb3JtLm1hcmtBbGxBc1RvdWNoZWQoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmJ1c3kkLm5leHQodHJ1ZSk7XG5cbiAgICBmcm9tKFxuICAgICAgdGhpcy5hdXRoLmxvZ2luV2l0aENyZWRlbnRpYWxzKFxuICAgICAgICAvLyBUT0RPOiBjb25zaWRlciBkcm9wcGluZyB0b0xvd2VyQ2FzZSBhcyB0aGlzIHNob3VsZCBub3QgYmUgcGFydCBvZiB0aGUgVUksXG4gICAgICAgIC8vIGFzIGl0J3MgdG9vIG9waW5pb25hdGVkIGFuZCBkb2Vzbid0IHdvcmsgd2l0aCBvdGhlciBBVVRIIHNlcnZpY2VzXG4gICAgICAgIHRoaXMuZm9ybS52YWx1ZS51c2VySWQudG9Mb3dlckNhc2UoKSxcbiAgICAgICAgdGhpcy5mb3JtLnZhbHVlLnBhc3N3b3JkXG4gICAgICApXG4gICAgKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHdpdGhMYXRlc3RGcm9tKHRoaXMuYXV0aC5pc1VzZXJMb2dnZWRJbigpKSxcbiAgICAgICAgdGFwKChbXywgaXNMb2dnZWRJbl0pID0+IHRoaXMub25TdWNjZXNzKGlzTG9nZ2VkSW4pKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG9uU3VjY2Vzcyhpc0xvZ2dlZEluOiBib29sZWFuKTogdm9pZCB7XG4gICAgaWYgKGlzTG9nZ2VkSW4pIHtcbiAgICAgIC8vIFdlIHdhbnQgdG8gcmVtb3ZlIGVycm9yIG1lc3NhZ2VzIG9uIHN1Y2Nlc3NmdWwgbG9naW4gKHByaW1hcnkgdGhlIGJhZFxuICAgICAgLy8gdXNlcm5hbWUvcGFzc3dvcmQgY29tYmluYXRpb24pXG4gICAgICB0aGlzLmdsb2JhbE1lc3NhZ2UucmVtb3ZlKEdsb2JhbE1lc3NhZ2VUeXBlLk1TR19UWVBFX0VSUk9SKTtcbiAgICAgIHRoaXMuZm9ybS5yZXNldCgpO1xuICAgIH1cblxuICAgIHRoaXMuYnVzeSQubmV4dChmYWxzZSk7XG4gIH1cbn1cbiJdfQ==