PromucFlow_constructor/app/client/src/api/UserApi.tsx
Trisha Anand 9d78b020bc
Fix: Multi User Invite (#208)
- Use updated API structure
- Use single API to invite multiple users instead of looping.

Co-authored-by: Tejaaswini <tejaaswini.narendra@codemonk.in>
2020-08-11 09:24:36 +05:30

136 lines
3.3 KiB
TypeScript

import { AxiosPromise } from "axios";
import Api from "./Api";
import { ApiResponse } from "./ApiResponses";
export interface LoginUserRequest {
email: string;
password: string;
}
export interface CreateUserRequest {
email: string;
password: string;
}
export interface CreateUserResponse extends ApiResponse {
email: string;
id: string;
}
export interface ForgotPasswordRequest {
email: string;
}
export interface TokenPasswordUpdateRequest {
token: string;
password: string;
email: string;
}
export interface VerifyTokenRequest {
email: string;
token: string;
}
export interface FetchUserResponse extends ApiResponse {
id: string;
}
export interface FetchUserRequest {
id: string;
}
export interface InviteUserRequest {
email: string;
groupIds: string[];
status?: string;
}
export interface SwitchUserOrgRequest {
orgId: string;
}
export interface AddUserToOrgRequest {
orgId: string;
}
class UserApi extends Api {
static usersURL = "v1/users";
static forgotPasswordURL = `${UserApi.usersURL}/forgotPassword`;
static verifyResetPasswordTokenURL = `${UserApi.usersURL}/verifyPasswordResetToken`;
static resetPasswordURL = `${UserApi.usersURL}/resetPassword`;
static inviteUserURL = "v1/users/invite";
static verifyInviteTokenURL = `${UserApi.inviteUserURL}/verify`;
static confirmUserInviteURL = `${UserApi.inviteUserURL}/confirm`;
static switchUserOrgURL = `${UserApi.usersURL}/switchOrganization`;
static addOrgURL = `${UserApi.usersURL}/addOrganization`;
static logoutURL = "v1/logout";
static currentUserURL = "v1/users/me";
static createUser(
request: CreateUserRequest,
): AxiosPromise<CreateUserResponse> {
return Api.post(UserApi.usersURL, request);
}
static fetchUser(request: FetchUserRequest): AxiosPromise<FetchUserResponse> {
return Api.get(UserApi.usersURL + "/" + request.id);
}
static getCurrentUser(): AxiosPromise<ApiResponse> {
return Api.get(UserApi.currentUserURL);
}
static forgotPassword(
request: ForgotPasswordRequest,
): AxiosPromise<ApiResponse> {
return Api.post(UserApi.forgotPasswordURL, request);
}
static verifyResetPasswordToken(
request: VerifyTokenRequest,
): AxiosPromise<ApiResponse> {
return Api.get(UserApi.verifyResetPasswordTokenURL, request);
}
static resetPassword(
request: TokenPasswordUpdateRequest,
): AxiosPromise<ApiResponse> {
return Api.put(UserApi.resetPasswordURL, request);
}
static inviteUser(request: InviteUserRequest): AxiosPromise<ApiResponse> {
return Api.post(UserApi.inviteUserURL, request);
}
static verifyUserInvite(
request: VerifyTokenRequest,
): AxiosPromise<ApiResponse> {
return Api.get(UserApi.verifyInviteTokenURL, request);
}
static confirmInvitedUserSignup(
request: TokenPasswordUpdateRequest,
): AxiosPromise<ApiResponse> {
return Api.put(UserApi.confirmUserInviteURL, request);
}
static switchUserOrg(
request: SwitchUserOrgRequest,
): AxiosPromise<ApiResponse> {
return Api.put(UserApi.switchUserOrgURL + "/" + request.orgId);
}
static addOrganization(
request: AddUserToOrgRequest,
): AxiosPromise<ApiResponse> {
return Api.put(UserApi.addOrgURL + "/" + request.orgId);
}
static logoutUser(): AxiosPromise<ApiResponse> {
return Api.post(UserApi.logoutURL);
}
}
export default UserApi;