auth code now returns { authtoken : <t> , authtime : <sec> } as the payload
authorerickson <erickson@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Wed, 7 Dec 2005 16:26:30 +0000 (16:26 +0000)
committererickson <erickson@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Wed, 7 Dec 2005 16:26:30 +0000 (16:26 +0000)
so the OPAC will know what the timeout should be

git-svn-id: svn://svn.open-ils.org/ILS/trunk@2256 dcc99617-32d9-48b4-a31d-7c20da2025e4

Open-ILS/src/c-apps/oils_auth.c
Open-ILS/src/c-apps/oils_event.h
Open-ILS/web/opac/common/js/opac_utils.js
OpenSRF/src/srfsh/srfsh.c

index 9cba8c7..ecaa1fd 100644 (file)
@@ -31,7 +31,9 @@ int osrfAppInitialize() {
                MODULENAME, 
                "open-ils.auth.authenticate.complete", 
                "oilsAuthComplete", 
-               "Completes the authentication process and returns the auth token "
+               "Completes the authentication process.  Returns an object like so: "
+               "{authtoken : <token>, authtime:<time>}, where authtoken is the login "
+               "tokena and authtime is the number of seconds the session will be active"
                "PARAMS(username, md5sum( seed + password ), type )", 2, 0 );
 
        osrfAppRegisterMethod( 
@@ -196,7 +198,7 @@ double oilsAuthGetTimeout( jsonObject* userObj, char* type, double orgloc ) {
                }
                if(!timeout) {
                        if(!strcmp(type, "staff")) return __oilsAuthStaffTimeout;
-                       return __oilsAuthStaffTimeout;
+                       return __oilsAuthOPACTimeout;
                }
        }
        double t = atof(timeout);
@@ -228,9 +230,12 @@ oilsEvent* oilsAuthHandleLoginOK(
        oilsFMSetString( userObj, "passwd", "" );
        osrfCachePutObject( authKey, userObj, timeout ); 
        osrfLogInternal("oilsAuthComplete(): Placed user object into cache");
-       response = oilsNewEvent2( OILS_EVENT_SUCCESS, jsonNewObject(authToken) );
+       jsonObject* payload = jsonParseString(
+               "{ \"authtoken\": \"%s\", \"authtime\": %lf }", authToken, timeout );
 
+       response = oilsNewEvent2( OILS_EVENT_SUCCESS, payload );
        free(string); free(authToken); free(authKey);
+       jsonObjectFree(payload);
        return response;
 }
 
index 226e7a7..0ed9f7d 100644 (file)
@@ -35,7 +35,10 @@ oilsEvent* oilsNewEvent4( char* event, char* perm, int permloc, jsonObject* payl
 /** Sets the permission info for the event */
 void oilsEventSetPermission( oilsEvent* event, char* perm, int permloc );
 
-/* Sets the payload for the event */
+/* Sets the payload for the event 
+ * This clones the payload, so the user is responsible
+ * for handling the payload object's memory
+ * */
 void oilsEventSetPayload( oilsEvent* event, jsonObject* payload );
 
 /** Creates the JSON associated with an event.  The JSON should NOT be
index 1dec65e..994e38e 100644 (file)
@@ -75,6 +75,7 @@ function initParams() {
        MRID            = parseInt(cgi.param(PARAM_MRID));
        RID             = parseInt(cgi.param(PARAM_RID));
        TOPRANK  = parseFloat(cgi.param(PARAM_TOPRANK));
+       AUTHTIME        = parseInt(cgi.param(PARAM_AUTHTIME));
 
        /* set up some sane defaults */
        if(isNaN(LOCATION))     LOCATION        = 1;
@@ -86,6 +87,7 @@ function initParams() {
        if(isNaN(RID))                  RID             = 0;
        if(isNaN(ORIGLOC))      ORIGLOC = 0;
        if(isNaN(TOPRANK))      TOPRANK = 1;
+       if(isNaN(AUTHTIME))     AUTHTIME        = 1;
 }
 
 function initCookies() {
@@ -108,6 +110,7 @@ function getMrid(){return MRID;};
 function getRid(){return RID;};
 function getOrigLocation(){return ORIGLOC;}
 function getTopRank(){return TOPRANK;}
+function getAuthtime() { return AUTHTIME; }
 
 function getSearchBarExtras(){return SBEXTRAS;}
 function getFontSize(){return FONTSIZE;};
@@ -156,6 +159,7 @@ function  buildOPACLink(args, slim, ssl) {
                string += "&" + x + "=" + encodeURIComponent(args[x]);
        }
 
+       string += _appendParam(ORIGLOC, PARAM_ORIGLOC, args, getOrigLocation, string);
        string += _appendParam(TERM,            PARAM_TERM, args, getTerm, string);
        string += _appendParam(STYPE,           PARAM_STYPE, args, getStype, string);
        string += _appendParam(LOCATION, PARAM_LOCATION, args, getLocation, string);
@@ -167,6 +171,7 @@ function  buildOPACLink(args, slim, ssl) {
        string += _appendParam(MRID,            PARAM_MRID, args, getMrid, string);
        string += _appendParam(RID,             PARAM_RID, args, getRid, string);
        string += _appendParam(TOPRANK, PARAM_TOPRANK, args, getTopRank, string);
+       string += _appendParam(AUTHTIME,        PARAM_AUTHTIME, args, getAuthtime, string);
 
        return string.replace(/\&$/,'').replace(/\?\&/,"?");    
 }
@@ -385,7 +390,7 @@ function doLogin() {
    }
 
    var auth_request = new Request( LOGIN_COMPLETE, 
-               uname, hex_md5(seed + hex_md5(passwd)), "opac");
+               uname, hex_md5(seed + hex_md5(passwd)), "opac", getOrigLocation());
 
 
    auth_request.send(true);
@@ -394,7 +399,8 @@ function doLogin() {
        var code = checkILSEvent(auth_result);
        if(code) { alertILSEvent(code); return null; }
 
-       var u = grabUser(auth_result.payload, true);
+       var u = grabUser(auth_result.payload.authtoken, true);
+       AUTHTIME = parseInt(auth_result.payload.authtime);
        if(u) runEvt( "common", "locationChanged", u.home_ou(), findOrgDepth(u.home_ou()) );
 
        checkUserSkin();
index de0969b..85edc6d 100644 (file)
@@ -282,14 +282,18 @@ int handle_login( char* words[]) {
                parse_request( buf2 );
 
                jsonObject* x = last_result->_result_content;
+               double authtime = 0;
                if(x) {
-                       char* authtoken = jsonObjectGetString(jsonObjectGetKey(x,"payload"));
+                       char* authtoken = jsonObjectGetString(
+                                       jsonObjectGetKey(jsonObjectGetKey(x,"payload"), "authtoken"));
+                       authtime  = jsonObjectGetNumber(
+                                       jsonObjectGetKey(jsonObjectGetKey(x,"payload"), "authtime"));
                        if(authtoken) login_session = strdup(authtoken);
                        else login_session = NULL;
                }
                else login_session = NULL;
 
-               printf("Login Session: %s\n", login_session );
+               printf("Login Session: %s.  Session timeout: %lf\n", login_session, authtime );
                
                return 1;