sarpay
5/1/2014 - 10:48 PM

[html5] [jquery] [jscript] client session (storage or cookie) management

[html5] [jquery] [jscript] client session (storage or cookie) management

/******************************************************
this sample is the complete client session management.
first it tries to make use of the HTML5 storage object.
if storage object is not supported, use cookies (IE7).
cookie management is supported by jquery.cookie.js lib.
******************************************************/

var storageKeyPrefix = 'empiricalbioscience_timerapp_';

function startSession(userName, ticket) {

    clearStorageItems();

    if (userName != null) {
        setStorageItem('username', userName, 'local');
    } else {
        removeStorageItem('username', 'local');
    }

    setStorageItem('ticket', ticket, 'session');

}


function getUsername() {

    var username = getStorageItem('username', 'local');
    //console.log(username);
    return username;

}


function getTicket() {

    var ticket = getStorageItem('ticket', 'session');
    //console.log(ticket);
    return ticket;

}


function setStorageItem(key, value, type) {

    if (typeof (Storage) !== 'undefined') {
        if (window[type + 'Storage']) {
            var storage = window[type + 'Storage'];
            storage.setItem(storageKeyPrefix + key, value);
            //console.log(storage.getItem(storageKeyPrefix + key));
        }
    } else {
        if (type == 'local') {
            $.cookie(storageKeyPrefix + key, value, { expires: 3650 }); /*expires in 10 years*/
        } else {
            $.cookie(storageKeyPrefix + key, value); /*expires at the end of session - time is not specified*/
        }
    }

}


function getStorageItem(key, type) {

    var item = null;
    
    if (typeof (Storage) !== 'undefined') {
        if (window[type + 'Storage']) {
            var storage = window[type + 'Storage'];
            item = storage.getItem(storageKeyPrefix + key);
            //console.log(item);
        }
    } else {
        item = $.cookie(storageKeyPrefix + key);
    }

    return item;

}


function removeStorageItem(key, type) {

    if (typeof (Storage) !== 'undefined') {
        if (window[type + 'Storage']) {
            var storage = window[type + 'Storage'];
            storage.removeItem(storageKeyPrefix + key);
        }
    } else {
        $.cookie(storageKeyPrefix + key, null);
    }

}


function clearStorageItems() {

    removeStorageItem('username', 'local');
    removeStorageItem('ticket', 'session');

}