@@ -48,7 +48,7 @@ def _validate_structure(self) -> None:
4848 """Validate the identity data structure.
4949
5050 Raises:
51- HTTPException: 400 if required fields are missing
51+ HTTPException: 400 if required fields are missing or malformed
5252 """
5353 if (
5454 "identity" not in self .identity_data
@@ -64,44 +64,9 @@ def _validate_structure(self) -> None:
6464
6565 identity_type = identity ["type" ]
6666 if identity_type == "User" :
67- if "user" not in identity :
68- logger .warning (
69- "Identity validation failed: missing 'user' field for User type"
70- )
71- raise HTTPException (status_code = 400 , detail = "Invalid identity data" )
72- user = identity ["user" ]
73- if "user_id" not in user :
74- logger .warning (
75- "Identity validation failed: missing 'user_id' in user data"
76- )
77- raise HTTPException (status_code = 400 , detail = "Invalid identity data" )
78- if "username" not in user :
79- logger .warning (
80- "Identity validation failed: missing 'username' in user data"
81- )
82- raise HTTPException (status_code = 400 , detail = "Invalid identity data" )
83- self ._validate_string_field ("user_id" , user ["user_id" ])
84- self ._validate_string_field ("username" , user ["username" ])
67+ self ._validate_user_fields (identity )
8568 elif identity_type == "System" :
86- if "system" not in identity :
87- logger .warning (
88- "Identity validation failed: missing 'system' field for System type"
89- )
90- raise HTTPException (status_code = 400 , detail = "Invalid identity data" )
91- system = identity ["system" ]
92- if "cn" not in system :
93- logger .warning (
94- "Identity validation failed: missing 'cn' in system data"
95- )
96- raise HTTPException (status_code = 400 , detail = "Invalid identity data" )
97- if "account_number" not in identity :
98- logger .warning (
99- "Identity validation failed: "
100- "missing 'account_number' for System type"
101- )
102- raise HTTPException (status_code = 400 , detail = "Invalid identity data" )
103- self ._validate_string_field ("cn" , system ["cn" ])
104- self ._validate_string_field ("account_number" , identity ["account_number" ])
69+ self ._validate_system_fields (identity )
10570 else :
10671 logger .warning ("Identity validation failed: unsupported identity type" )
10772 raise HTTPException (status_code = 400 , detail = "Invalid identity data" )
@@ -111,6 +76,59 @@ def _validate_structure(self) -> None:
11176 if org_id is not None and org_id != "" :
11277 self ._validate_string_field ("org_id" , org_id )
11378
79+ def _validate_user_fields (self , identity : dict ) -> None :
80+ """Validate required fields for User identity type.
81+
82+ Args:
83+ identity: The identity dict containing user data
84+
85+ Raises:
86+ HTTPException: 400 if required User fields are missing or malformed
87+ """
88+ if "user" not in identity :
89+ logger .warning (
90+ "Identity validation failed: missing 'user' field for User type"
91+ )
92+ raise HTTPException (status_code = 400 , detail = "Invalid identity data" )
93+ user = identity ["user" ]
94+ if "user_id" not in user :
95+ logger .warning ("Identity validation failed: missing 'user_id' in user data" )
96+ raise HTTPException (status_code = 400 , detail = "Invalid identity data" )
97+ if "username" not in user :
98+ logger .warning (
99+ "Identity validation failed: missing 'username' in user data"
100+ )
101+ raise HTTPException (status_code = 400 , detail = "Invalid identity data" )
102+ self ._validate_string_field ("user_id" , user ["user_id" ])
103+ self ._validate_string_field ("username" , user ["username" ])
104+
105+ def _validate_system_fields (self , identity : dict ) -> None :
106+ """Validate required fields for System identity type.
107+
108+ Args:
109+ identity: The identity dict containing system data
110+
111+ Raises:
112+ HTTPException: 400 if required System fields are missing or malformed
113+ """
114+ if "system" not in identity :
115+ logger .warning (
116+ "Identity validation failed: missing 'system' field for System type"
117+ )
118+ raise HTTPException (status_code = 400 , detail = "Invalid identity data" )
119+ system = identity ["system" ]
120+ if "cn" not in system :
121+ logger .warning ("Identity validation failed: missing 'cn' in system data" )
122+ raise HTTPException (status_code = 400 , detail = "Invalid identity data" )
123+ if "account_number" not in identity :
124+ logger .warning (
125+ "Identity validation failed: "
126+ "missing 'account_number' for System type"
127+ )
128+ raise HTTPException (status_code = 400 , detail = "Invalid identity data" )
129+ self ._validate_string_field ("cn" , system ["cn" ])
130+ self ._validate_string_field ("account_number" , identity ["account_number" ])
131+
114132 def _validate_string_field (
115133 self , field_name : str , value : Any , max_length : int = 256
116134 ) -> None :
0 commit comments