@@ -87,7 +87,7 @@ protected function request($action, $params = null, $attempts = 3)
8787 try {
8888
8989 $ authenticationToken = $ this ->getAuthToken ();
90- $ sessionToken = $ this ->getSessionToken ($ authenticationToken );
90+ $ sessionToken = $ this ->getSessionToken ($ authenticationToken, ' n ' );
9191
9292
9393 if (empty ($ authenticationToken )){
@@ -115,7 +115,7 @@ protected function request($action, $params = null, $attempts = 3)
115115 switch ($ code ) {
116116 case EBSCOConnector::EDS_AUTH_TOKEN_INVALID :
117117 $ authenticationToken = $ this ->getAuthToken ();
118- $ sessionToken = $ this ->getSessionToken ($ authenticationToken );
118+ $ sessionToken = $ this ->getSessionToken ($ authenticationToken, ' n ' );
119119 $ headers = array (
120120 'x-authenticationToken: ' . $ authenticationToken ,
121121 'x-sessionToken: ' . $ sessionToken
@@ -224,24 +224,42 @@ public function apiAuthenticationToken()
224224 */
225225 public function getSessionToken ($ authenToken , $ guest ='n ' ){
226226 $ token = '' ;
227- $ configFile ="Config.xml " ;
228-
227+ $ configFile ="Config.xml " ;
228+
229+ if (isset ($ _SESSION ['sessionToken ' ]) && !empty ($ _SESSION ['sessionToken ' ]) && isset ($ _SESSION ['sessionTimeoutValue ' ]) && ((int )$ _SESSION ['sessionTimeoutValue ' ] > (int )time ()) && isset ($ _SESSION ['guest ' ]) && ($ guest == $ _SESSION ['guest ' ])){
230+ // if a sessionToken exists
231+ // AND the sessionTimeout value is greater than current time()
232+ // AND guest status has not change
233+ // return the token that is part of the current SESSION and write forward the sessionTimeoutValue
234+
235+ $ _SESSION ['sessionTimeoutValue ' ] = time ()+($ _SESSION ['sessionTimeout ' ]*0.9 );
236+ $ token = $ _SESSION ['sessionToken ' ];
237+ }
238+ else {
229239 // Check user's login status
230- if (isset ($ _SESSION ['login ' ]) or (validAuthIP ($ configFile )==true )){
231- if (($ guest =='n ' ) or (validAuthIP ($ configFile )==true )){
232- $ sessionToken = $ this ->apiSessionToken ($ authenToken , 'n ' );
233- $ _SESSION ['sessionToken ' ]=$ sessionToken ;
234- }
235- $ token = $ _SESSION ['sessionToken ' ];
240+ if (isset ($ _SESSION ['login ' ]) or (validAuthIP ($ configFile )==true )){
241+ if (($ guest =='n ' ) or (validAuthIP ($ configFile )==true )){
242+ $ sessionToken = $ this ->apiSessionToken ($ authenToken , 'n ' );
243+
244+ //ensure your sessionToken, GuestStatus and SessionTimeoutValue is set
245+ $ _SESSION ['sessionToken ' ]=$ sessionToken ;
246+ $ _SESSION ['guest ' ] = $ guest ;
247+ $ _SESSION ['sessionTimeoutValue ' ] = time ()+($ _SESSION ['sessionTimeout ' ]*0.9 );
248+ }
249+ $ token = $ _SESSION ['sessionToken ' ];
250+ }
251+ else {
252+ $ sessionToken = $ this ->apiSessionToken ($ authenToken , 'y ' );
253+ $ _SESSION ['sessionToken ' ]=$ sessionToken ;
254+ $ token = $ _SESSION ['sessionToken ' ];
255+ //ensure your sessionToken, GuestStatus and SessionTimeoutValue is set
256+
257+ $ _SESSION ['guest ' ] = $ guest ;
258+ $ _SESSION ['sessionTimeoutValue ' ] = time ()+($ _SESSION ['sessionTimeout ' ]*0.9 );
259+ // TODO: check IP validation
260+ }
236261 }
237- else
238- {
239- $ sessionToken = $ this ->apiSessionToken ($ authenToken , 'y ' );
240- $ _SESSION ['sessionToken ' ]=$ sessionToken ;
241-
242- $ token = $ _SESSION ['sessionToken ' ];
243- // TODO: check IP validation
244- }
262+
245263 return $ token ;
246264 }
247265
@@ -293,7 +311,6 @@ public function apiEndSessionToken($authenToken, $sessionToken){
293311 * @access public
294312 */
295313 public function apiSearch ($ params ) {
296-
297314 $ results = $ this ->request ('Search ' , $ params );
298315 return $ results ;
299316 }
@@ -377,7 +394,6 @@ public function getInfo()
377394 public function apiInfo (){
378395
379396 $ response = $ this ->request ('Info ' );
380-
381397 $ Info = array (
382398 'Info ' => $ response ,
383399 'timestamp ' =>time ()
0 commit comments