diff --git a/edit/group.principal.vue b/edit/group.principal.vue
new file mode 100644
index 0000000000..b5c720977f
--- /dev/null
+++ b/edit/group.principal.vue
@@ -0,0 +1,63 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/edit/secret.vue b/edit/secret.vue
index aa1563fce1..41d1a9b226 100644
--- a/edit/secret.vue
+++ b/edit/secret.vue
@@ -1,5 +1,5 @@
+
+
+
+
+
+
+
+
+ {{ t("authGroups.actions.assignRoles") }}
+
+
+
+
+
+
+
diff --git a/list/service.vue b/list/service.vue
new file mode 100644
index 0000000000..abd85952a5
--- /dev/null
+++ b/list/service.vue
@@ -0,0 +1,43 @@
+
+
+
+
+
+
diff --git a/list/workload.vue b/list/workload.vue
index baf1b1618b..4ecb194a79 100644
--- a/list/workload.vue
+++ b/list/workload.vue
@@ -1,6 +1,6 @@
diff --git a/pages/c/_cluster/auth/config/index.vue b/pages/c/_cluster/auth/config/index.vue
index 7411d44798..5c04fc7c42 100644
--- a/pages/c/_cluster/auth/config/index.vue
+++ b/pages/c/_cluster/auth/config/index.vue
@@ -15,7 +15,8 @@ export default {
if ( enabled.length === 1 ) {
redirect({
name: 'c-cluster-auth-config-id',
- params: { id: enabled[0].id }
+ params: { id: enabled[0].id },
+ query: { mode: _EDIT }
});
return { nonLocal };
diff --git a/pages/c/_cluster/auth/group.principal/assign-edit.vue b/pages/c/_cluster/auth/group.principal/assign-edit.vue
new file mode 100644
index 0000000000..baeb1d7db3
--- /dev/null
+++ b/pages/c/_cluster/auth/group.principal/assign-edit.vue
@@ -0,0 +1,115 @@
+
+
+
+
+
+
+
diff --git a/plugins/steve/actions.js b/plugins/steve/actions.js
index 6dc1978977..3151f38c31 100644
--- a/plugins/steve/actions.js
+++ b/plugins/steve/actions.js
@@ -13,7 +13,8 @@ export default {
// Spoofing is handled here to ensure it's done for both yaml and form editing.
// It became apparent that this was the only place that both intersected
if (opt.url.includes(SPOOFED_PREFIX) || opt.url.includes(SPOOFED_API_PREFIX)) {
- const [empty, scheme, type, id] = opt.url.split('/'); // eslint-disable-line no-unused-vars
+ const [empty, scheme, type, ...rest] = opt.url.split('/'); // eslint-disable-line no-unused-vars
+ const id = rest.join('/'); // Cover case where id contains '/'
const isApi = scheme === SPOOFED_API_PREFIX;
const typemapGetter = id ? 'getSpoofedInstance' : 'getSpoofedInstances';
const schemas = await rootGetters['cluster/all'](SCHEMA);