Home Reference Source Repository

src/helper/cookie.js

/**
 * Cookie
 */
export class Cookie {

    constructor(companyId) {
        this.companyId = (companyId || 1);
    }

    /**
     * Create the cookie.
     *
     * @param {string} cname - The cookie name.
     * @param {string|number} cvalue - The cookie value.
     * @param {number} days - The expiration days.
     *
     * @returns {String}
     */
    createCookie(cname, cvalue, days) {
        let name = this.getCookie(cname);

        if (name !== '') {
            return name;
        }

        if (cname && cvalue && days) {
            this._setCookie(cname, cvalue, days);

            return this.getCookie(cname);
        }

        return '';
    }

    /**
     * Delete the cookie.
     * @param {string} cname - The cookie name.
     */
    deleteCookie(cname) {
        let data = this.getCookie(cname);

        if (data !== '') {
            this._setCookie(cname, data, -1);
        }
    }

    /**
     * Check/Return the cookie if it's exists.
     *
     * @param {string} cname - The cookie name.
     *
     * @returns {String}
     */
    getCookie(cname) {
        let data = this._getCookie(cname);

        if (data) {
            return data;
        }

        return '';
    }

    /**
     * Concat cookie name
     *
     * @param {string} cname - Cookie name
     *
     * @return {string}
     */
    _concatName(cname) {
        let cookieName = '';

        return cookieName.concat(
            'ing',
            '_',
            this.companyId,
            '_',
            (cname || '')
        );
    }

    /**
     * Set the cookie.
     *
     * @param {string} cname - The cookie name.
     * @param {string|number} cvalue - The cookie value.
     * @param {number} exdays - The expiration days.
     */
    _setCookie(cname, cvalue, exdays) {
        let date = new Date();
        date.setTime(date.getTime() + (exdays*24*60*60*1000));
        let expires = 'expires=' + date.toUTCString();
        let domain =
            document.location.hostname.includes('.ingresse.com') ?
                '.ingresse.com' : document.location.hostname;

        document.cookie =
            this._concatName(cname) + '=' + cvalue + ';secure' +
            expires + ';' +
            'domain=' + domain + ';' +
            'path=/'
        ;
    }

    /**
     * Get the cookie.
     *
     * @param {string} cname - The cookie name.
     *
     * @returns {String}
     */
    _getCookie(cname) {
        let name = (this._concatName(cname) + '=');
        let decodedCookie = decodeURIComponent(document.cookie);
        let scookie = decodedCookie.split(';');

        for (let i = 0; i < scookie.length; i++) {
            let c = scookie[i];

            while (c.charAt(0) === ' ') {
                c = c.substring(1);
            }

            if (c.indexOf(name) === 0) {
                return c.substring(name.length, c.length);
            }
        }

        return '';
    }
}