mirror of
https://github.com/hashicorp/vault.git
synced 2025-08-17 03:57:01 +02:00
54 lines
1.6 KiB
JavaScript
54 lines
1.6 KiB
JavaScript
/**
|
|
* Copyright (c) HashiCorp, Inc.
|
|
* SPDX-License-Identifier: MPL-2.0
|
|
*/
|
|
|
|
export function pathIsDirectory(pathToSecret) {
|
|
// This regex only checks for / at the end of the string. ex: boop/ === true, boop/bop === false;
|
|
return pathToSecret ? !!pathToSecret.match(/\/$/) : false;
|
|
}
|
|
|
|
export function pathIsFromDirectory(path) {
|
|
// This regex just looks for a / anywhere in the path. ex: boop/ === true, boop/bop === true;
|
|
return path ? !!path.match(/\//) : false;
|
|
}
|
|
|
|
function splitSegments(secretPath) {
|
|
const segments = secretPath.split('/').filter((path) => path);
|
|
segments.map((_, index) => {
|
|
return segments.slice(0, index + 1).join('/');
|
|
});
|
|
return segments.map((segment, idx) => {
|
|
return {
|
|
label: segment,
|
|
model: segments.slice(0, idx + 1).join('/'),
|
|
};
|
|
});
|
|
}
|
|
|
|
/**
|
|
* breadcrumbsForSecret is for generating page breadcrumbs for a secret path
|
|
* @param {string} secretPath is the full path to secret (like 'my-secret' or 'beep/boop')
|
|
* @param {boolean} lastItemCurrent
|
|
* @returns array of breadcrumbs specific to KV engine
|
|
*/
|
|
export function breadcrumbsForSecret(secretPath, lastItemCurrent = false) {
|
|
if (!secretPath) return [];
|
|
const isDir = pathIsDirectory(secretPath);
|
|
const segments = splitSegments(secretPath);
|
|
|
|
return segments.map((segment, index) => {
|
|
if (index === segments.length - 1) {
|
|
if (lastItemCurrent) {
|
|
return {
|
|
label: segment.label,
|
|
};
|
|
}
|
|
if (!isDir) {
|
|
return { label: segment.label, route: 'secret.details', model: segment.model };
|
|
}
|
|
}
|
|
return { label: segment.label, route: 'list-directory', model: `${segment.model}/` };
|
|
});
|
|
}
|