LP#1775466 Port auth_proxy login support
authorBill Erickson <berickxx@gmail.com>
Tue, 12 Jun 2018 17:44:41 +0000 (13:44 -0400)
committerBill Erickson <berickxx@gmail.com>
Tue, 12 Jun 2018 17:44:41 +0000 (13:44 -0400)
Signed-off-by: Bill Erickson <berickxx@gmail.com>
Open-ILS/src/eg2/src/app/core/auth.service.ts

index 3176bf8..1de67db 100644 (file)
@@ -116,14 +116,40 @@ export class AuthService {
         });
     }
 
-    login(args: AuthLoginArgs, isOpChange?: boolean): Promise<void> {
-        return this.net.request('open-ils.auth', 'open-ils.auth.login', args)
+    loginApi(args: AuthLoginArgs, service: string,
+        method: string, isOpChange?: boolean): Promise<void> {
+
+        return this.net.request(service, method, args)
         .toPromise().then(res => {
             return this.handleLoginResponse(
                 args, this.egEvt.parse(res), isOpChange);
         });
     }
 
+    login(args: AuthLoginArgs, isOpChange?: boolean): Promise<void> {
+        let service = 'open-ils.auth';
+        let method = 'open-ils.auth.login';
+
+        return this.net.request(
+            'open-ils.auth_proxy',
+            'open-ils.auth_proxy.enabled')
+        .toPromise().then(
+            enabled => {
+                if (Number(enabled) === 1) {
+                    service = 'open-ils.auth_proxy';
+                    method = 'open-ils.auth_proxy.login';
+                }
+                return this.loginApi(args, service, method, isOpChange);
+            },
+            error => {
+                // auth_proxy check resulted in a low-level error.
+                // Likely the service is not running.  Fall back to
+                // standard auth login.
+                return this.loginApi(args, service, method, isOpChange);
+            }
+        );
+    }
+
     handleLoginResponse(
         args: AuthLoginArgs, evt: EgEvent, isOpChange: boolean): Promise<void> {