fix(ui): сохранять контекст каталога и выбирать клиента IPsec
This commit is contained in:
1 parent
4896d8ef6f
commit
ecd72d9750
5 files changed
+113
-40
No files matched your search
+4
-1
@@ -18,7 +18,8 @@ const checkedUserSchema = appUserReadSchema.refine(user => user.bindings.every(b
|
||||
const usersListPayload = z.object({ users: z.array(checkedUserSchema).refine(rows => new Set(rows.map(row => row.id)).size === rows.length, "Повторяющиеся пользователи в ответе API") })
|
||||
const userPayload = z.object({ user: checkedUserSchema })
|
||||
const bindingPayload = z.object({ binding: userBindingSchema })
|
||||
const catalogPayload = z.object({ interfaces: z.array(catalogInterfaceSchema) })
|
||||
const checkedCatalogInterface = catalogInterfaceSchema.refine(iface => iface.name.trim().length > 0 && (!(iface.type === "wg" || iface.type === "ipsec") || iface.peers !== undefined || !!iface.peersError) && (!iface.peers || iface.peers.every(peer => peer.publicKey.trim().length > 0) && new Set(iface.peers.map(peer => peer.publicKey)).size === iface.peers.length), "Неполный или неоднозначный каталог интерфейсов")
|
||||
const catalogPayload = z.object({ interfaces: z.array(checkedCatalogInterface).refine(rows => new Set(rows.map(row => row.name)).size === rows.length, "Повторяющиеся интерфейсы") })
|
||||
|
||||
export function toFrontendBinding(b: UserBinding): InterfaceBinding {
|
||||
return {
|
||||
@@ -132,10 +133,12 @@ export async function deleteUserBinding(baseUrl: string, userId: string, binding
|
||||
export async function listInterfaceCatalog(
|
||||
baseUrl: string,
|
||||
serverId: string,
|
||||
init?: RequestInit,
|
||||
): Promise<CatalogIface[]> {
|
||||
const payload = await requestJson<unknown>(
|
||||
baseUrl,
|
||||
`/api/users/interface-catalog?serverId=${encodeURIComponent(serverId)}`,
|
||||
init,
|
||||
)
|
||||
return catalogPayload.parse(payload).interfaces as CatalogInterface[]
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user