auth.js 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. import io from "../io";
  2. // when Vuex needs to interact with socket.io
  3. export default {
  4. register(user, recaptchaId) {
  5. return new Promise((resolve, reject) => {
  6. const { username, email, password } = user;
  7. io.getSocket(socket => {
  8. socket.emit(
  9. "users.register",
  10. username,
  11. email,
  12. password,
  13. grecaptcha.getResponse(recaptchaId),
  14. res => {
  15. if (res.status === "success") {
  16. if (res.SID) {
  17. lofig.get("cookie", cookie => {
  18. let date = new Date();
  19. date.setTime(
  20. new Date().getTime() + 2 * 365 * 24 * 60 * 60 * 1000
  21. );
  22. let secure = cookie.secure ? "secure=true; " : "";
  23. document.cookie = `SID=${
  24. res.SID
  25. }; expires=${date.toGMTString()}; domain=${
  26. cookie.domain
  27. }; ${secure}path=/`;
  28. return resolve({ status: "success" });
  29. });
  30. } else
  31. return reject({ status: "error", message: "You must login" });
  32. } else return reject({ status: "error", message: res.message });
  33. }
  34. );
  35. });
  36. });
  37. },
  38. login(user) {
  39. return new Promise((resolve, reject) => {
  40. const { email, password } = user;
  41. io.getSocket(socket => {
  42. socket.emit("users.login", email, password, res => {
  43. if (res.status === "success") {
  44. lofig.get("cookie", cookie => {
  45. let date = new Date();
  46. date.setTime(
  47. new Date().getTime() + 2 * 365 * 24 * 60 * 60 * 1000
  48. );
  49. let secure = cookie.secure ? "secure=true; " : "";
  50. let domain = "";
  51. if (cookie.domain !== "localhost")
  52. domain = ` domain=${cookie.domain};`;
  53. document.cookie = `SID=${
  54. res.SID
  55. }; expires=${date.toGMTString()}; ${domain}${secure}path=/`;
  56. return resolve({ status: "success" });
  57. });
  58. } else return reject({ status: "error", message: res.message });
  59. });
  60. });
  61. });
  62. }
  63. };