You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

148 regels
3.9 KiB

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