import { User } from "../utilities/get_authorization_headers"; import Http from "../utilities/http"; import ApiUser from "../models/api/api_user"; import makeErrorsPretty from "../utilities/make_errors_pretty"; import ApiInvitation from "../models/api/api_invitation"; import ApiCreateInvitationForm from "../models/api/api_create_invitation_form"; import ApiUserPermission from "../models/api/api_user_permission"; import {ApiUserRole, ApiUserProject} from "../models"; export default class UserApi { static createInvitation(forms: ApiCreateInvitationForm[], user: User): Promise { const url = `${Http.baseUrl()}/users/invitations`; return Http.post(url, user, forms) as unknown as Promise; } static getInvitation(invitationToken: string, user: User): Promise { const url = `${Http.baseUrl()}/users/invitations/${invitationToken}`; return Http.get(url, user) as unknown as Promise; } static getUserAccount(user: User): Promise { const url = `${Http.baseUrl()}/users/accounts/self`; return Http.get(url, user) as unknown as Promise; } /** * @deprecated use {@link UserApi.listUserPermissions} instead */ static getUserPermissions(userId: number, user: User): Promise { const url = `${Http.baseUrl()}/users/accounts/${userId}/permissions`; return Http.get(url, user) as unknown as Promise; } static listUserPermissions(userId: number, user: User): Promise { const url = `${Http.baseUrl()}/users/accounts/${userId}/permissions`; return Http.get(url, user) as unknown as Promise; } static listUserPermissionsForOrganization(organizationId: string, user: User): Promise { const url = `${Http.baseUrl()}/client-accounts/${organizationId}/permissions`; return Http.get(url, user) as unknown as Promise; } static deleteUserPermission(userId: number, permissionId: number, user: User): Promise { const url = `${Http.baseUrl()}/users/accounts/${userId}/permissions/${permissionId}`; return Http.delete(url, user) as unknown as Promise; } static createUserPermission(userId: number, permission: ApiUserPermission, user: User): Promise { const url = `${Http.baseUrl()}/users/accounts/${userId}/permissions`; return Http.post(url, user, permission) as unknown as Promise; } static updateUserAccount(userId: number, apiUser: ApiUser, user: User): Promise { const url = `${Http.baseUrl()}/users/accounts/${userId}`; return Http.put(url, user, apiUser) as unknown as Promise; } static sendPasswordResetEmail(email: string): Promise { email = encodeURIComponent(email); const url = `${Http.baseUrl()}/users/send-password-reset-email`; return Http.post(url, null, { email }) as unknown as Promise; } static resetPassword(password: string, email: string, token: string): Promise { email = encodeURIComponent(email); const url = `${Http.baseUrl()}/users/reset-password`; return Http.post(url, null, { email, token, password }) as unknown as Promise; } /** * @deprecated use {@link UserApi.updateUserRolesForOrganization} instead */ static updateUserRoles(userId: number, roles: ApiUserRole[], user: User): Promise { const url = `${Http.baseUrl()}/users/accounts/${userId}/roles`; return Http.post(url, user, roles) as unknown as Promise; } static updateUserRolesForOrganization(userId: number, organizationId: string, roles: ApiUserRole[], user: User): Promise { const url = `${Http.baseUrl()}/users/accounts/${userId}/organizations/${organizationId}/roles`; return Http.post(url, user, roles) as unknown as Promise; } static listUserProjects(user: User): Promise { const url = `${Http.baseUrl()}/users/accounts/projects`; return Http.get(url, user) as unknown as Promise; } } makeErrorsPretty(UserApi, { exclude: [], overrideErrorMessage: [ "resetPassword", "sendPasswordResetEmail", "createInvitation", "getInvitation" ] });