import io from "../io"; // when Vuex needs to interact with socket.io export default { register(user) { return new Promise((resolve, reject) => { const { username, email, password, recaptchaToken } = user; io.getSocket(socket => { socket.emit( "users.register", username, email, password, recaptchaToken, res => { if (res.status === "success") { if (res.SID) { lofig.get("cookie", cookie => { let date = new Date(); date.setTime( new Date().getTime() + 2 * 365 * 24 * 60 * 60 * 1000 ); let secure = cookie.secure ? "secure=true; " : ""; document.cookie = `SID=${ res.SID }; expires=${date.toGMTString()}; domain=${ cookie.domain }; ${secure}path=/`; return resolve({ status: "success" }); }); } else return reject({ status: "error", message: "You must login" }); } else return reject({ status: "error", message: res.message }); } ); }); }); }, login(user) { return new Promise((resolve, reject) => { const { email, password } = user; io.getSocket(socket => { socket.emit("users.login", email, password, res => { if (res.status === "success") { lofig.get("cookie", cookie => { let date = new Date(); date.setTime( new Date().getTime() + 2 * 365 * 24 * 60 * 60 * 1000 ); let secure = cookie.secure ? "secure=true; " : ""; let domain = ""; if (cookie.domain !== "localhost") domain = ` domain=${cookie.domain};`; document.cookie = `SID=${ res.SID }; expires=${date.toGMTString()}; ${domain}${secure}path=/`; return resolve({ status: "success" }); }); } else return reject({ status: "error", message: res.message }); }); }); }); } };