mirror of
https://github.com/rustfs/console.git
synced 2026-08-31 01:37:52 +08:00
37 lines
840 B
TypeScript
37 lines
840 B
TypeScript
export interface PermissionResourceContext {
|
|
bucket?: string
|
|
objectKey?: string
|
|
prefix?: string
|
|
}
|
|
|
|
const S3_ARN_PREFIX = "arn:aws:s3:::"
|
|
|
|
function normalizeS3Path(path: string): string {
|
|
return path.replace(/^\/+/, "")
|
|
}
|
|
|
|
export function toBucketArn(bucket: string): string {
|
|
return `${S3_ARN_PREFIX}${bucket}`
|
|
}
|
|
|
|
export function toObjectArn(bucket: string, objectKey: string): string {
|
|
return `${toBucketArn(bucket)}/${normalizeS3Path(objectKey)}`
|
|
}
|
|
|
|
export function toObjectPatternArn(bucket?: string, prefix?: string): string {
|
|
if (!bucket) {
|
|
return `${S3_ARN_PREFIX}*`
|
|
}
|
|
|
|
if (!prefix) {
|
|
return `${toBucketArn(bucket)}/*`
|
|
}
|
|
|
|
const normalizedPrefix = normalizeS3Path(prefix)
|
|
return `${toBucketArn(bucket)}/${normalizedPrefix}*`
|
|
}
|
|
|
|
export function toAllBucketsArn(): string {
|
|
return `${S3_ARN_PREFIX}*`
|
|
}
|