feat: External Secrets storage for credentials (#6477)

Github issue / Community forum post (link here to close automatically):

---------

Co-authored-by: Romain Minaud <romain.minaud@gmail.com>
Co-authored-by: Valya Bullions <valya@n8n.io>
Co-authored-by: Csaba Tuncsik <csaba@n8n.io>
Co-authored-by: Giulio Andreini <g.andreini@gmail.com>
Co-authored-by: Omar Ajoue <krynble@gmail.com>
This commit is contained in:
Alex Grozav
2023-08-25 11:33:46 +03:00
committed by GitHub
parent c833078c87
commit ed927d34b2
89 changed files with 4164 additions and 57 deletions

View File

@@ -74,6 +74,17 @@ export default defineComponent({
available: this.canAccessApiSettings(),
activateOnRouteNames: [VIEWS.API_SETTINGS],
},
{
id: 'settings-external-secrets',
icon: 'vault',
label: this.$locale.baseText('settings.externalSecrets.title'),
position: 'top',
available: this.canAccessExternalSecrets(),
activateOnRouteNames: [
VIEWS.EXTERNAL_SECRETS_SETTINGS,
VIEWS.EXTERNAL_SECRETS_PROVIDER_SETTINGS,
],
},
{
id: 'settings-audit-logs',
icon: 'clipboard-list',
@@ -164,6 +175,9 @@ export default defineComponent({
canAccessUsageAndPlan(): boolean {
return this.canUserAccessRouteByName(VIEWS.USAGE);
},
canAccessExternalSecrets(): boolean {
return this.canUserAccessRouteByName(VIEWS.EXTERNAL_SECRETS_SETTINGS);
},
canAccessSourceControl(): boolean {
return this.canUserAccessRouteByName(VIEWS.SOURCE_CONTROL);
},
@@ -179,51 +193,43 @@ export default defineComponent({
openUpdatesPanel() {
this.uiStore.openModal(VERSIONS_MODAL_KEY);
},
async navigateTo(routeName: (typeof VIEWS)[keyof typeof VIEWS]) {
if (this.$router.currentRoute.name !== routeName) {
await this.$router.push({ name: routeName });
}
},
async handleSelect(key: string) {
switch (key) {
case 'settings-personal':
if (this.$router.currentRoute.name !== VIEWS.PERSONAL_SETTINGS) {
await this.$router.push({ name: VIEWS.PERSONAL_SETTINGS });
}
await this.navigateTo(VIEWS.PERSONAL_SETTINGS);
break;
case 'settings-users':
if (this.$router.currentRoute.name !== VIEWS.USERS_SETTINGS) {
await this.$router.push({ name: VIEWS.USERS_SETTINGS });
}
await this.navigateTo(VIEWS.USERS_SETTINGS);
break;
case 'settings-api':
if (this.$router.currentRoute.name !== VIEWS.API_SETTINGS) {
await this.$router.push({ name: VIEWS.API_SETTINGS });
}
await this.navigateTo(VIEWS.API_SETTINGS);
break;
case 'settings-ldap':
if (this.$router.currentRoute.name !== VIEWS.LDAP_SETTINGS) {
void this.$router.push({ name: VIEWS.LDAP_SETTINGS });
}
await this.navigateTo(VIEWS.LDAP_SETTINGS);
break;
case 'settings-log-streaming':
if (this.$router.currentRoute.name !== VIEWS.LOG_STREAMING_SETTINGS) {
void this.$router.push({ name: VIEWS.LOG_STREAMING_SETTINGS });
}
await this.navigateTo(VIEWS.LOG_STREAMING_SETTINGS);
break;
case 'users': // Fakedoor feature added via hooks when user management is disabled on cloud
case 'logging':
this.$router.push({ name: VIEWS.FAKE_DOOR, params: { featureId: key } }).catch(() => {});
break;
case 'settings-community-nodes':
if (this.$router.currentRoute.name !== VIEWS.COMMUNITY_NODES) {
await this.$router.push({ name: VIEWS.COMMUNITY_NODES });
}
await this.navigateTo(VIEWS.COMMUNITY_NODES);
break;
case 'settings-usage-and-plan':
if (this.$router.currentRoute.name !== VIEWS.USAGE) {
void this.$router.push({ name: VIEWS.USAGE });
}
await this.navigateTo(VIEWS.USAGE);
break;
case 'settings-sso':
if (this.$router.currentRoute.name !== VIEWS.SSO_SETTINGS) {
void this.$router.push({ name: VIEWS.SSO_SETTINGS });
}
await this.navigateTo(VIEWS.SSO_SETTINGS);
break;
case 'settings-external-secrets':
await this.navigateTo(VIEWS.EXTERNAL_SECRETS_SETTINGS);
break;
case 'settings-source-control':
if (this.$router.currentRoute.name !== VIEWS.SOURCE_CONTROL) {