@@ -71,8 +71,7 @@ public function insertLogin(&$request, &$date)
7171 }
7272 }
7373
74- $ idAttribute = $ this ->config ->getIdAttribute ();
75- $ userId = isset ($ request ['Attributes ' ][$ idAttribute ]) ? $ request ['Attributes ' ][$ idAttribute ][0 ] : '' ;
74+ $ userId = $ this ->getUserId ($ request );
7675
7776 $ ids = [];
7877 foreach (self ::TABLE_SIDES as $ side => $ table ) {
@@ -273,23 +272,19 @@ private function writeLogin($date, $ids, $user)
273272 return $ this ->conn ->write ($ query , $ params );
274273 }
275274
276- private function getEntities ($ request )
275+ private function getEntities ($ request ): array
277276 {
278277 $ entities = [
279278 Config::MODE_IDP => [],
280279 Config::MODE_SP => [],
281280 ];
282281 if (Config::MODE_IDP !== $ this ->mode && Config::MODE_MULTI_IDP !== $ this ->mode ) {
283- $ entities [Config::MODE_IDP ]['id ' ] = $ request[ ' saml:sp:IdP ' ] ;
284- $ entities [Config::MODE_IDP ]['name ' ] = $ request[ ' Attributes ' ][ ' sourceIdPName ' ][ 0 ] ;
282+ $ entities [Config::MODE_IDP ]['id ' ] = $ this -> getIdpIdentifier ( $ request) ;
283+ $ entities [Config::MODE_IDP ]['name ' ] = $ this -> getIdpName ( $ request) ;
285284 }
286285 if (Config::MODE_SP !== $ this ->mode ) {
287- $ entities [Config::MODE_SP ]['id ' ] = $ request ['Destination ' ]['entityid ' ];
288- if (isset ($ request ['Destination ' ]['UIInfo ' ]['DisplayName ' ]['en ' ])) {
289- $ entities [Config::MODE_SP ]['name ' ] = $ request ['Destination ' ]['UIInfo ' ]['DisplayName ' ]['en ' ];
290- } else {
291- $ entities [Config::MODE_SP ]['name ' ] = $ request ['Destination ' ]['name ' ]['en ' ] ?? '' ;
292- }
286+ $ entities [Config::MODE_SP ]['id ' ] = $ this ->getSpIdentifier ($ request );
287+ $ entities [Config::MODE_SP ]['name ' ] = $ this ->getSpName ($ request );
293288 }
294289
295290 if (Config::MODE_PROXY !== $ this ->mode && Config::MODE_MULTI_IDP !== $ this ->mode ) {
@@ -372,4 +367,41 @@ private function getAggregateGroupBy($ids)
372367
373368 return $ this ->escape_cols ($ columns );
374369 }
370+
371+ private function getIdpIdentifier ($ request )
372+ {
373+ $ sourceIdpEntityIdAttribute = $ this ->config ->getSourceIdpEntityIdAttribute ();
374+ if (!empty ($ sourceIdpEntityIdAttribute ) && !empty ($ request ['Attributes ' ][$ sourceIdpEntityIdAttribute ][0 ])) {
375+ return $ request ['Attributes ' ][$ sourceIdpEntityIdAttribute ][0 ];
376+ }
377+
378+ return $ request ['saml:sp:IdP ' ];
379+ }
380+
381+ private function getUserId ($ request )
382+ {
383+ $ idAttribute = $ this ->config ->getIdAttribute ();
384+
385+ return isset ($ request ['Attributes ' ][$ idAttribute ]) ? $ request ['Attributes ' ][$ idAttribute ][0 ] : '' ;
386+ }
387+
388+ private function getIdpName ($ request )
389+ {
390+ return $ request ['Attributes ' ]['sourceIdPName ' ][0 ];
391+ }
392+
393+ private function getSpIdentifier ($ request )
394+ {
395+ return $ request ['Destination ' ]['entityid ' ];
396+ }
397+
398+ private function getSpName ($ request )
399+ {
400+ $ displayName = $ request ['Destination ' ]['UIInfo ' ]['DisplayName ' ]['en ' ] ?? '' ;
401+ if (empty ($ displayName )) {
402+ $ displayName = $ request ['Destination ' ]['name ' ]['en ' ] ?? '' ;
403+ }
404+
405+ return $ displayName ;
406+ }
375407}
0 commit comments