1
0
Fork 0
mirror of https://github.com/portainer/portainer.git synced 2025-07-24 15:59:41 +02:00
portainer/app/portainer/environments/environment.service/registries.ts

76 lines
1.7 KiB
TypeScript

import axios, { parseAxiosError } from '@/portainer/services/axios';
import { TeamId } from '@/portainer/teams/types';
import { UserId } from '@/portainer/users/types';
import { EnvironmentId } from '../types';
import { buildUrl } from './utils';
export type RoleId = number;
interface AccessPolicy {
RoleId: RoleId;
}
type UserAccessPolicies = Record<UserId, AccessPolicy>; // map[UserID]AccessPolicy
type TeamAccessPolicies = Record<TeamId, AccessPolicy>;
export type RegistryId = number;
export interface Registry {
Id: RegistryId;
}
interface RegistryAccess {
UserAccessPolicies: UserAccessPolicies;
TeamAccessPolicies: TeamAccessPolicies;
Namespaces: string[];
}
export async function updateEnvironmentRegistryAccess(
id: EnvironmentId,
registryId: RegistryId,
access: RegistryAccess
) {
try {
await axios.put<void>(buildRegistryUrl(id, registryId), access);
} catch (e) {
throw parseAxiosError(e as Error);
}
}
export async function getEnvironmentRegistries(
id: EnvironmentId,
namespace: string
) {
try {
const { data } = await axios.get<Registry[]>(buildRegistryUrl(id), {
params: { namespace },
});
return data;
} catch (e) {
throw parseAxiosError(e as Error);
}
}
export async function getEnvironmentRegistry(
endpointId: EnvironmentId,
registryId: RegistryId
) {
try {
const { data } = await axios.get<Registry>(
buildRegistryUrl(endpointId, registryId)
);
return data;
} catch (e) {
throw parseAxiosError(e as Error);
}
}
function buildRegistryUrl(id: EnvironmentId, registryId?: RegistryId) {
let url = `${buildUrl(id)}/registries`;
if (registryId) {
url += `/${registryId}`;
}
return url;
}