From: Bill Erickson Date: Thu, 16 Jun 2022 13:35:23 +0000 (-0400) Subject: LP1840773 SCKO Angular X-Git-Url: https://old-git.evergreen-ils.org/?a=commitdiff_plain;h=42521e5f00495671a1321a5900cd2cb19f3a1a37;p=working%2FEvergreen.git LP1840773 SCKO Angular Signed-off-by: Bill Erickson --- diff --git a/Open-ILS/src/eg2/src/app/scko/banner.component.html b/Open-ILS/src/eg2/src/app/scko/banner.component.html index 16450459f9..52a11dadf9 100644 --- a/Open-ILS/src/eg2/src/app/scko/banner.component.html +++ b/Open-ILS/src/eg2/src/app/scko/banner.component.html @@ -23,7 +23,7 @@ diff --git a/Open-ILS/src/eg2/src/app/scko/banner.component.ts b/Open-ILS/src/eg2/src/app/scko/banner.component.ts index 833d46f794..0447864e91 100644 --- a/Open-ILS/src/eg2/src/app/scko/banner.component.ts +++ b/Open-ILS/src/eg2/src/app/scko/banner.component.ts @@ -2,9 +2,11 @@ import {Component, OnInit, NgZone, HostListener} from '@angular/core'; import {Location} from '@angular/common'; import {Router, ActivatedRoute, NavigationEnd} from '@angular/router'; import {AuthService, AuthWsState} from '@eg/core/auth.service'; +import {NetService} from '@eg/core/net.service'; import {StoreService} from '@eg/core/store.service'; import {SckoService} from './scko.service'; import {OrgService} from '@eg/core/org.service'; +import {EventService, EgEvent} from '@eg/core/event.service'; @Component({ selector: 'eg-scko-banner', @@ -28,7 +30,9 @@ export class SckoBannerComponent implements OnInit { constructor( private route: ActivatedRoute, private store: StoreService, + private net: NetService, private auth: AuthService, + private evt: EventService, private ngLocation: Location, private org: OrgService, public scko: SckoService @@ -104,10 +108,80 @@ export class SckoBannerComponent implements OnInit { submitPatronLogin() { this.patronLoginFailed = false; - this.scko.loadPatron(this.patronUsername, this.patronPassword) - .finally(() => { + this.loadPatron().finally(() => { this.patronLoginFailed = this.scko.patron === null; }); } + + loadPatron(): Promise { + this.scko.patron = null; + + if (!this.patronUsername) { return; } + + let username; + let barcode; + + if (this.patronUsername.match(this.scko.barcodeRegex)) { + barcode = this.patronUsername; + } else { + username = this.patronUsername; + } + + if (this.scko.patronPasswordRequired) { + // TODO verify password + + return this.net.request( + 'open-ils.actor', + 'open-ils.actor.verify_user_password', + this.auth.token(), barcode, username, null, this.patronPassword) + + .toPromise().then(verified => { + if (Number(verified) === 1) { + return this.fetchPatron(username, barcode); + } else { + return Promise.reject('Bad password'); + } + }); + + } else { + + return this.fetchPatron(username, barcode); + } + } + + fetchPatron(username: string, barcode: string): Promise { + + return this.net.request( + 'open-ils.actor', + 'open-ils.actor.user.retrieve_id_by_barcode_or_username', + this.auth.token(), barcode, username).toPromise() + + .then(patronId => { + + const evt = this.evt.parse(patronId); + + if (evt || !patronId) { + console.error("Cannot find user: ", evt); + return Promise.reject('User not found'); + } + + return this.net.request( + 'open-ils.actor', + 'open-ils.actor.user.fleshed.retrieve.authoritative', + this.auth.token(), patronId).toPromise() + + }).then(patron => { + + const evt = this.evt.parse(patron); + + if (evt) { + console.error('fetchPatron()', evt); + return Promise.reject('User not found'); + } + + this.scko.patron = patron; + }); + } + } diff --git a/Open-ILS/src/eg2/src/app/scko/scko.service.ts b/Open-ILS/src/eg2/src/app/scko/scko.service.ts index c0854610b0..58899fd1d2 100644 --- a/Open-ILS/src/eg2/src/app/scko/scko.service.ts +++ b/Open-ILS/src/eg2/src/app/scko/scko.service.ts @@ -46,61 +46,7 @@ export class SckoService { this.barcodeRegex = new RegExp(regPattern); this.patronPasswordRequired = sets['circ.selfcheck.patron_password_required']; - }); - } - - loadPatron(username: string, password: string): Promise { - this.patron = null; - - if (!username) { return; } - - let barcode; - - if (username.match(this.barcodeRegex)) { - barcode = username; - username = null; - } - - if (this.patronPasswordRequired) { - // TODO verify password - - } else { - - return this.fetchPatron(username, barcode); - } - } - - fetchPatron(username: string, barcode: string): Promise { - - return this.net.request( - 'open-ils.actor', - 'open-ils.actor.user.retrieve_id_by_barcode_or_username', - this.auth.token(), barcode, username).toPromise() - - .then(patronId => { - - const evt = this.evt.parse(patronId); - - if (evt || !patronId) { - console.error("Cannot find user: ", evt); - return Promise.reject('User not found'); - } - - return this.net.request( - 'open-ils.actor', - 'open-ils.actor.user.fleshed.retrieve.authoritative', - this.auth.token(), patronId).toPromise() - - }).then(patron => { - - const evt = this.evt.parse(patron); - - if (evt) { - console.error('fetchPatron()', evt); - return Promise.reject('User not found'); - } - - this.patron = patron; + console.log('REQ', this.patronPasswordRequired); }); } }