parent
a7292e897a
commit
743826bbf3
@ -0,0 +1,41 @@ |
||||
<?php |
||||
/** |
||||
* ownCloud |
||||
* @author Christian Reiner |
||||
* @copyright 2011-2012 Christian Reiner <foss@christian-reiner.info> |
||||
* |
||||
* This library is free software; you can redistribute it and/or |
||||
* modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE |
||||
* License as published by the Free Software Foundation; either |
||||
* version 3 of the license, or any later version. |
||||
* |
||||
* This library is distributed in the hope that it will be useful, |
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||
* GNU AFFERO GENERAL PUBLIC LICENSE for more details. |
||||
* |
||||
* You should have received a copy of the GNU Affero General Public |
||||
* License along with this library. |
||||
* If not, see <http://www.gnu.org/licenses/>. |
||||
* |
||||
*/ |
||||
|
||||
/** |
||||
* @file core/ajax/requesttoken.php |
||||
* @brief Ajax method to retrieve a fresh request protection token for ajax calls |
||||
* @return json: success/error state indicator including a fresh request token |
||||
* @author Christian Reiner |
||||
*/ |
||||
require_once '../../lib/base.php'; |
||||
|
||||
// don't load apps or filesystem for this task |
||||
$RUNTIME_NOAPPS = TRUE; |
||||
$RUNTIME_NOSETUPFS = TRUE; |
||||
|
||||
// Sanity checks |
||||
// using OCP\JSON::callCheck() below protects the token refreshing itself. |
||||
//OCP\JSON::callCheck ( ); |
||||
OCP\JSON::checkLoggedIn ( ); |
||||
// hand out a fresh token |
||||
OCP\JSON::success ( array ( 'token' => OCP\Util::callRegister() ) ); |
||||
?> |
@ -0,0 +1,55 @@ |
||||
/** |
||||
* ownCloud |
||||
* |
||||
* @file core/js/requesttoken.js |
||||
* @brief Routine to refresh the Request protection request token periodically |
||||
* @author Christian Reiner (arkascha) |
||||
* @copyright 2011-2012 Christian Reiner <foss@christian-reiner.info> |
||||
* |
||||
* This library is free software; you can redistribute it and/or |
||||
* modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE |
||||
* License as published by the Free Software Foundation; either |
||||
* version 3 of the license, or any later version. |
||||
* |
||||
* This library is distributed in the hope that it will be useful, |
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||
* GNU AFFERO GENERAL PUBLIC LICENSE for more details. |
||||
* |
||||
* You should have received a copy of the GNU Affero General Public |
||||
* License along with this library. |
||||
* If not, see <http://www.gnu.org/licenses/>.
|
||||
* |
||||
*/ |
||||
|
||||
OC.Request = { |
||||
// the request token
|
||||
Token: {}, |
||||
// the lifespan span (in secs)
|
||||
Lifespan: {}, |
||||
// method to refresh the local request token periodically
|
||||
Refresh: function(){ |
||||
// just a client side console log to preserve efficiency
|
||||
console.log("refreshing request token (lifebeat)"); |
||||
var dfd=new $.Deferred(); |
||||
$.ajax({ |
||||
type: 'POST', |
||||
url: OC.filePath('core','ajax','requesttoken.php'), |
||||
cache: false, |
||||
data: { }, |
||||
dataType: 'json' |
||||
}).done(function(response){ |
||||
// store refreshed token inside this class
|
||||
OC.Request.Token=response.token; |
||||
dfd.resolve(); |
||||
}).fail(dfd.reject); |
||||
return dfd; |
||||
} |
||||
} |
||||
// accept requesttoken and lifespan into the OC namespace
|
||||
OC.Request.Token = oc_requesttoken; |
||||
OC.Request.Lifespan = oc_requestlifespan; |
||||
// refresh the request token periodically shortly before it becomes invalid on the server side
|
||||
setInterval(OC.Request.Refresh,Math.floor(1000*OC.Request.Lifespan*0.93)), // 93% of lifespan value, close to when the token expires
|
||||
// early bind token as additional ajax argument for every single request
|
||||
$(document).bind('ajaxSend', function(elm, xhr, s){xhr.setRequestHeader('requesttoken', OC.Request.Token);}); |
Loading…
Reference in new issue