51 lines
1.4 KiB
TypeScript
51 lines
1.4 KiB
TypeScript
import type {
|
|
ProviderIdentityEvidenceDto,
|
|
ReceivePackEvidenceDto,
|
|
RepositoryPermissionEvidenceDto,
|
|
} from './credential-result.dto.js';
|
|
|
|
export interface ResolvedCredential {
|
|
readonly identity: string;
|
|
readonly estate: string;
|
|
readonly host: string;
|
|
readonly resolutionId: string;
|
|
readonly secret: Uint8Array;
|
|
}
|
|
|
|
export interface CredentialResolver {
|
|
resolve(identity: string, estate: string, host: string): Promise<ResolvedCredential | undefined>;
|
|
}
|
|
|
|
export interface GiteaCredentialProvider {
|
|
readIdentity(resolved: ResolvedCredential): Promise<ProviderIdentityEvidenceDto>;
|
|
readRepositoryPermission(
|
|
resolved: ResolvedCredential,
|
|
repo: string,
|
|
): Promise<RepositoryPermissionEvidenceDto>;
|
|
probeReceivePack(
|
|
resolved: ResolvedCredential | undefined,
|
|
repo: string,
|
|
): Promise<ReceivePackEvidenceDto>;
|
|
}
|
|
|
|
export interface CredentialEstateRegistry {
|
|
matches(estate: string, host: string): boolean;
|
|
}
|
|
|
|
export interface CredentialValidationDependencies {
|
|
readonly resolver: CredentialResolver;
|
|
readonly provider: GiteaCredentialProvider;
|
|
readonly estateRegistry: CredentialEstateRegistry;
|
|
}
|
|
|
|
export interface GiteaReadValidationRequestDto {
|
|
readonly identity: string;
|
|
readonly estate: string;
|
|
readonly host: string;
|
|
readonly repo: string;
|
|
}
|
|
|
|
export interface GiteaWriteValidationRequestDto extends GiteaReadValidationRequestDto {
|
|
readonly readOnlyControlIdentity: string;
|
|
}
|