auth.js 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. import Toast from "toasters";
  2. import io from "../io";
  3. // when Vuex needs to interact with socket.io
  4. export default {
  5. register(user) {
  6. return new Promise((resolve, reject) => {
  7. const { username, email, password, recaptchaToken } = user;
  8. io.getSocket(socket => {
  9. socket.emit(
  10. "users.register",
  11. username,
  12. email,
  13. password,
  14. recaptchaToken,
  15. res => {
  16. if (res.status === "success") {
  17. if (res.SID) {
  18. return lofig.get("cookie").then(cookie => {
  19. const date = new Date();
  20. date.setTime(
  21. new Date().getTime() +
  22. 2 * 365 * 24 * 60 * 60 * 1000
  23. );
  24. const secure = cookie.secure
  25. ? "secure=true; "
  26. : "";
  27. document.cookie = `SID=${
  28. res.SID
  29. }; expires=${date.toGMTString()}; domain=${
  30. cookie.domain
  31. }; ${secure}path=/`;
  32. return resolve({ status: "success" });
  33. });
  34. }
  35. return reject(new Error("You must login"));
  36. }
  37. return reject(new Error(res.message));
  38. }
  39. );
  40. });
  41. });
  42. },
  43. login(user) {
  44. return new Promise((resolve, reject) => {
  45. const { email, password } = user;
  46. io.getSocket(socket => {
  47. socket.emit("users.login", email, password, res => {
  48. if (res.status === "success") {
  49. return lofig.get("cookie").then(cookie => {
  50. const date = new Date();
  51. date.setTime(
  52. new Date().getTime() +
  53. 2 * 365 * 24 * 60 * 60 * 1000
  54. );
  55. const secure = cookie.secure ? "secure=true; " : "";
  56. let domain = "";
  57. if (cookie.domain !== "localhost")
  58. domain = ` domain=${cookie.domain};`;
  59. document.cookie = `${cookie.SIDname}=${
  60. res.SID
  61. }; expires=${date.toGMTString()}; ${domain}${secure}path=/`;
  62. return resolve({ status: "success" });
  63. });
  64. }
  65. return reject(new Error(res.message));
  66. });
  67. });
  68. });
  69. },
  70. logout() {
  71. return new Promise((resolve, reject) => {
  72. io.getSocket(socket => {
  73. socket.emit("users.logout", result => {
  74. if (result.status === "success") {
  75. return lofig.get("cookie").then(cookie => {
  76. document.cookie = `${cookie.SIDname}=;expires=Thu, 01 Jan 1970 00:00:01 GMT;`;
  77. return window.location.reload();
  78. });
  79. }
  80. new Toast({ content: result.message, timeout: 4000 });
  81. return reject(new Error(result.message));
  82. });
  83. });
  84. });
  85. }
  86. };