diff options
Diffstat (limited to 'js/lib/session.js')
-rw-r--r-- | js/lib/session.js | 123 |
1 files changed, 123 insertions, 0 deletions
diff --git a/js/lib/session.js b/js/lib/session.js new file mode 100644 index 000000000..a8d52733c --- /dev/null +++ b/js/lib/session.js @@ -0,0 +1,123 @@ +/** + * Provides session methods. + */ +elgg.provide('elgg.session'); + +/** + * Helper function for setting cookies + * @param {string} name + * @param {string} value + * @param {Object} options + * + * {number|Date} options[expires] + * {string} options[path] + * {string} options[domain] + * {boolean} options[secure] + * + * @return {string|undefined} The value of the cookie, if only name is specified. Undefined if no value set + */ +elgg.session.cookie = function(name, value, options) { + var cookies = [], cookie = [], i = 0, date, valid = true; + + //elgg.session.cookie() + if (elgg.isUndefined(name)) { + return document.cookie; + } + + //elgg.session.cookie(name) + if (elgg.isUndefined(value)) { + if (document.cookie && document.cookie !== '') { + cookies = document.cookie.split(';'); + for (i = 0; i < cookies.length; i += 1) { + cookie = jQuery.trim(cookies[i]).split('='); + if (cookie[0] === name) { + return decodeURIComponent(cookie[1]); + } + } + } + return undefined; + } + + // elgg.session.cookie(name, value[, opts]) + options = options || {}; + + if (elgg.isNull(value)) { + value = ''; + options.expires = -1; + } + + cookies.push(name + '=' + value); + + if (options.expires) { + if (elgg.isNumber(options.expires)) { + date = new Date(); + date.setTime(date.getTime() + (options.expires * 24 * 60 * 60 * 1000)); + } else if (options.expires.toUTCString) { + date = options.expires; + } + + if (date) { + cookies.push('expires=' + date.toUTCString()); + } + } + + // CAUTION: Needed to parenthesize options.path and options.domain + // in the following expressions, otherwise they evaluate to undefined + // in the packed version for some reason. + if (options.path) { + cookies.push('path=' + (options.path)); + } + + if (options.domain) { + cookies.push('domain=' + (options.domain)); + } + + if (options.secure) { + cookies.push('secure'); + } + + document.cookie = cookies.join('; '); +}; + +/** + * Returns the object of the user logged in. + * + * @return {ElggUser} The logged in user + */ +elgg.get_logged_in_user_entity = function() { + return elgg.session.user; +}; + +/** + * Returns the GUID of the logged in user or 0. + * + * @return {number} The GUID of the logged in user + */ +elgg.get_logged_in_user_guid = function() { + var user = elgg.get_logged_in_user_entity(); + return user ? user.guid : 0; +}; + +/** + * Returns if a user is logged in. + * + * @return {boolean} Whether there is a user logged in + */ +elgg.is_logged_in = function() { + return (elgg.get_logged_in_user_entity() instanceof elgg.ElggUser); +}; + +/** + * Returns if the currently logged in user is an admin. + * + * @return {boolean} Whether there is an admin logged in + */ +elgg.is_admin_logged_in = function() { + var user = elgg.get_logged_in_user_entity(); + return (user instanceof elgg.ElggUser) && user.isAdmin(); +}; + +/** + * @deprecated Use elgg.session.cookie instead + */ +jQuery.cookie = elgg.session.cookie;
\ No newline at end of file |