aboutsummaryrefslogtreecommitdiff
path: root/js
diff options
context:
space:
mode:
Diffstat (limited to 'js')
-rw-r--r--js/lib/ajax.js2
-rw-r--r--js/lib/configuration.js7
-rw-r--r--js/lib/security.js22
3 files changed, 27 insertions, 4 deletions
diff --git a/js/lib/ajax.js b/js/lib/ajax.js
index 36f76b2c3..5e290df6f 100644
--- a/js/lib/ajax.js
+++ b/js/lib/ajax.js
@@ -193,7 +193,7 @@ elgg.action = function(action, options) {
//Always display system messages after actions
var custom_success = options.success || elgg.nullFunction;
options.success = function(json, two, three, four) {
- if (json.system_messages) {
+ if (json && json.system_messages) {
elgg.register_error(json.system_messages.errors);
elgg.system_message(json.system_messages.success);
}
diff --git a/js/lib/configuration.js b/js/lib/configuration.js
index d0c852bd0..f724a2f01 100644
--- a/js/lib/configuration.js
+++ b/js/lib/configuration.js
@@ -1,7 +1,10 @@
elgg.provide('elgg.config');
-elgg.config.wwwroot = '/';
-
+/**
+ * Returns the current site URL
+ *
+ * @return {String} The site URL.
+ */
elgg.get_site_url = function() {
return elgg.config.wwwroot;
} \ No newline at end of file
diff --git a/js/lib/security.js b/js/lib/security.js
index f88c6165d..fa0a6f7ef 100644
--- a/js/lib/security.js
+++ b/js/lib/security.js
@@ -5,13 +5,15 @@ elgg.provide('elgg.security');
elgg.security.token = {};
+elgg.security.tokenRefreshFailed = false;
+
/**
* Sets the currently active security token and updates all forms and links on the current page.
*
* @param {Object} json The json representation of a token containing __elgg_ts and __elgg_token
* @return {Void}
*/
-elgg.security.setToken = function(json) {
+elgg.security.setToken = function(json) {
//update the convenience object
elgg.security.token = json;
@@ -34,6 +36,24 @@ elgg.security.setToken = function(json) {
*/
elgg.security.refreshToken = function() {
elgg.action('security/refreshtoken', function(data) {
+
+ // @todo might want to move this to setToken() once http://trac.elgg.org/ticket/3127
+ // is implemented. It's here right now to avoid soggy code.
+ if (!data || !(data.output.__elgg_ts && data.output.__elgg_token)) {
+ elgg.register_error(elgg.echo('js:security:token_refresh_failed', [elgg.get_site_url()]));
+ elgg.security.tokenRefreshFailed = true;
+
+ // don't setToken because we refresh every 5 minutes and tokens are good for 1
+ // hour by default
+ return;
+ }
+
+ // if had problems last time, let them know it's working now
+ if (elgg.security.tokenRefreshFailed) {
+ elgg.system_message(elgg.echo('js:security:token_refreshed', [elgg.get_site_url()]));
+ elgg.security.tokenRefreshFailed = false;
+ }
+
elgg.security.setToken(data.output);
});
};