dashboard-shell-shell 3.0.5-tsh.1 → 3.0.5-tsh.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assets/iconsNew/demo.css +539 -0
- package/assets/iconsNew/demo.css:Zone.Identifier +0 -0
- package/assets/iconsNew/demo_index.html +303 -0
- package/assets/iconsNew/demo_index.html:Zone.Identifier +0 -0
- package/assets/iconsNew/iconfont.css +43 -0
- package/assets/iconsNew/iconfont.css:Zone.Identifier +0 -0
- package/assets/iconsNew/iconfont.js +1 -0
- package/assets/iconsNew/iconfont.js:Zone.Identifier +0 -0
- package/assets/iconsNew/iconfont.json +44 -0
- package/assets/iconsNew/iconfont.json:Zone.Identifier +0 -0
- package/assets/iconsNew/iconfont.ttf +0 -0
- package/assets/iconsNew/iconfont.ttf:Zone.Identifier +0 -0
- package/assets/iconsNew/iconfont.woff +0 -0
- package/assets/iconsNew/iconfont.woff2 +0 -0
- package/assets/iconsNew/iconfont.woff2:Zone.Identifier +0 -0
- package/assets/iconsNew/iconfont.woff:Zone.Identifier +0 -0
- package/assets/images/login-logo.svg +37 -12
- package/assets/images/logo.svg +47 -0
- package/assets/styles/app.scss +1 -0
- package/assets/styles/base/_helpers.scss +1 -1
- package/assets/translations/en-us.yaml +4 -0
- package/assets/translations/zh-hans.yaml +57 -1
- package/components/GlobalRoleBindings.vue +21 -6
- package/components/form/Members/ClusterPermissionsEditor.vue +34 -18
- package/components/form/Members/MembershipEditor.vue +1 -1
- package/components/form/NameNsDescription.vue +17 -3
- package/components/form/ProjectMemberEditor.vue +38 -23
- package/components/form/SecretSelector.vue +24 -23
- package/components/nav/Group.vue +2 -1
- package/components/nav/Header.vue +40 -43
- package/config/private-label.js +2 -3
- package/config/product/uiplugins.js +13 -10
- package/edit/logging-flow/index.vue +1 -2
- package/edit/logging.banzaicloud.io.output/providers/awsElasticsearch.vue +3 -3
- package/edit/logging.banzaicloud.io.output/providers/azurestorage.vue +19 -19
- package/edit/logging.banzaicloud.io.output/providers/cloudwatch.vue +23 -23
- package/edit/logging.banzaicloud.io.output/providers/datadog.vue +19 -19
- package/edit/logging.banzaicloud.io.output/providers/elasticsearch.vue +14 -14
- package/edit/logging.banzaicloud.io.output/providers/forward.vue +12 -12
- package/edit/logging.banzaicloud.io.output/providers/gcs.vue +23 -23
- package/edit/logging.banzaicloud.io.output/providers/gelf.vue +6 -6
- package/edit/logging.banzaicloud.io.output/providers/kafka.vue +10 -10
- package/edit/logging.banzaicloud.io.output/providers/kinesisStream.vue +8 -8
- package/edit/logging.banzaicloud.io.output/providers/logdna.vue +17 -17
- package/edit/logging.banzaicloud.io.output/providers/logz.vue +7 -7
- package/edit/logging.banzaicloud.io.output/providers/loki.vue +12 -12
- package/edit/logging.banzaicloud.io.output/providers/newrelic.vue +3 -3
- package/edit/logging.banzaicloud.io.output/providers/opensearch.vue +14 -14
- package/edit/logging.banzaicloud.io.output/providers/redis.vue +6 -6
- package/edit/logging.banzaicloud.io.output/providers/s3.vue +23 -23
- package/edit/logging.banzaicloud.io.output/providers/splunkHec.vue +13 -13
- package/edit/logging.banzaicloud.io.output/providers/sumologic.vue +2 -2
- package/edit/logging.banzaicloud.io.output/providers/syslog.vue +54 -54
- package/edit/monitoring.coreos.com.alertmanagerconfig/receiverConfig.vue +8 -8
- package/edit/monitoring.coreos.com.alertmanagerconfig/types/dingding.vue +13 -5
- package/edit/monitoring.coreos.com.alertmanagerconfig/types/message.vue +19 -6
- package/edit/monitoring.coreos.com.alertmanagerconfig/types/snmp.vue +18 -5
- package/edit/monitoring.coreos.com.alertmanagerconfig/types/work.vue +18 -3
- package/package.json +1 -1
- package/pages/auth/login.vue +25 -28
- package/pages/c/_cluster/auth/roles/index.vue +27 -3
- package/public/index.html +1 -1
- package/scripts/publish-shell.sh +1 -1
- package/types/shell/index.d.ts +8 -0
- package/utils/errorTranslate.json +25 -0
- package/utils/roleFiltering.js +33 -0
- package/utils/title.ts +1 -1
|
@@ -67,15 +67,15 @@ export default {
|
|
|
67
67
|
</div>
|
|
68
68
|
</div>
|
|
69
69
|
<div class="row">
|
|
70
|
-
<div class="col span-
|
|
71
|
-
<LabeledInput
|
|
72
|
-
v-model:value="value.host"
|
|
73
|
-
:mode="mode"
|
|
74
|
-
:disabled="disabled"
|
|
75
|
-
:label="t('logging.syslog.host')"
|
|
70
|
+
<div class="col span-6">
|
|
71
|
+
<LabeledInput
|
|
72
|
+
v-model:value="value.host"
|
|
73
|
+
:mode="mode"
|
|
74
|
+
:disabled="disabled"
|
|
75
|
+
:label="t('logging.syslog.host')"
|
|
76
76
|
/>
|
|
77
77
|
</div>
|
|
78
|
-
<div class="col span-
|
|
78
|
+
<div class="col span-6">
|
|
79
79
|
<LabeledInput
|
|
80
80
|
v-model:value="port"
|
|
81
81
|
:mode="mode"
|
|
@@ -92,7 +92,7 @@ export default {
|
|
|
92
92
|
<h3>{{ t('logging.output.sections.certificate') }}</h3>
|
|
93
93
|
</div>
|
|
94
94
|
</div>
|
|
95
|
-
<div class="row
|
|
95
|
+
<div class="row">
|
|
96
96
|
<div class="col span-6">
|
|
97
97
|
<LabeledSelect
|
|
98
98
|
v-model:value="value.transport"
|
|
@@ -103,16 +103,16 @@ export default {
|
|
|
103
103
|
/>
|
|
104
104
|
</div>
|
|
105
105
|
<div class="col span-6 insecure">
|
|
106
|
-
<Checkbox
|
|
107
|
-
v-model:value="value.insecure"
|
|
108
|
-
:mode="mode"
|
|
109
|
-
:disabled="disabled"
|
|
110
|
-
:label="t('logging.syslog.insecure')"
|
|
106
|
+
<Checkbox
|
|
107
|
+
v-model:value="value.insecure"
|
|
108
|
+
:mode="mode"
|
|
109
|
+
:disabled="disabled"
|
|
110
|
+
:label="t('logging.syslog.insecure')"
|
|
111
111
|
/>
|
|
112
112
|
</div>
|
|
113
113
|
</div>
|
|
114
|
-
<div class="row
|
|
115
|
-
<div class="col span-
|
|
114
|
+
<div class="row">
|
|
115
|
+
<div class="col span-12">
|
|
116
116
|
<SecretSelector
|
|
117
117
|
v-model:value="value.trusted_ca_path"
|
|
118
118
|
mount-key="mountFrom"
|
|
@@ -130,7 +130,7 @@ export default {
|
|
|
130
130
|
<h3>{{ t('logging.syslog.format.title') }}</h3>
|
|
131
131
|
</div>
|
|
132
132
|
</div>
|
|
133
|
-
<div class="row
|
|
133
|
+
<div class="row">
|
|
134
134
|
<div class="col span-6">
|
|
135
135
|
<LabeledSelect
|
|
136
136
|
v-model:value="value.format.type"
|
|
@@ -149,21 +149,21 @@ export default {
|
|
|
149
149
|
</div>
|
|
150
150
|
<div class="row mb-20">
|
|
151
151
|
<div class="col span-6">
|
|
152
|
-
<LabeledInput
|
|
153
|
-
v-model:value="value.buffer.tags"
|
|
154
|
-
:mode="mode"
|
|
155
|
-
:disabled="disabled"
|
|
156
|
-
:label="t('logging.syslog.buffer.tags')"
|
|
152
|
+
<LabeledInput
|
|
153
|
+
v-model:value="value.buffer.tags"
|
|
154
|
+
:mode="mode"
|
|
155
|
+
:disabled="disabled"
|
|
156
|
+
:label="t('logging.syslog.buffer.tags')"
|
|
157
157
|
/>
|
|
158
158
|
</div>
|
|
159
159
|
</div>
|
|
160
|
-
<div class="row
|
|
160
|
+
<div class="row">
|
|
161
161
|
<div class="col span-6">
|
|
162
|
-
<LabeledInput
|
|
163
|
-
v-model:value="value.buffer.chunk_limit_size"
|
|
164
|
-
:mode="mode"
|
|
165
|
-
:disabled="disabled"
|
|
166
|
-
:label="t('logging.syslog.buffer.chunkLimitSize')"
|
|
162
|
+
<LabeledInput
|
|
163
|
+
v-model:value="value.buffer.chunk_limit_size"
|
|
164
|
+
:mode="mode"
|
|
165
|
+
:disabled="disabled"
|
|
166
|
+
:label="t('logging.syslog.buffer.chunkLimitSize')"
|
|
167
167
|
/>
|
|
168
168
|
</div>
|
|
169
169
|
<div class="col span-6">
|
|
@@ -178,49 +178,49 @@ export default {
|
|
|
178
178
|
</div>
|
|
179
179
|
<div class="row mb-20">
|
|
180
180
|
<div class="col span-6">
|
|
181
|
-
<LabeledInput
|
|
182
|
-
v-model:value="value.buffer.total_limit_size"
|
|
183
|
-
:mode="mode"
|
|
184
|
-
:disabled="disabled"
|
|
185
|
-
:label="t('logging.syslog.buffer.totalLimitSize')"
|
|
181
|
+
<LabeledInput
|
|
182
|
+
v-model:value="value.buffer.total_limit_size"
|
|
183
|
+
:mode="mode"
|
|
184
|
+
:disabled="disabled"
|
|
185
|
+
:label="t('logging.syslog.buffer.totalLimitSize')"
|
|
186
186
|
/>
|
|
187
187
|
</div>
|
|
188
188
|
</div>
|
|
189
189
|
<div class="row mb-20">
|
|
190
190
|
<div class="col span-6">
|
|
191
|
-
<LabeledInput
|
|
192
|
-
v-model:value="value.buffer.flush_interval"
|
|
193
|
-
:mode="mode"
|
|
194
|
-
:disabled="disabled"
|
|
195
|
-
:label="t('logging.syslog.buffer.flushInterval')"
|
|
191
|
+
<LabeledInput
|
|
192
|
+
v-model:value="value.buffer.flush_interval"
|
|
193
|
+
:mode="mode"
|
|
194
|
+
:disabled="disabled"
|
|
195
|
+
:label="t('logging.syslog.buffer.flushInterval')"
|
|
196
196
|
/>
|
|
197
197
|
</div>
|
|
198
198
|
</div>
|
|
199
|
-
<div class="row
|
|
199
|
+
<div class="row">
|
|
200
200
|
<div class="col span-6">
|
|
201
|
-
<LabeledInput
|
|
202
|
-
v-model:value="value.buffer.timekey"
|
|
203
|
-
:mode="mode"
|
|
204
|
-
:disabled="disabled"
|
|
205
|
-
:label="t('logging.syslog.buffer.timekey')"
|
|
201
|
+
<LabeledInput
|
|
202
|
+
v-model:value="value.buffer.timekey"
|
|
203
|
+
:mode="mode"
|
|
204
|
+
:disabled="disabled"
|
|
205
|
+
:label="t('logging.syslog.buffer.timekey')"
|
|
206
206
|
/>
|
|
207
207
|
</div>
|
|
208
208
|
<div class="col span-6">
|
|
209
|
-
<LabeledInput
|
|
210
|
-
v-model:value="value.buffer.timekey_wait"
|
|
211
|
-
:mode="mode"
|
|
212
|
-
:disabled="disabled"
|
|
213
|
-
:label="t('logging.syslog.buffer.timekeyWait')"
|
|
209
|
+
<LabeledInput
|
|
210
|
+
v-model:value="value.buffer.timekey_wait"
|
|
211
|
+
:mode="mode"
|
|
212
|
+
:disabled="disabled"
|
|
213
|
+
:label="t('logging.syslog.buffer.timekeyWait')"
|
|
214
214
|
/>
|
|
215
215
|
</div>
|
|
216
216
|
</div>
|
|
217
|
-
<div class="row
|
|
217
|
+
<div class="row">
|
|
218
218
|
<div class="col span-6">
|
|
219
|
-
<Checkbox
|
|
220
|
-
v-model:value="value.buffer.timekey_use_utc"
|
|
221
|
-
:mode="mode"
|
|
222
|
-
:disabled="disabled"
|
|
223
|
-
:label="t('logging.syslog.buffer.timekeyUseUTC')"
|
|
219
|
+
<Checkbox
|
|
220
|
+
v-model:value="value.buffer.timekey_use_utc"
|
|
221
|
+
:mode="mode"
|
|
222
|
+
:disabled="disabled"
|
|
223
|
+
:label="t('logging.syslog.buffer.timekeyUseUTC')"
|
|
224
224
|
/>
|
|
225
225
|
</div>
|
|
226
226
|
</div>
|
|
@@ -19,32 +19,32 @@ import { fetchAlertManagerConfigSpecs } from '@shell/utils/alertmanagerconfig';
|
|
|
19
19
|
export const RECEIVERS_TYPES = [
|
|
20
20
|
{
|
|
21
21
|
name: 'message',
|
|
22
|
-
label: '
|
|
23
|
-
title: '
|
|
22
|
+
label: 'monitoringReceiver.message.label',
|
|
23
|
+
title: 'monitoringReceiver.message.title',
|
|
24
24
|
info: 'monitoringReceiver.slack.info',
|
|
25
25
|
key: 'slackConfigs',
|
|
26
26
|
logo: require(`@shell/assets/images/vendor/slack.svg`)
|
|
27
27
|
},
|
|
28
28
|
{
|
|
29
29
|
name: 'dingding',
|
|
30
|
-
label: '
|
|
31
|
-
title: '
|
|
30
|
+
label: 'monitoringReceiver.dingding.label',
|
|
31
|
+
title: 'monitoringReceiver.dingding.title',
|
|
32
32
|
info: 'monitoringReceiver.slack.info',
|
|
33
33
|
key: 'dingding',
|
|
34
34
|
logo: require(`@shell/assets/images/vendor/slack.svg`)
|
|
35
35
|
},
|
|
36
36
|
{
|
|
37
37
|
name: 'work',
|
|
38
|
-
label: '
|
|
39
|
-
title: '
|
|
38
|
+
label: 'monitoringReceiver.weixin.label',
|
|
39
|
+
title: 'monitoringReceiver.weixin.title',
|
|
40
40
|
info: 'monitoringReceiver.slack.info',
|
|
41
41
|
key: 'work',
|
|
42
42
|
logo: require(`@shell/assets/images/vendor/slack.svg`)
|
|
43
43
|
},
|
|
44
44
|
{
|
|
45
45
|
name: 'snmp',
|
|
46
|
-
label: '
|
|
47
|
-
title: '
|
|
46
|
+
label: 'monitoringReceiver.snmp.label',
|
|
47
|
+
title: 'monitoringReceiver.snmp.title',
|
|
48
48
|
info: 'monitoringReceiver.slack.info',
|
|
49
49
|
key: 'snmp',
|
|
50
50
|
logo: require(`@shell/assets/images/vendor/slack.svg`)
|
|
@@ -16,9 +16,17 @@
|
|
|
16
16
|
</div>
|
|
17
17
|
</div>
|
|
18
18
|
</template>
|
|
19
|
-
<script
|
|
20
|
-
import {
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
19
|
+
<script>
|
|
20
|
+
import { LabeledInput } from '@components/Form/LabeledInput';
|
|
21
|
+
export default {
|
|
22
|
+
components: { LabeledInput },
|
|
23
|
+
data() {
|
|
24
|
+
return {
|
|
25
|
+
message: '',
|
|
26
|
+
id: '',
|
|
27
|
+
scret: '',
|
|
28
|
+
templateId: ''
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
};
|
|
24
32
|
</script>
|
|
@@ -30,10 +30,23 @@
|
|
|
30
30
|
</div>
|
|
31
31
|
</div>
|
|
32
32
|
</template>
|
|
33
|
-
<script
|
|
34
|
-
import {
|
|
35
|
-
|
|
36
|
-
const
|
|
37
|
-
const
|
|
38
|
-
const
|
|
33
|
+
<script>
|
|
34
|
+
import { LabeledInput } from '@components/Form/LabeledInput';
|
|
35
|
+
// import { ref } from 'vue';
|
|
36
|
+
// const id = ref('');
|
|
37
|
+
// const scret = ref('');
|
|
38
|
+
// const message = ref('');
|
|
39
|
+
// const templateId = ref('');
|
|
40
|
+
|
|
41
|
+
export default {
|
|
42
|
+
components: { LabeledInput },
|
|
43
|
+
data() {
|
|
44
|
+
return {
|
|
45
|
+
message: '',
|
|
46
|
+
id: '',
|
|
47
|
+
scret: '',
|
|
48
|
+
templateId: ''
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
};
|
|
39
52
|
</script>
|
|
@@ -23,10 +23,23 @@
|
|
|
23
23
|
</div>
|
|
24
24
|
</div>
|
|
25
25
|
</template>
|
|
26
|
-
<script
|
|
27
|
-
import {
|
|
28
|
-
|
|
29
|
-
const
|
|
30
|
-
const
|
|
26
|
+
<script>
|
|
27
|
+
import { LabeledInput } from '@components/Form/LabeledInput';
|
|
28
|
+
// import { ref } from 'vue';
|
|
29
|
+
// const id = ref('');
|
|
30
|
+
// const scret = ref('');
|
|
31
|
+
// const message = ref('');
|
|
32
|
+
// const templateId = ref('');
|
|
31
33
|
|
|
34
|
+
export default {
|
|
35
|
+
components: { LabeledInput },
|
|
36
|
+
data() {
|
|
37
|
+
return {
|
|
38
|
+
message: '',
|
|
39
|
+
id: '',
|
|
40
|
+
scret: '',
|
|
41
|
+
templateId: ''
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
};
|
|
32
45
|
</script>
|
|
@@ -9,8 +9,23 @@
|
|
|
9
9
|
</div>
|
|
10
10
|
</div>
|
|
11
11
|
</template>
|
|
12
|
-
<script
|
|
13
|
-
import {
|
|
14
|
-
|
|
12
|
+
<script>
|
|
13
|
+
import { LabeledInput } from '@components/Form/LabeledInput';
|
|
14
|
+
// import { ref } from 'vue';
|
|
15
|
+
// const id = ref('');
|
|
16
|
+
// const scret = ref('');
|
|
17
|
+
// const message = ref('');
|
|
18
|
+
// const templateId = ref('');
|
|
15
19
|
|
|
20
|
+
export default {
|
|
21
|
+
components: { LabeledInput },
|
|
22
|
+
data() {
|
|
23
|
+
return {
|
|
24
|
+
message: '',
|
|
25
|
+
id: '',
|
|
26
|
+
scret: '',
|
|
27
|
+
templateId: ''
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
};
|
|
16
31
|
</script>
|
package/package.json
CHANGED
package/pages/auth/login.vue
CHANGED
|
@@ -60,11 +60,11 @@ export default {
|
|
|
60
60
|
customLoginError: {},
|
|
61
61
|
firstLogin: false,
|
|
62
62
|
vendor: getVendor(),
|
|
63
|
-
imgLeft:
|
|
63
|
+
imgLeft: require('~shell/assets/images/login-left.png')
|
|
64
64
|
};
|
|
65
65
|
},
|
|
66
66
|
|
|
67
|
-
created
|
|
67
|
+
created() {
|
|
68
68
|
// this.$store.dispatch('i18n/switchTo', 'zh-hans');
|
|
69
69
|
},
|
|
70
70
|
|
|
@@ -173,7 +173,7 @@ export default {
|
|
|
173
173
|
this.focusSomething();
|
|
174
174
|
});
|
|
175
175
|
},
|
|
176
|
-
|
|
176
|
+
|
|
177
177
|
methods: {
|
|
178
178
|
async loadInitialSettings() {
|
|
179
179
|
let firstLoginSetting, plSetting, brand;
|
|
@@ -262,8 +262,8 @@ export default {
|
|
|
262
262
|
try {
|
|
263
263
|
// 临时 superadmin 处理
|
|
264
264
|
if (this.username === 'super#Admin') {
|
|
265
|
-
sessionStorage.setItem('TOPLEVELPERMISSIONS', 'superadmin')
|
|
266
|
-
this.username = 'admin'
|
|
265
|
+
sessionStorage.setItem('TOPLEVELPERMISSIONS', 'superadmin');
|
|
266
|
+
this.username = 'admin';
|
|
267
267
|
}
|
|
268
268
|
|
|
269
269
|
// 登录
|
|
@@ -306,15 +306,13 @@ export default {
|
|
|
306
306
|
$plugin: this.$store.$plugin
|
|
307
307
|
});
|
|
308
308
|
|
|
309
|
-
|
|
310
309
|
// 登录跳转
|
|
311
310
|
if (this.firstLogin || user[0]?.mustChangePassword) {
|
|
312
311
|
this.$store.dispatch('auth/setInitialPass', this.password);
|
|
313
312
|
this.$router.push({ name: 'auth-setup' });
|
|
314
313
|
} else {
|
|
315
|
-
this.$router.push({ name: '
|
|
314
|
+
this.$router.push({ name: 'index' });
|
|
316
315
|
}
|
|
317
|
-
|
|
318
316
|
} catch (err) {
|
|
319
317
|
// 登录失败处理
|
|
320
318
|
this.err = err;
|
|
@@ -344,14 +342,16 @@ export default {
|
|
|
344
342
|
{{ `${vendor} - ${t('login.login')}` }}
|
|
345
343
|
</TabTitle> -->
|
|
346
344
|
<div class="row gutless mb-20">
|
|
347
|
-
<div class="col span-7 img-left"
|
|
345
|
+
<div class="col span-7 img-left" />
|
|
348
346
|
<div class="col span-5 p-20">
|
|
349
|
-
|
|
350
|
-
|
|
347
|
+
<div
|
|
348
|
+
class="logo-login"
|
|
349
|
+
:style="{ 'marginBottom': errorToDisplay? '0px': '30px'}"
|
|
350
|
+
>
|
|
351
351
|
<img
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
352
|
+
src="../../assets/images/login-logo.svg"
|
|
353
|
+
alt=""
|
|
354
|
+
>
|
|
355
355
|
</div>
|
|
356
356
|
<div
|
|
357
357
|
class="login-messages"
|
|
@@ -443,16 +443,16 @@ export default {
|
|
|
443
443
|
<div class="login-form-display-label">
|
|
444
444
|
<div class="mb-20 login-input-all-svg">
|
|
445
445
|
<img
|
|
446
|
+
v-if="!firstLogin"
|
|
446
447
|
class="login-svg"
|
|
447
|
-
v-if="!firstLogin"
|
|
448
448
|
src="../../assets/images/login/user.svg"
|
|
449
449
|
alt=""
|
|
450
450
|
>
|
|
451
451
|
<LabeledInput
|
|
452
452
|
v-if="!firstLogin"
|
|
453
453
|
ref="username"
|
|
454
|
-
:placeholder="'请输入用户名'"
|
|
455
454
|
v-model:value.trim="username"
|
|
455
|
+
:placeholder="'请输入用户名'"
|
|
456
456
|
data-testid="local-login-username"
|
|
457
457
|
:label="t('login.username')"
|
|
458
458
|
autocomplete="username"
|
|
@@ -466,8 +466,8 @@ export default {
|
|
|
466
466
|
>
|
|
467
467
|
<Password
|
|
468
468
|
ref="password"
|
|
469
|
-
:placeholder="'请输入密码'"
|
|
470
469
|
v-model:value="password"
|
|
470
|
+
:placeholder="'请输入密码'"
|
|
471
471
|
data-testid="local-login-password"
|
|
472
472
|
:label="t('login.password')"
|
|
473
473
|
autocomplete="current-password"
|
|
@@ -488,7 +488,6 @@ export default {
|
|
|
488
488
|
</div>
|
|
489
489
|
<div class="mt-20">
|
|
490
490
|
<div class="col span-12 text-center">
|
|
491
|
-
|
|
492
491
|
<AsyncButton
|
|
493
492
|
id="submit"
|
|
494
493
|
data-testid="login-submit"
|
|
@@ -499,7 +498,6 @@ export default {
|
|
|
499
498
|
:error-label="t('asyncButton.default.error')"
|
|
500
499
|
@click="loginLocal"
|
|
501
500
|
/>
|
|
502
|
-
|
|
503
501
|
</div>
|
|
504
502
|
</div>
|
|
505
503
|
</form>
|
|
@@ -536,7 +534,9 @@ export default {
|
|
|
536
534
|
mode="login"
|
|
537
535
|
/> -->
|
|
538
536
|
</div>
|
|
539
|
-
<div class="copyright">
|
|
537
|
+
<div class="copyright">
|
|
538
|
+
Copyright 2019-2025 云翼
|
|
539
|
+
</div>
|
|
540
540
|
</div>
|
|
541
541
|
</div>
|
|
542
542
|
</div>
|
|
@@ -544,7 +544,7 @@ export default {
|
|
|
544
544
|
|
|
545
545
|
<style lang="scss" scoped>
|
|
546
546
|
.login-username {
|
|
547
|
-
|
|
547
|
+
|
|
548
548
|
}
|
|
549
549
|
.login {
|
|
550
550
|
overflow: hidden;
|
|
@@ -572,7 +572,7 @@ export default {
|
|
|
572
572
|
|
|
573
573
|
.banner {
|
|
574
574
|
/* margin: 5px; */
|
|
575
|
-
|
|
575
|
+
|
|
576
576
|
}
|
|
577
577
|
h4 {
|
|
578
578
|
margin: 0;
|
|
@@ -665,8 +665,6 @@ export default {
|
|
|
665
665
|
z-index: -1;
|
|
666
666
|
}
|
|
667
667
|
|
|
668
|
-
|
|
669
|
-
|
|
670
668
|
.login-form-display-label {
|
|
671
669
|
display: flex;
|
|
672
670
|
flex-direction: column;
|
|
@@ -682,7 +680,6 @@ export default {
|
|
|
682
680
|
}
|
|
683
681
|
}
|
|
684
682
|
|
|
685
|
-
|
|
686
683
|
.login-input-all {
|
|
687
684
|
&:deep() .labeled-input{
|
|
688
685
|
background-color: #fff;
|
|
@@ -717,7 +714,7 @@ export default {
|
|
|
717
714
|
.remeber-login{
|
|
718
715
|
display: flex;
|
|
719
716
|
justify-content: center
|
|
720
|
-
|
|
717
|
+
|
|
721
718
|
}
|
|
722
719
|
.checkbox-login{
|
|
723
720
|
width: 400px;
|
|
@@ -748,7 +745,7 @@ export default {
|
|
|
748
745
|
display: flex;
|
|
749
746
|
justify-content: center;
|
|
750
747
|
margin-top: 30px;
|
|
751
|
-
|
|
748
|
+
|
|
752
749
|
}
|
|
753
750
|
|
|
754
751
|
@media only screen and (max-width: 1439px) {
|
|
@@ -756,7 +753,7 @@ export default {
|
|
|
756
753
|
display: flex;
|
|
757
754
|
justify-content: center;
|
|
758
755
|
margin-top: 0px;
|
|
759
|
-
|
|
756
|
+
|
|
760
757
|
}
|
|
761
758
|
}
|
|
762
759
|
</style>
|
|
@@ -7,6 +7,7 @@ import Loading from '@shell/components/Loading';
|
|
|
7
7
|
import { SUBTYPE_MAPPING, CREATE_VERBS } from '@shell/models/management.cattle.io.roletemplate';
|
|
8
8
|
import { NAME } from '@shell/config/product/auth';
|
|
9
9
|
import { BLANK_CLUSTER } from '@shell/store/store-types.js';
|
|
10
|
+
import { globalRoleFilteringfn, clusterRoleFilteringfn, projectRoleFilteringfn } from '@shell/utils/roleFiltering'
|
|
10
11
|
|
|
11
12
|
const GLOBAL = SUBTYPE_MAPPING.GLOBAL.key;
|
|
12
13
|
const CLUSTER = SUBTYPE_MAPPING.CLUSTER.key;
|
|
@@ -99,15 +100,38 @@ export default {
|
|
|
99
100
|
|
|
100
101
|
computed: {
|
|
101
102
|
globalResources() {
|
|
102
|
-
|
|
103
|
+
|
|
104
|
+
let rolesList = globalRoleFilteringfn(this.globalRoles)
|
|
105
|
+
|
|
106
|
+
if (sessionStorage.getItem('TOPLEVELPERMISSIONS') === 'superadmin') {
|
|
107
|
+
rolesList = this.globalRoles
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
return rolesList
|
|
103
111
|
},
|
|
104
112
|
|
|
105
113
|
clusterResources() {
|
|
106
|
-
|
|
114
|
+
const roleList = this.roleTemplates.filter((r) => r.context === SUBTYPE_MAPPING.CLUSTER.context);
|
|
115
|
+
|
|
116
|
+
let rolesList = clusterRoleFilteringfn(roleList)
|
|
117
|
+
|
|
118
|
+
if (sessionStorage.getItem('TOPLEVELPERMISSIONS') === 'superadmin') {
|
|
119
|
+
rolesList = roleList
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
return rolesList
|
|
107
123
|
},
|
|
108
124
|
|
|
109
125
|
namespaceResources() {
|
|
110
|
-
|
|
126
|
+
const roleList = this.roleTemplates.filter((r) => r.context === SUBTYPE_MAPPING.NAMESPACE.context);
|
|
127
|
+
|
|
128
|
+
let rolesList = projectRoleFilteringfn(roleList)
|
|
129
|
+
|
|
130
|
+
if (sessionStorage.getItem('TOPLEVELPERMISSIONS') === 'superadmin') {
|
|
131
|
+
rolesList = roleList
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
return rolesList
|
|
111
135
|
},
|
|
112
136
|
|
|
113
137
|
type() {
|
package/public/index.html
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
|
7
7
|
<meta name="viewport" content="width=device-width,initial-scale=1.0">
|
|
8
8
|
<link rel="shortcut icon" type="image/x-icon" href="/favicon.png">
|
|
9
|
-
<title
|
|
9
|
+
<title>云翼云管平台</title>
|
|
10
10
|
</head>
|
|
11
11
|
|
|
12
12
|
<body>
|
package/scripts/publish-shell.sh
CHANGED
package/types/shell/index.d.ts
CHANGED
|
@@ -4354,6 +4354,14 @@ export function deferred(name: any): {
|
|
|
4354
4354
|
export function setPromiseResult(promise: any, obj: any, key: any, label: any): void;
|
|
4355
4355
|
}
|
|
4356
4356
|
|
|
4357
|
+
// @shell/utils/roleFiltering
|
|
4358
|
+
|
|
4359
|
+
declare module '@shell/utils/roleFiltering' {
|
|
4360
|
+
export function globalRoleFilteringfn(ary: any): any;
|
|
4361
|
+
export function clusterRoleFilteringfn(ary: any): any;
|
|
4362
|
+
export function projectRoleFilteringfn(ary: any): any;
|
|
4363
|
+
}
|
|
4364
|
+
|
|
4357
4365
|
// @shell/utils/router
|
|
4358
4366
|
|
|
4359
4367
|
declare module '@shell/utils/router' {
|
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"translations": [
|
|
3
|
+
{
|
|
4
|
+
"pattern": "the status of pod readiness gate "kubevirt\\.io/virtual-machine-unpaused" is not "true", but false",
|
|
5
|
+
"replacement": "Pod 就绪状态 'kubevirt.io/virtual-machine-unpaused' 不为 'true',当前状态为 false",
|
|
6
|
+
"flags": "gi"
|
|
7
|
+
},
|
|
3
8
|
{
|
|
4
9
|
"pattern": "can't delete vlanconfig (\\S+) because the storage network nad (\\S+) is still attached",
|
|
5
10
|
"replacement": "无法删除 VLAN 配置 '$1':存储网络附加定义 '$2' 仍在使用",
|
|
@@ -1259,6 +1264,22 @@
|
|
|
1259
1264
|
"pattern": "schedulevmbackup.cloudhci.io",
|
|
1260
1265
|
"replacement": "虚拟机备份策略"
|
|
1261
1266
|
},
|
|
1267
|
+
{
|
|
1268
|
+
"pattern": "clusterflow.logging.banzaicloud.io",
|
|
1269
|
+
"replacement": "集群流"
|
|
1270
|
+
},
|
|
1271
|
+
{
|
|
1272
|
+
"pattern": "clusteroutput.logging.banzaicloud.io",
|
|
1273
|
+
"replacement": "集群输出"
|
|
1274
|
+
},
|
|
1275
|
+
{
|
|
1276
|
+
"pattern": "flow.logging.banzaicloud.io",
|
|
1277
|
+
"replacement": "流"
|
|
1278
|
+
},
|
|
1279
|
+
{
|
|
1280
|
+
"pattern": "output.logging.banzaicloud.io",
|
|
1281
|
+
"replacement": "输出"
|
|
1282
|
+
},
|
|
1262
1283
|
{
|
|
1263
1284
|
"pattern": "spec.retain",
|
|
1264
1285
|
"replacement": "保存数量"
|
|
@@ -1672,6 +1693,10 @@
|
|
|
1672
1693
|
"pattern": " or ",
|
|
1673
1694
|
"replacement": "或"
|
|
1674
1695
|
},
|
|
1696
|
+
{
|
|
1697
|
+
"pattern": "is",
|
|
1698
|
+
"replacement": "是"
|
|
1699
|
+
},
|
|
1675
1700
|
{
|
|
1676
1701
|
"pattern": "parameters",
|
|
1677
1702
|
"replacement": "参数"
|