Nie możesz wybrać więcej, niż 25 tematów Tematy muszą się zaczynać od litery lub cyfry, mogą zawierać myślniki ('-') i mogą mieć do 35 znaków.
 
 

152 wiersze
4.1 KiB

  1. import apollo from "../../lib/apollo.js";
  2. import partners from "../partner/partner";
  3. async function register(first_name, last_name, username, email, password, token = "") {
  4. var res = await apollo.mutation(
  5. `
  6. mutation($username: String! $first_name: String! $last_name: String! $email: String! $password: String!) {
  7. register(input: { first_name: $first_name, last_name: $last_name, username: $username, email: $email, password: $password }) {
  8. jwt
  9. user {
  10. firstname
  11. lastname
  12. username
  13. email
  14. }
  15. }
  16. }`,
  17. token,
  18. {
  19. first_name: first_name,
  20. last_name: last_name,
  21. username: username,
  22. email: email,
  23. password: password,
  24. }
  25. );
  26. return res;
  27. }
  28. async function login(partner, email, password, token = "") {
  29. var cookiesData = {};
  30. var res = await apollo.mutation(
  31. `
  32. mutation($email: String! $password: String!) {
  33. login(input: { identifier: $email, password: $password }) {
  34. user{
  35. id
  36. username
  37. }
  38. jwt
  39. }
  40. }`,
  41. token,
  42. {
  43. email: email,
  44. password: password,
  45. }
  46. );
  47. if (res["STATUS"] == 1) {
  48. token = res["DATA"]["login"]["jwt"];
  49. res = await apollo.mutation(
  50. `
  51. query{
  52. self{
  53. id
  54. username
  55. email
  56. role{
  57. name
  58. description
  59. }
  60. partners_login_states{
  61. id
  62. business_partner{
  63. id
  64. name
  65. }
  66. }
  67. }
  68. }
  69. `,
  70. token
  71. );
  72. }
  73. if (res["STATUS"] == 1) {
  74. var user = res["DATA"]["self"];
  75. var sessions = [];
  76. for (const i of user["partners_login_states"]) {
  77. sessions.push(i.business_partner);
  78. }
  79. sessions = sessions.filter(
  80. (i) =>
  81. i.business_partner &&
  82. i.business_partner.name.toUpperCase() == partner.toUpperCase()
  83. );
  84. if (sessions.length == 0) {
  85. res = await partners.getID(partner, token);
  86. if (res["STATUS"] == 1) {
  87. res = await apollo.mutation(
  88. `
  89. mutation($input: PartnersLoginStateInput!) {
  90. createPartnersLoginState(input:{data:$input}){
  91. partnersLoginState{
  92. id
  93. business_partner{
  94. id
  95. name
  96. }
  97. }
  98. }
  99. }
  100. `,
  101. token,
  102. {
  103. input: {
  104. user: user["id"],
  105. business_partner:
  106. res["DATA"]["businessPartners"][0]["id"],
  107. },
  108. }
  109. );
  110. if (res["STATUS"] == 1) {
  111. user["partners_login_states"].push(
  112. res["DATA"]["createPartnersLoginState"][
  113. "partnersLoginState"
  114. ]
  115. );
  116. }
  117. }
  118. }
  119. cookiesData["user"] = user;
  120. cookiesData["token"] = token;
  121. }
  122. return { res: res, cookies: cookiesData };
  123. }
  124. async function logout(id, token = "") {
  125. var res = await apollo.mutation(
  126. `
  127. mutation($input: ID!) {
  128. deletePartnersLoginState(input:{where:{id:$input}}){
  129. partnersLoginState{
  130. id
  131. }
  132. }
  133. }`,
  134. token,
  135. {
  136. input: id,
  137. }
  138. );
  139. return res;
  140. }
  141. module.exports = {
  142. register: register,
  143. login: login,
  144. logout: logout,
  145. };