Não pode escolher mais do que 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.

146 linhas
3.3 KiB

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