UI Server: factor out authentication logic
authorJérôme Benoit <jerome.benoit@sap.com>
Sun, 4 Sep 2022 12:32:31 +0000 (14:32 +0200)
committerJérôme Benoit <jerome.benoit@sap.com>
Sun, 4 Sep 2022 12:32:31 +0000 (14:32 +0200)
Signed-off-by: Jérôme Benoit <jerome.benoit@sap.com>
src/charging-station/ui-server/UIHttpServer.ts
src/charging-station/ui-server/UIWebSocketServer.ts

index 280f1d38040d71ab7151d1c33fa69b93f0977189..289eda84781ad0d7686e88846a95e028cf45921f 100644 (file)
@@ -71,7 +71,7 @@ export default class UIHttpServer extends AbstractUIServer {
   }
 
   private requestListener(req: IncomingMessage, res: ServerResponse): void {
-    if (this.isBasicAuthEnabled() === true && this.isValidBasicAuth(req) === false) {
+    if (this.authenticate(req) === false) {
       res.setHeader('Content-Type', 'text/plain');
       res.setHeader('WWW-Authenticate', 'Basic realm=users');
       res.writeHead(StatusCodes.UNAUTHORIZED);
@@ -128,6 +128,16 @@ export default class UIHttpServer extends AbstractUIServer {
     }
   }
 
+  private authenticate(req: IncomingMessage): boolean {
+    if (this.isBasicAuthEnabled() === true) {
+      if (this.isValidBasicAuth(req) === true) {
+        return true;
+      }
+      return false;
+    }
+    return true;
+  }
+
   private responseStatusToStatusCode(status: ResponseStatus): StatusCodes {
     switch (status) {
       case ResponseStatus.SUCCESS:
index c706cdd9a31613422bd5a519dcfba365833115ed..f7a0379dc4bcd12dffcc9249e67bda17f6f5941d 100644 (file)
@@ -116,15 +116,15 @@ export default class UIWebSocketServer extends AbstractUIServer {
     }
   }
 
-  private authenticate(req: IncomingMessage, next: (err: Error) => void): void {
+  private authenticate(req: IncomingMessage, next: (err?: Error) => void): void {
     if (this.isBasicAuthEnabled() === true) {
       if (this.isValidBasicAuth(req) === false) {
         next(new Error('Unauthorized'));
       } else {
-        next(undefined);
+        next();
       }
     } else {
-      next(undefined);
+      next();
     }
   }