From d2243c4f0b531272aa7b7d0c5e06d0de7e1ee39a Mon Sep 17 00:00:00 2001
From: BluemediaGER <oliver@traber-info.de>
Date: Sat, 20 Apr 2024 18:52:07 +0200
Subject: [PATCH] Remove groupIdToken from IdTokenInfo

---
 app/ocpp_proto/chargepoint.py | 31 +++++++++++++------------------
 1 file changed, 13 insertions(+), 18 deletions(-)

diff --git a/app/ocpp_proto/chargepoint.py b/app/ocpp_proto/chargepoint.py
index 8c16f9f..4c34ed2 100644
--- a/app/ocpp_proto/chargepoint.py
+++ b/app/ocpp_proto/chargepoint.py
@@ -28,11 +28,12 @@ class ChargePoint(cp):
             db_chargepoint.last_seen = datetime.now(UTC)
             db.commit()
 
-    async def __get_id_token_info(self, id_token) -> IdTokenInfoType:
+    async def __get_id_token_info(self, id_token):
+        owner_id = None
         if id_token["type"] not in ["ISO14443", "ISO15693"]:
             return IdTokenInfoType(
                 status=AuthorizationStatusType.invalid
-            )
+            ), owner_id
         
         with SessionLocal() as db:
             db_id_token = db.query(DbIdToken).filter(DbIdToken.token == id_token["id_token"]).first()
@@ -52,29 +53,23 @@ class ChargePoint(cp):
                         db.add(db_id_token)
 
                         id_token_info=IdTokenInfoType(
-                            status=AuthorizationStatusType.accepted#,
-                            #group_id_token=IdTokenType(
-                                #type=IdTokenEnumType.central,
-                                #id_token=str(db_id_token.owner_id)
-                            #)
+                            status=AuthorizationStatusType.accepted
                         )
+                        owner_id = db_id_token.owner_id
                     db_chargepoint.learn_user_id = None
                     db_chargepoint.learn_until = None
                     db.commit()
             else:
+                owner_id = db_id_token.owner_id
                 if db_id_token.is_active == False:
                     id_token_info=IdTokenInfoType(
                         status=AuthorizationStatusType.blocked
                     )
                 else:
                     id_token_info=IdTokenInfoType(
-                        status=AuthorizationStatusType.accepted#,
-                        #group_id_token=IdTokenType(
-                            #type=IdTokenEnumType.central,
-                            #id_token=str(db_id_token.owner_id)
-                        #)
+                        status=AuthorizationStatusType.accepted
                     )
-            return id_token_info
+            return id_token_info, owner_id
 
     @on(Action.BootNotification)
     async def on_boot_notification(self, charging_station, **kwargs):
@@ -142,7 +137,7 @@ class ChargePoint(cp):
     @on(Action.Authorize)
     async def on_authorize(self, id_token, **kwargs):
         await self.__update_last_seen()
-        id_token_info = await self.__get_id_token_info(id_token)
+        id_token_info, _ = await self.__get_id_token_info(id_token)
         return call_result.AuthorizePayload(id_token_info)
     
     @on(Action.TransactionEvent)
@@ -157,7 +152,7 @@ class ChargePoint(cp):
         **kwargs
     ):
         if id_token != None:
-            id_token_info = await self.__get_id_token_info(id_token)
+            id_token_info, token_owner_id = await self.__get_id_token_info(id_token)
 
         with SessionLocal() as db:
             chargepoint = db.query(DbChargePoint).filter(DbChargePoint.identity == self.id).first()
@@ -183,7 +178,7 @@ class ChargePoint(cp):
                 )
                 if id_token != None:
                     if id_token_info.status == AuthorizationStatusType.accepted:
-                        transaction.user_id = UUID(id_token_info.group_id_token.id_token)
+                        transaction.user_id = UUID(token_owner_id)
                 db.add(transaction)                
             elif event_type == str(TransactionEventType.updated):
                 transaction = db.get(DbTransaction, transaction_info["transaction_id"])
@@ -209,7 +204,7 @@ class ChargePoint(cp):
                             db.add(db_meter_value)
                 if id_token != None:
                     if id_token_info.status == AuthorizationStatusType.accepted:
-                        transaction.user_id = UUID(id_token_info.group_id_token.id_token)
+                        transaction.user_id = UUID(token_owner_id)
             elif event_type == str(TransactionEventType.ended):
                 transaction = db.get(DbTransaction, transaction_info["transaction_id"])
                 transaction.status = TransactionStatus.ENDED
@@ -227,7 +222,7 @@ class ChargePoint(cp):
                 transaction.meter_end = meter_end
                 if id_token != None:
                     if id_token_info.status == AuthorizationStatusType.accepted:
-                        transaction.user_id = UUID(id_token_info.group_id_token.id_token)
+                        transaction.user_id = UUID(token_owner_id)
             db.commit()
 
         if id_token != None: