
const cookies = ["ediliCartaceoComputo","ingrosso","vari","edili","tessili","metalli","materiali","energetici","chimici","carta","alimentari","solocomputo","tablet","edilicartaceo","immobiliMI","immobiliMB","immobiliLO","immobiliMI_abbo","immobiliMB_abbo","immobiliLO_abbo","immobiliMI_abbotwins","immobiliMB_abbotwins","immobiliLO_abbotwins","impianticartaceo","Caping","Capedi","ediliMI_abbotripple","ediliCartaceoComputo"];

async function _pp_set_cookies(cookies) {
    Object.keys(cookies).forEach(function (key) {
        document.cookie = key + '=' + cookies[key] + ';path=/;SameSite=Strict';
    });
}

async function _pp_clear_cookies() {
    sessionStorage.removeItem('pp_login');
    document.cookie = 'reg_utente=; Path=/; Expires=Thu, 01 Jan 1970 00:00:01 GMT;SameSite=Strict'
    document.cookie = 'prezzi.loggedin=; Path=/; Expires=Thu, 01 Jan 1970 00:00:01 GMT;SameSite=Strict'

    Object.keys(cookies).forEach(function(key) {
        document.cookie = cookies[key] + '=; expires=Thu, 01 Jan 1970 00:00:01 GMT;SameSite=Strict';
    });
}

async function _pp_login(e){
    e.preventDefault();

    const username = document.getElementById('login');
    const password = document.getElementById('password');

    try {
        const response = await fetch('https://shop.piuprezzi.it/wp-json/prezzi/v1/login?site=all', {
            method: 'POST',
            headers: {
                'Content-Type': 'application/json',
            },
            body: JSON.stringify({
                username: window.btoa(username.value),
                password: window.btoa(password.value),
            }),
        });

        if (response.ok) {
            const data = await response.json();
            sessionStorage.setItem('pp_login', data.token);
            await _pp_set_cookies(data.cookies);

            window.location.reload();
        } else {
            password.value = '';
            alert('Password non riconosciuta');
        }

    } catch (error) {
        console.error(error.message);
    }
}

async function _pp_logout(e){
    e.preventDefault();
    const token = sessionStorage.getItem('pp_login');

    await fetch('https://shop.piuprezzi.it/wp-json/prezzi/v1/logout', {
        method: 'POST',
        headers: {
            'Content-Type': 'application/json',
        },
        body: JSON.stringify({token}),
    });

    await _pp_clear_cookies();

    window.location.reload();
}

function _pp_show_login_form() {
    _pp_clear_cookies()
        .then(() => {
            document.getElementById('pp_login_form_container').innerHTML = "\r\n<form action=\"#\" name=\"pp_login\" onsubmit=\"_pp_login(event);\">\r\n    <div id=\"reglink\">\r\n        <a href=\"https:\/\/shop.piuprezzi.it\/account\/\"><span>Registrati<\/span><\/a>\r\n    <\/div>\r\n\r\n    <label for=\"login\" id=\"loginlabel\">User:<\/label>\r\n    <input type=\"text\" name=\"username\" value=\"\" id=\"login\">\r\n\r\n    <label for=\"password\" id=\"passwordlabel\">Password:<\/label>\r\n    <input type=\"password\" name=\"password\" value=\"\" id=\"password\">\r\n\r\n    <input class=\"header_button\" type=\"submit\" name=\"submit\" value=\"\" alt=\"invia\" title=\"invia\">\r\n\r\n    <a href=\"https:\/\/shop.piuprezzi.it\/account\/lost-password\/\" id=\"forgotpassword\">Hai dimenticato la password?<\/a>\r\n\r\n<\/form>";
        });
}

async function _pp_validate_token(token, redirect) {
    const response = await fetch('https://shop.piuprezzi.it/wp-json/prezzi/v1/validate/?site=all', {
        method: 'POST',
        headers: {
            'Content-Type': 'application/json',
        },
        body: JSON.stringify({token}),
    });

    if (response.ok) {
        const data = await response.json();
        sessionStorage.setItem('pp_login', data.token);

        Object.keys(data.cookies).forEach(function (key) {
            document.cookie = key + '=' + data.cookies[key] + ';path=/;SameSite=Strict';
        });

        document.getElementById('pp_login_form_container').innerHTML = data.content;

        if (redirect) {
            window.location.href = redirect.substring(0, redirect.length - 1);
        }

    } else {
        await _pp_clear_cookies();
        _pp_show_login_form();
    }
}

document.write('<div id="pp_login_form_container"></div>');

const urlToken = window.location.href.split('token=');
const token = sessionStorage.getItem('pp_login');

if ( urlToken[1] ) {
    _pp_validate_token(urlToken[1], urlToken[0]);
} else {
    token ? _pp_validate_token(token) : _pp_show_login_form();
}
