@@ -52,7 +52,7 @@ def _validate_structure(self) -> None:
5252 """Validate the identity data structure.
5353
5454 Raises:
55- HTTPException: 400 if required fields are missing
55+ HTTPException: 400 if required fields are missing or malformed
5656 """
5757 if (
5858 "identity" not in self .identity_data
@@ -68,44 +68,9 @@ def _validate_structure(self) -> None:
6868
6969 identity_type = identity ["type" ]
7070 if identity_type == "User" :
71- if "user" not in identity :
72- logger .warning (
73- "Identity validation failed: missing 'user' field for User type"
74- )
75- raise HTTPException (status_code = 400 , detail = "Invalid identity data" )
76- user = identity ["user" ]
77- if "user_id" not in user :
78- logger .warning (
79- "Identity validation failed: missing 'user_id' in user data"
80- )
81- raise HTTPException (status_code = 400 , detail = "Invalid identity data" )
82- if "username" not in user :
83- logger .warning (
84- "Identity validation failed: missing 'username' in user data"
85- )
86- raise HTTPException (status_code = 400 , detail = "Invalid identity data" )
87- self ._validate_string_field ("user_id" , user ["user_id" ])
88- self ._validate_string_field ("username" , user ["username" ])
71+ self ._validate_user_fields (identity )
8972 elif identity_type == "System" :
90- if "system" not in identity :
91- logger .warning (
92- "Identity validation failed: missing 'system' field for System type"
93- )
94- raise HTTPException (status_code = 400 , detail = "Invalid identity data" )
95- system = identity ["system" ]
96- if "cn" not in system :
97- logger .warning (
98- "Identity validation failed: missing 'cn' in system data"
99- )
100- raise HTTPException (status_code = 400 , detail = "Invalid identity data" )
101- if "account_number" not in identity :
102- logger .warning (
103- "Identity validation failed: "
104- "missing 'account_number' for System type"
105- )
106- raise HTTPException (status_code = 400 , detail = "Invalid identity data" )
107- self ._validate_string_field ("cn" , system ["cn" ])
108- self ._validate_string_field ("account_number" , identity ["account_number" ])
73+ self ._validate_system_fields (identity )
10974 else :
11075 logger .warning ("Identity validation failed: unsupported identity type" )
11176 raise HTTPException (status_code = 400 , detail = "Invalid identity data" )
@@ -115,6 +80,59 @@ def _validate_structure(self) -> None:
11580 if org_id is not None and org_id != "" :
11681 self ._validate_string_field ("org_id" , org_id )
11782
83+ def _validate_user_fields (self , identity : dict ) -> None :
84+ """Validate required fields for User identity type.
85+
86+ Args:
87+ identity: The identity dict containing user data
88+
89+ Raises:
90+ HTTPException: 400 if required User fields are missing or malformed
91+ """
92+ if "user" not in identity :
93+ logger .warning (
94+ "Identity validation failed: missing 'user' field for User type"
95+ )
96+ raise HTTPException (status_code = 400 , detail = "Invalid identity data" )
97+ user = identity ["user" ]
98+ if "user_id" not in user :
99+ logger .warning ("Identity validation failed: missing 'user_id' in user data" )
100+ raise HTTPException (status_code = 400 , detail = "Invalid identity data" )
101+ if "username" not in user :
102+ logger .warning (
103+ "Identity validation failed: missing 'username' in user data"
104+ )
105+ raise HTTPException (status_code = 400 , detail = "Invalid identity data" )
106+ self ._validate_string_field ("user_id" , user ["user_id" ])
107+ self ._validate_string_field ("username" , user ["username" ])
108+
109+ def _validate_system_fields (self , identity : dict ) -> None :
110+ """Validate required fields for System identity type.
111+
112+ Args:
113+ identity: The identity dict containing system data
114+
115+ Raises:
116+ HTTPException: 400 if required System fields are missing or malformed
117+ """
118+ if "system" not in identity :
119+ logger .warning (
120+ "Identity validation failed: missing 'system' field for System type"
121+ )
122+ raise HTTPException (status_code = 400 , detail = "Invalid identity data" )
123+ system = identity ["system" ]
124+ if "cn" not in system :
125+ logger .warning ("Identity validation failed: missing 'cn' in system data" )
126+ raise HTTPException (status_code = 400 , detail = "Invalid identity data" )
127+ if "account_number" not in identity :
128+ logger .warning (
129+ "Identity validation failed: "
130+ "missing 'account_number' for System type"
131+ )
132+ raise HTTPException (status_code = 400 , detail = "Invalid identity data" )
133+ self ._validate_string_field ("cn" , system ["cn" ])
134+ self ._validate_string_field ("account_number" , identity ["account_number" ])
135+
118136 def _validate_string_field (
119137 self , field_name : str , value : Any , max_length : int = 256
120138 ) -> None :
0 commit comments