user.js 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  1. import auth from "../../api/auth.js";
  2. import validation from "../../validation.js";
  3. const state = {};
  4. const getters = {};
  5. const actions = {};
  6. const mutations = {};
  7. const modules = {
  8. auth: {
  9. namespaced: true,
  10. state: {},
  11. getters: {},
  12. actions: {
  13. register: ({ commit }, user, recaptchaId) => {
  14. return new Promise((resolve, reject) => {
  15. const { username, email, password } = user;
  16. if (!email || !username || !password)
  17. return reject({
  18. status: "error",
  19. message: "Please fill in all fields"
  20. });
  21. if (!validation.isLength(email, 3, 254))
  22. return reject({
  23. status: "error",
  24. message: "Email must have between 3 and 254 characters."
  25. });
  26. if (
  27. email.indexOf("@") !== email.lastIndexOf("@") ||
  28. !validation.regex.emailSimple.test(email)
  29. )
  30. return reject({
  31. status: "error",
  32. message: "Invalid email format."
  33. });
  34. if (!validation.isLength(username, 2, 32))
  35. return reject({
  36. status: "error",
  37. message: "Username must have between 2 and 32 characters."
  38. });
  39. if (!validation.regex.azAZ09_.test(username))
  40. return reject({
  41. status: "error",
  42. message:
  43. "Invalid username format. Allowed characters: a-z, A-Z, 0-9 and _."
  44. });
  45. if (!validation.isLength(password, 6, 200))
  46. return reject({
  47. status: "error",
  48. message: "Password must have between 6 and 200 characters."
  49. });
  50. if (!validation.regex.password.test(password))
  51. return reject({
  52. status: "error",
  53. message:
  54. "Invalid password format. Must have one lowercase letter, one uppercase letter, one number and one special character."
  55. });
  56. auth
  57. .register(user, recaptchaId)
  58. .then(res => {
  59. return resolve({
  60. status: "success",
  61. message: "Account registered!"
  62. });
  63. })
  64. .catch(err => {
  65. return reject({ status: "error", message: err.message });
  66. });
  67. });
  68. },
  69. login: ({ commit }, user) => {
  70. return new Promise((resolve, reject) => {
  71. auth
  72. .login(user)
  73. .then(res => {
  74. return resolve({
  75. status: "success",
  76. message: "Logged in!"
  77. });
  78. })
  79. .catch(err => {
  80. return reject({ status: "error", message: err.message });
  81. });
  82. });
  83. }
  84. },
  85. mutations: {}
  86. },
  87. playlists: {
  88. namespaced: true,
  89. state: {
  90. editing: ""
  91. },
  92. getters: {},
  93. actions: {
  94. editPlaylist: ({ commit }, id) => commit("editPlaylist", id)
  95. },
  96. mutations: {
  97. editPlaylist(state, id) {
  98. state.editing = id;
  99. }
  100. }
  101. }
  102. };
  103. export default {
  104. namespaced: true,
  105. state,
  106. getters,
  107. actions,
  108. mutations,
  109. modules
  110. };