Moved v3 code from NginxProxyManager/nginx-proxy-manager-3 to NginxProxyManager/nginx-proxy-manager
This commit is contained in:
95
frontend/src/api/npm/base.ts
Normal file
95
frontend/src/api/npm/base.ts
Normal file
@@ -0,0 +1,95 @@
|
||||
import { camelizeKeys, decamelizeKeys } from "humps";
|
||||
import AuthStore from "modules/AuthStore";
|
||||
import * as queryString from "query-string";
|
||||
|
||||
const contentTypeHeader = "Content-Type";
|
||||
|
||||
interface BuildUrlArgs {
|
||||
url: string;
|
||||
params?: queryString.StringifiableRecord;
|
||||
}
|
||||
function buildUrl({ url, params }: BuildUrlArgs) {
|
||||
const endpoint = url.replace(/^\/|\/$/g, "");
|
||||
const apiParams = params ? `?${queryString.stringify(params)}` : "";
|
||||
const apiUrl = `/api/${endpoint}${apiParams}`;
|
||||
return apiUrl;
|
||||
}
|
||||
|
||||
function buildAuthHeader(): Record<string, string> | undefined {
|
||||
if (AuthStore.token) {
|
||||
return { Authorization: `Bearer ${AuthStore.token.token}` };
|
||||
}
|
||||
return {};
|
||||
}
|
||||
|
||||
function buildBody(data?: Record<string, any>) {
|
||||
if (data) {
|
||||
return JSON.stringify(decamelizeKeys(data));
|
||||
}
|
||||
}
|
||||
|
||||
async function processResponse(response: Response) {
|
||||
const payload = await response.json();
|
||||
if (!response.ok) {
|
||||
throw new Error(payload.error.message);
|
||||
}
|
||||
return camelizeKeys(payload) as any;
|
||||
}
|
||||
|
||||
interface GetArgs {
|
||||
url: string;
|
||||
params?: queryString.StringifiableRecord;
|
||||
}
|
||||
|
||||
export async function get(
|
||||
{ url, params }: GetArgs,
|
||||
abortController?: AbortController,
|
||||
) {
|
||||
const apiUrl = buildUrl({ url, params });
|
||||
const method = "GET";
|
||||
const signal = abortController?.signal;
|
||||
const headers = buildAuthHeader();
|
||||
const response = await fetch(apiUrl, { method, headers, signal });
|
||||
return processResponse(response);
|
||||
}
|
||||
|
||||
interface PostArgs {
|
||||
url: string;
|
||||
data?: any;
|
||||
}
|
||||
|
||||
export async function post(
|
||||
{ url, data }: PostArgs,
|
||||
abortController?: AbortController,
|
||||
) {
|
||||
const apiUrl = buildUrl({ url });
|
||||
const method = "POST";
|
||||
const headers = {
|
||||
...buildAuthHeader(),
|
||||
[contentTypeHeader]: "application/json",
|
||||
};
|
||||
const signal = abortController?.signal;
|
||||
const body = buildBody(data);
|
||||
const response = await fetch(apiUrl, { method, headers, body, signal });
|
||||
return processResponse(response);
|
||||
}
|
||||
|
||||
interface PutArgs {
|
||||
url: string;
|
||||
data?: any;
|
||||
}
|
||||
export async function put(
|
||||
{ url, data }: PutArgs,
|
||||
abortController?: AbortController,
|
||||
) {
|
||||
const apiUrl = buildUrl({ url });
|
||||
const method = "PUT";
|
||||
const headers = {
|
||||
...buildAuthHeader(),
|
||||
[contentTypeHeader]: "application/json",
|
||||
};
|
||||
const signal = abortController?.signal;
|
||||
const body = buildBody(data);
|
||||
const response = await fetch(apiUrl, { method, headers, body, signal });
|
||||
return processResponse(response);
|
||||
}
|
16
frontend/src/api/npm/createCertificateAuthority.ts
Normal file
16
frontend/src/api/npm/createCertificateAuthority.ts
Normal file
@@ -0,0 +1,16 @@
|
||||
import * as api from "./base";
|
||||
import { CertificateAuthority } from "./models";
|
||||
|
||||
export async function createCertificateAuthority(
|
||||
data: CertificateAuthority,
|
||||
abortController?: AbortController,
|
||||
): Promise<CertificateAuthority> {
|
||||
const { result } = await api.post(
|
||||
{
|
||||
url: "/certificate-authorities",
|
||||
data,
|
||||
},
|
||||
abortController,
|
||||
);
|
||||
return result;
|
||||
}
|
16
frontend/src/api/npm/createDNSProvider.ts
Normal file
16
frontend/src/api/npm/createDNSProvider.ts
Normal file
@@ -0,0 +1,16 @@
|
||||
import * as api from "./base";
|
||||
import { DNSProvider } from "./models";
|
||||
|
||||
export async function createDNSProvider(
|
||||
data: DNSProvider,
|
||||
abortController?: AbortController,
|
||||
): Promise<DNSProvider> {
|
||||
const { result } = await api.post(
|
||||
{
|
||||
url: "/dns-providers",
|
||||
data,
|
||||
},
|
||||
abortController,
|
||||
);
|
||||
return result;
|
||||
}
|
30
frontend/src/api/npm/createUser.ts
Normal file
30
frontend/src/api/npm/createUser.ts
Normal file
@@ -0,0 +1,30 @@
|
||||
import * as api from "./base";
|
||||
import { User } from "./models";
|
||||
|
||||
export interface AuthOptions {
|
||||
type: string;
|
||||
secret: string;
|
||||
}
|
||||
|
||||
export interface NewUser {
|
||||
name: string;
|
||||
nickname: string;
|
||||
email: string;
|
||||
isDisabled: boolean;
|
||||
auth: AuthOptions;
|
||||
capabilities: string[];
|
||||
}
|
||||
|
||||
export async function createUser(
|
||||
data: NewUser,
|
||||
abortController?: AbortController,
|
||||
): Promise<User> {
|
||||
const { result } = await api.post(
|
||||
{
|
||||
url: "/users",
|
||||
data,
|
||||
},
|
||||
abortController,
|
||||
);
|
||||
return result;
|
||||
}
|
19
frontend/src/api/npm/getCertificateAuthorities.ts
Normal file
19
frontend/src/api/npm/getCertificateAuthorities.ts
Normal file
@@ -0,0 +1,19 @@
|
||||
import * as api from "./base";
|
||||
import { CertificateAuthoritiesResponse } from "./responseTypes";
|
||||
|
||||
export async function getCertificateAuthorities(
|
||||
offset = 0,
|
||||
limit = 10,
|
||||
sort?: string,
|
||||
filters?: { [key: string]: string },
|
||||
abortController?: AbortController,
|
||||
): Promise<CertificateAuthoritiesResponse> {
|
||||
const { result } = await api.get(
|
||||
{
|
||||
url: "certificate-authorities",
|
||||
params: { limit, offset, sort, ...filters },
|
||||
},
|
||||
abortController,
|
||||
);
|
||||
return result;
|
||||
}
|
13
frontend/src/api/npm/getCertificateAuthority.ts
Normal file
13
frontend/src/api/npm/getCertificateAuthority.ts
Normal file
@@ -0,0 +1,13 @@
|
||||
import * as api from "./base";
|
||||
import { CertificateAuthority } from "./models";
|
||||
|
||||
export async function getCertificateAuthority(
|
||||
id: number,
|
||||
params = {},
|
||||
): Promise<CertificateAuthority> {
|
||||
const { result } = await api.get({
|
||||
url: `/certificate-authorities/${id}`,
|
||||
params,
|
||||
});
|
||||
return result;
|
||||
}
|
19
frontend/src/api/npm/getCertificates.ts
Normal file
19
frontend/src/api/npm/getCertificates.ts
Normal file
@@ -0,0 +1,19 @@
|
||||
import * as api from "./base";
|
||||
import { CertificatesResponse } from "./responseTypes";
|
||||
|
||||
export async function getCertificates(
|
||||
offset = 0,
|
||||
limit = 10,
|
||||
sort?: string,
|
||||
filters?: { [key: string]: string },
|
||||
abortController?: AbortController,
|
||||
): Promise<CertificatesResponse> {
|
||||
const { result } = await api.get(
|
||||
{
|
||||
url: "certificates",
|
||||
params: { limit, offset, sort, ...filters },
|
||||
},
|
||||
abortController,
|
||||
);
|
||||
return result;
|
||||
}
|
13
frontend/src/api/npm/getDNSProvider.ts
Normal file
13
frontend/src/api/npm/getDNSProvider.ts
Normal file
@@ -0,0 +1,13 @@
|
||||
import * as api from "./base";
|
||||
import { DNSProvider } from "./models";
|
||||
|
||||
export async function getDNSProvider(
|
||||
id: number,
|
||||
params = {},
|
||||
): Promise<DNSProvider> {
|
||||
const { result } = await api.get({
|
||||
url: `/dns-providers/${id}`,
|
||||
params,
|
||||
});
|
||||
return result;
|
||||
}
|
19
frontend/src/api/npm/getDNSProviders.ts
Normal file
19
frontend/src/api/npm/getDNSProviders.ts
Normal file
@@ -0,0 +1,19 @@
|
||||
import * as api from "./base";
|
||||
import { DNSProvidersResponse } from "./responseTypes";
|
||||
|
||||
export async function getDNSProviders(
|
||||
offset = 0,
|
||||
limit = 10,
|
||||
sort?: string,
|
||||
filters?: { [key: string]: string },
|
||||
abortController?: AbortController,
|
||||
): Promise<DNSProvidersResponse> {
|
||||
const { result } = await api.get(
|
||||
{
|
||||
url: "dns-providers",
|
||||
params: { limit, offset, sort, ...filters },
|
||||
},
|
||||
abortController,
|
||||
);
|
||||
return result;
|
||||
}
|
14
frontend/src/api/npm/getDNSProvidersAcmesh.ts
Normal file
14
frontend/src/api/npm/getDNSProvidersAcmesh.ts
Normal file
@@ -0,0 +1,14 @@
|
||||
import * as api from "./base";
|
||||
import { DNSProvidersAcmesh } from "./models";
|
||||
|
||||
export async function getDNSProvidersAcmesh(
|
||||
abortController?: AbortController,
|
||||
): Promise<DNSProvidersAcmesh[]> {
|
||||
const { result } = await api.get(
|
||||
{
|
||||
url: "dns-providers/acmesh",
|
||||
},
|
||||
abortController,
|
||||
);
|
||||
return result;
|
||||
}
|
14
frontend/src/api/npm/getHealth.ts
Normal file
14
frontend/src/api/npm/getHealth.ts
Normal file
@@ -0,0 +1,14 @@
|
||||
import * as api from "./base";
|
||||
import { HealthResponse } from "./responseTypes";
|
||||
|
||||
export async function getHealth(
|
||||
abortController?: AbortController,
|
||||
): Promise<HealthResponse> {
|
||||
const { result } = await api.get(
|
||||
{
|
||||
url: "",
|
||||
},
|
||||
abortController,
|
||||
);
|
||||
return result;
|
||||
}
|
19
frontend/src/api/npm/getHostTemplates.ts
Normal file
19
frontend/src/api/npm/getHostTemplates.ts
Normal file
@@ -0,0 +1,19 @@
|
||||
import * as api from "./base";
|
||||
import { HostTemplatesResponse } from "./responseTypes";
|
||||
|
||||
export async function getHostTemplates(
|
||||
offset = 0,
|
||||
limit = 10,
|
||||
sort?: string,
|
||||
filters?: { [key: string]: string },
|
||||
abortController?: AbortController,
|
||||
): Promise<HostTemplatesResponse> {
|
||||
const { result } = await api.get(
|
||||
{
|
||||
url: "host-templates",
|
||||
params: { limit, offset, sort, ...filters },
|
||||
},
|
||||
abortController,
|
||||
);
|
||||
return result;
|
||||
}
|
19
frontend/src/api/npm/getHosts.ts
Normal file
19
frontend/src/api/npm/getHosts.ts
Normal file
@@ -0,0 +1,19 @@
|
||||
import * as api from "./base";
|
||||
import { HostsResponse } from "./responseTypes";
|
||||
|
||||
export async function getHosts(
|
||||
offset = 0,
|
||||
limit = 10,
|
||||
sort?: string,
|
||||
filters?: { [key: string]: string },
|
||||
abortController?: AbortController,
|
||||
): Promise<HostsResponse> {
|
||||
const { result } = await api.get(
|
||||
{
|
||||
url: "hosts",
|
||||
params: { limit, offset, sort, expand: "user,certificate", ...filters },
|
||||
},
|
||||
abortController,
|
||||
);
|
||||
return result;
|
||||
}
|
19
frontend/src/api/npm/getSettings.ts
Normal file
19
frontend/src/api/npm/getSettings.ts
Normal file
@@ -0,0 +1,19 @@
|
||||
import * as api from "./base";
|
||||
import { SettingsResponse } from "./responseTypes";
|
||||
|
||||
export async function getSettings(
|
||||
offset = 0,
|
||||
limit = 10,
|
||||
sort?: string,
|
||||
filters?: { [key: string]: string },
|
||||
abortController?: AbortController,
|
||||
): Promise<SettingsResponse> {
|
||||
const { result } = await api.get(
|
||||
{
|
||||
url: "settings",
|
||||
params: { limit, offset, sort, ...filters },
|
||||
},
|
||||
abortController,
|
||||
);
|
||||
return result;
|
||||
}
|
24
frontend/src/api/npm/getToken.ts
Normal file
24
frontend/src/api/npm/getToken.ts
Normal file
@@ -0,0 +1,24 @@
|
||||
import * as api from "./base";
|
||||
import { TokenResponse } from "./responseTypes";
|
||||
|
||||
interface Options {
|
||||
payload: {
|
||||
type: string;
|
||||
identity: string;
|
||||
secret: string;
|
||||
};
|
||||
}
|
||||
|
||||
export async function getToken(
|
||||
{ payload }: Options,
|
||||
abortController?: AbortController,
|
||||
): Promise<TokenResponse> {
|
||||
const { result } = await api.post(
|
||||
{
|
||||
url: "/tokens",
|
||||
data: payload,
|
||||
},
|
||||
abortController,
|
||||
);
|
||||
return result;
|
||||
}
|
14
frontend/src/api/npm/getUser.ts
Normal file
14
frontend/src/api/npm/getUser.ts
Normal file
@@ -0,0 +1,14 @@
|
||||
import * as api from "./base";
|
||||
import { User } from "./models";
|
||||
|
||||
export async function getUser(
|
||||
id: number | string = "me",
|
||||
params = {},
|
||||
): Promise<User> {
|
||||
const userId = id ? id : "me";
|
||||
const { result } = await api.get({
|
||||
url: `/users/${userId}`,
|
||||
params,
|
||||
});
|
||||
return result;
|
||||
}
|
19
frontend/src/api/npm/getUsers.ts
Normal file
19
frontend/src/api/npm/getUsers.ts
Normal file
@@ -0,0 +1,19 @@
|
||||
import * as api from "./base";
|
||||
import { UsersResponse } from "./responseTypes";
|
||||
|
||||
export async function getUsers(
|
||||
offset = 0,
|
||||
limit = 10,
|
||||
sort?: string,
|
||||
filters?: { [key: string]: string },
|
||||
abortController?: AbortController,
|
||||
): Promise<UsersResponse> {
|
||||
const { result } = await api.get(
|
||||
{
|
||||
url: "users",
|
||||
params: { limit, offset, sort, expand: "capabilities", ...filters },
|
||||
},
|
||||
abortController,
|
||||
);
|
||||
return result;
|
||||
}
|
34
frontend/src/api/npm/helpers.ts
Normal file
34
frontend/src/api/npm/helpers.ts
Normal file
@@ -0,0 +1,34 @@
|
||||
import { decamelize } from "humps";
|
||||
|
||||
/**
|
||||
* This will convert a react-table sort object into
|
||||
* a string that the backend api likes:
|
||||
* name.asc,id.desc
|
||||
*/
|
||||
export function tableSortToAPI(sortBy: any): string | undefined {
|
||||
if (sortBy?.length > 0) {
|
||||
const strs: string[] = [];
|
||||
sortBy.map((item: any) => {
|
||||
strs.push(decamelize(item.id) + "." + (item.desc ? "desc" : "asc"));
|
||||
return undefined;
|
||||
});
|
||||
return strs.join(",");
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* This will convert a react-table filters object into
|
||||
* a string that the backend api likes:
|
||||
* name:contains=jam
|
||||
*/
|
||||
export function tableFiltersToAPI(filters: any): { [key: string]: string } {
|
||||
const items: { [key: string]: string } = {};
|
||||
if (filters?.length > 0) {
|
||||
filters.map((item: any) => {
|
||||
items[`${decamelize(item.id)}:${item.value.modifier}`] = item.value.value;
|
||||
return undefined;
|
||||
});
|
||||
}
|
||||
return items;
|
||||
}
|
24
frontend/src/api/npm/index.ts
Normal file
24
frontend/src/api/npm/index.ts
Normal file
@@ -0,0 +1,24 @@
|
||||
export * from "./createCertificateAuthority";
|
||||
export * from "./createDNSProvider";
|
||||
export * from "./createUser";
|
||||
export * from "./getCertificateAuthorities";
|
||||
export * from "./getCertificateAuthority";
|
||||
export * from "./getCertificates";
|
||||
export * from "./getDNSProvider";
|
||||
export * from "./getDNSProviders";
|
||||
export * from "./getDNSProvidersAcmesh";
|
||||
export * from "./getHealth";
|
||||
export * from "./getHosts";
|
||||
export * from "./getHostTemplates";
|
||||
export * from "./getSettings";
|
||||
export * from "./getToken";
|
||||
export * from "./getUser";
|
||||
export * from "./getUsers";
|
||||
export * from "./helpers";
|
||||
export * from "./models";
|
||||
export * from "./refreshToken";
|
||||
export * from "./responseTypes";
|
||||
export * from "./setAuth";
|
||||
export * from "./setCertificateAuthority";
|
||||
export * from "./setDNSProvider";
|
||||
export * from "./setUser";
|
123
frontend/src/api/npm/models.ts
Normal file
123
frontend/src/api/npm/models.ts
Normal file
@@ -0,0 +1,123 @@
|
||||
export interface Sort {
|
||||
field: string;
|
||||
direction: "ASC" | "DESC";
|
||||
}
|
||||
|
||||
export interface UserAuth {
|
||||
id: number;
|
||||
userId: number;
|
||||
type: string;
|
||||
createdOn: number;
|
||||
updatedOn: number;
|
||||
}
|
||||
|
||||
export interface User {
|
||||
id: number;
|
||||
name: string;
|
||||
nickname: string;
|
||||
email: string;
|
||||
createdOn: number;
|
||||
updatedOn: number;
|
||||
gravatarUrl: string;
|
||||
isDisabled: boolean;
|
||||
notifications: Notification[];
|
||||
capabilities?: string[];
|
||||
auth?: UserAuth;
|
||||
}
|
||||
|
||||
export interface Notification {
|
||||
title: string;
|
||||
seen: boolean;
|
||||
}
|
||||
|
||||
export interface Setting {
|
||||
id: number;
|
||||
createdOn: number;
|
||||
modifiedOn: number;
|
||||
name: string;
|
||||
value: any;
|
||||
}
|
||||
|
||||
// TODO: copy pasta not right
|
||||
export interface Certificate {
|
||||
id: number;
|
||||
createdOn: number;
|
||||
modifiedOn: number;
|
||||
name: string;
|
||||
acmeshServer: string;
|
||||
caBundle: string;
|
||||
maxDomains: number;
|
||||
isWildcardSupported: boolean;
|
||||
isSetup: boolean;
|
||||
}
|
||||
|
||||
export interface CertificateAuthority {
|
||||
id: number;
|
||||
createdOn: number;
|
||||
modifiedOn: number;
|
||||
name: string;
|
||||
acmeshServer: string;
|
||||
caBundle: string;
|
||||
maxDomains: number;
|
||||
isWildcardSupported: boolean;
|
||||
isReadonly: boolean;
|
||||
}
|
||||
|
||||
export interface DNSProvider {
|
||||
id: number;
|
||||
createdOn: number;
|
||||
modifiedOn: number;
|
||||
userId: number;
|
||||
name: string;
|
||||
acmeshName: string;
|
||||
dnsSleep: number;
|
||||
meta: any;
|
||||
}
|
||||
|
||||
export interface DNSProvidersAcmeshField {
|
||||
name: string;
|
||||
type: string;
|
||||
metaKey: string;
|
||||
isRequired: boolean;
|
||||
isSecret: boolean;
|
||||
}
|
||||
|
||||
export interface DNSProvidersAcmesh {
|
||||
name: string;
|
||||
acmeshName: string;
|
||||
fields: DNSProvidersAcmeshField[];
|
||||
}
|
||||
|
||||
export interface Host {
|
||||
id: number;
|
||||
createdOn: number;
|
||||
modifiedOn: number;
|
||||
userId: number;
|
||||
type: string;
|
||||
hostTemplateId: number;
|
||||
listenInterface: number;
|
||||
domainNames: string[];
|
||||
upstreamId: number;
|
||||
certificateId: number;
|
||||
accessListId: number;
|
||||
sslForced: boolean;
|
||||
cachingEnabled: boolean;
|
||||
blockExploits: boolean;
|
||||
allowWebsocketUpgrade: boolean;
|
||||
http2Support: boolean;
|
||||
hstsEnabled: boolean;
|
||||
hstsSubdomains: boolean;
|
||||
paths: string;
|
||||
upstreamOptions: string;
|
||||
advancedConfig: string;
|
||||
isDisabled: boolean;
|
||||
}
|
||||
|
||||
export interface HostTemplate {
|
||||
id: number;
|
||||
createdOn: number;
|
||||
modifiedOn: number;
|
||||
userId: number;
|
||||
hostType: string;
|
||||
template: string;
|
||||
}
|
14
frontend/src/api/npm/refreshToken.ts
Normal file
14
frontend/src/api/npm/refreshToken.ts
Normal file
@@ -0,0 +1,14 @@
|
||||
import * as api from "./base";
|
||||
import { TokenResponse } from "./responseTypes";
|
||||
|
||||
export async function refreshToken(
|
||||
abortController?: AbortController,
|
||||
): Promise<TokenResponse> {
|
||||
const { result } = await api.get(
|
||||
{
|
||||
url: "/tokens",
|
||||
},
|
||||
abortController,
|
||||
);
|
||||
return result;
|
||||
}
|
58
frontend/src/api/npm/responseTypes.ts
Normal file
58
frontend/src/api/npm/responseTypes.ts
Normal file
@@ -0,0 +1,58 @@
|
||||
import {
|
||||
Certificate,
|
||||
CertificateAuthority,
|
||||
DNSProvider,
|
||||
Host,
|
||||
HostTemplate,
|
||||
Setting,
|
||||
Sort,
|
||||
User,
|
||||
} from "./models";
|
||||
|
||||
export interface BaseResponse {
|
||||
total: number;
|
||||
offset: number;
|
||||
limit: number;
|
||||
sort: Sort[];
|
||||
}
|
||||
|
||||
export interface HealthResponse {
|
||||
commit: string;
|
||||
errorReporting: boolean;
|
||||
healthy: boolean;
|
||||
setup: boolean;
|
||||
version: string;
|
||||
}
|
||||
|
||||
export interface TokenResponse {
|
||||
expires: number;
|
||||
token: string;
|
||||
}
|
||||
|
||||
export interface SettingsResponse extends BaseResponse {
|
||||
items: Setting[];
|
||||
}
|
||||
|
||||
export interface CertificatesResponse extends BaseResponse {
|
||||
items: Certificate[];
|
||||
}
|
||||
|
||||
export interface CertificateAuthoritiesResponse extends BaseResponse {
|
||||
items: CertificateAuthority[];
|
||||
}
|
||||
|
||||
export interface UsersResponse extends BaseResponse {
|
||||
items: User[];
|
||||
}
|
||||
|
||||
export interface DNSProvidersResponse extends BaseResponse {
|
||||
items: DNSProvider[];
|
||||
}
|
||||
|
||||
export interface HostsResponse extends BaseResponse {
|
||||
items: Host[];
|
||||
}
|
||||
|
||||
export interface HostTemplatesResponse extends BaseResponse {
|
||||
items: HostTemplate[];
|
||||
}
|
18
frontend/src/api/npm/setAuth.ts
Normal file
18
frontend/src/api/npm/setAuth.ts
Normal file
@@ -0,0 +1,18 @@
|
||||
import * as api from "./base";
|
||||
import { UserAuth } from "./models";
|
||||
|
||||
export async function setAuth(
|
||||
id: number | string = "me",
|
||||
data: any,
|
||||
): Promise<UserAuth> {
|
||||
const userId = id ? id : "me";
|
||||
if (data.id) {
|
||||
delete data.id;
|
||||
}
|
||||
|
||||
const { result } = await api.post({
|
||||
url: `/users/${userId}/auth`,
|
||||
data,
|
||||
});
|
||||
return result;
|
||||
}
|
17
frontend/src/api/npm/setCertificateAuthority.ts
Normal file
17
frontend/src/api/npm/setCertificateAuthority.ts
Normal file
@@ -0,0 +1,17 @@
|
||||
import * as api from "./base";
|
||||
import { CertificateAuthority } from "./models";
|
||||
|
||||
export async function setCertificateAuthority(
|
||||
id: number,
|
||||
data: any,
|
||||
): Promise<CertificateAuthority> {
|
||||
if (data.id) {
|
||||
delete data.id;
|
||||
}
|
||||
|
||||
const { result } = await api.put({
|
||||
url: `/certificate-authorities/${id}`,
|
||||
data,
|
||||
});
|
||||
return result;
|
||||
}
|
17
frontend/src/api/npm/setDNSProvider.ts
Normal file
17
frontend/src/api/npm/setDNSProvider.ts
Normal file
@@ -0,0 +1,17 @@
|
||||
import * as api from "./base";
|
||||
import { DNSProvider } from "./models";
|
||||
|
||||
export async function setDNSProvider(
|
||||
id: number,
|
||||
data: any,
|
||||
): Promise<DNSProvider> {
|
||||
if (data.id) {
|
||||
delete data.id;
|
||||
}
|
||||
|
||||
const { result } = await api.put({
|
||||
url: `/dns-providers/${id}`,
|
||||
data,
|
||||
});
|
||||
return result;
|
||||
}
|
18
frontend/src/api/npm/setUser.ts
Normal file
18
frontend/src/api/npm/setUser.ts
Normal file
@@ -0,0 +1,18 @@
|
||||
import * as api from "./base";
|
||||
import { User } from "./models";
|
||||
|
||||
export async function setUser(
|
||||
id: number | string = "me",
|
||||
data: any,
|
||||
): Promise<User> {
|
||||
const userId = id ? id : "me";
|
||||
if (data.id) {
|
||||
delete data.id;
|
||||
}
|
||||
|
||||
const { result } = await api.put({
|
||||
url: `/users/${userId}`,
|
||||
data,
|
||||
});
|
||||
return result;
|
||||
}
|
Reference in New Issue
Block a user