Skip to content
Snippets Groups Projects
UserAPI.ts 4.06 KiB
Newer Older
// TODO: Set according return types and don't use 'any' explicitly. Nor implicitly.
// Basically don't use 'any' in any context whatsoever. Despite it being the easiest solution.

/* eslint-disable @typescript-eslint/explicit-function-return-type */
/* eslint-disable @typescript-eslint/no-explicit-any */
Renzo Beux's avatar
Renzo Beux committed
import axios from 'axios';

require('dotenv').config();

Renzo Beux's avatar
Renzo Beux committed
const instance = axios.create({
  baseURL: process.env.AUTH_BASE_URL,
});

Renzo Beux's avatar
Renzo Beux committed
export const validate = async (token: string) => {
  const id = await instance.post('/validate', { token });
Renzo Beux's avatar
Renzo Beux committed
  return id.data;
Renzo Beux's avatar
Renzo Beux committed
};
Renzo Beux's avatar
Renzo Beux committed
const create = async (user: any) => {
  const res = await instance.post('/', user);
  return res.data;
const login = async (user: any) => {
  const res = await instance.post('/login', user);
  return res.data;
const listUsers = async (userType: any, givenLimit: any, givenOffset: any,
  givenSearch: any, token: string) => {
  const res = await instance.get('/', {
    headers: { authorization: token },
    params: {
      type: userType,
      limit: givenLimit,
      offset: givenOffset,
      search: givenSearch,
    },
  });
  return res.data;
const update = async (user: any, idUser: string, token: string) => {
  const res = await instance.put(url, user, { headers: { authorization: token } });
  return res.data;
// const password = async (user: any, idUser: string, token: string) => {
//   const url = `/${idUser}/password`;
//   const res = await instance.put(url, user, { headers: { authorization: token } });
//   return res.data;
// };
const approve = async (idUser: string, token: string) => {
  const url = `/${idUser}/approve`;
  const res = await instance.put(url, {}, { headers: { authorization: token } });
  return res.data;
const cancel = async (idUser: string, token: string) => {
  const url = `/${idUser}/cancel`;
  const res = await instance.put(url, {}, { headers: { authorization: token } });
  return res.data;
const giveAdminPermission = async (idUser: string, token: string) => {
  const url = `/${idUser}/admin`;
  const res = await instance.put(url, {}, { headers: { authorization: token } });
  return res.data;
const removeAdminPermission = async (idUser: string, token: string) => {
  const url = `/${idUser}/client`;
  const res = await instance.put(url, {}, { headers: { authorization: token } });
  return res.data;
Renzo Beux's avatar
Renzo Beux committed
const listUsersById = async (userIds: any, token: any) => {
Agustin Ruiz Diaz Cambon's avatar
Agustin Ruiz Diaz Cambon committed
  const url = '/usersById';
Renzo Beux's avatar
Renzo Beux committed
  const res = await instance.post(url, userIds, { headers: { authorization: token } });
Agustin Ruiz Diaz Cambon's avatar
Agustin Ruiz Diaz Cambon committed
  return res.data;
};

export const checkUser = async (token: string) => {
  const url = '/check-user';
  const res = await instance.post(url, {}, { headers: { authorization: token } });
  return res.data;
};

const getUser = async (userId: number, token: string) => {
  const url = `/${userId}`;
  const res = await instance.get(url, { headers: { authorization: token } });
  return res.data;
};

const verifyEmail = async (userToken: string) => {
  const url = '/verify-email';
  const res = await instance.put(url, {}, { params: { token: userToken } });
  return res.data;
};

const resendVerification = async (userEmail: string) => {
  const url = '/resend-verification';
  const res = await instance.post(url, { email: userEmail });
  return res.data;
};

const recoverPassword = async (userEmail: string) => {
  const url = '/recover-password';
  const res = await instance.post(url, { email: userEmail });
  return res.data;
};

const recoveryPasswordChange = async (userToken: string, userPassword: string,
  userRepeat: string) => {
  const url = '/password';
  const res = await instance.put(url,
    { token: userToken, password: userPassword, repeat: userRepeat });
  return res.data;
};

export default {
  create,
  login,
  listUsers,
  update,
  // password,
  approve,
  cancel,
  giveAdminPermission,
  removeAdminPermission,
Agustin Ruiz Diaz Cambon's avatar
Agustin Ruiz Diaz Cambon committed
  listUsersById,
  verifyEmail,
  resendVerification,
  recoverPassword,
  recoveryPasswordChange,