|
|
@@ -3,9 +3,9 @@
|
|
3
|
3
|
<div class="login-card">
|
|
4
|
4
|
<img src="@/assets/logo.png" alt="logo" class="login-logo"/>
|
|
5
|
5
|
|
|
6
|
|
- <el-form label-position="top" class="login-form">
|
|
|
6
|
+ <el-form v-if="!disablePwd" label-position="top" class="login-form">
|
|
7
|
7
|
<el-form-item :label="T('Username')">
|
|
8
|
|
- <el-input v-model="form.username" class="login-input"></el-input>
|
|
|
8
|
+ <el-input v-model="form.username" type="username" class="login-input"></el-input>
|
|
9
|
9
|
</el-form-item>
|
|
10
|
10
|
|
|
11
|
11
|
<el-form-item :label="T('Password')">
|
|
|
@@ -25,7 +25,7 @@
|
|
25
|
25
|
</el-form-item>
|
|
26
|
26
|
</el-form>
|
|
27
|
27
|
|
|
28
|
|
- <div class="divider" v-if="options.length > 0">
|
|
|
28
|
+ <div class="divider" v-if="options.length > 0 && !disablePwd">
|
|
29
|
29
|
<span>{{ T('or login in with') }}</span>
|
|
30
|
30
|
</div>
|
|
31
|
31
|
|
|
|
@@ -126,11 +126,17 @@
|
|
126
|
126
|
}
|
|
127
|
127
|
|
|
128
|
128
|
const allowRegister = ref(false)
|
|
|
129
|
+ const disablePwd = ref(false)
|
|
129
|
130
|
const loadLoginOptions = async () => {
|
|
130
|
131
|
try {
|
|
131
|
132
|
const res = await loginOptions().catch(_ => false)
|
|
132
|
133
|
if (!res || !res.data) return console.error('No valid response received')
|
|
133
|
134
|
res.data.ops.map(option => (options.push({ name: option }))) // 创建新的对象数组
|
|
|
135
|
+ if (res.data.auto_oidc) {
|
|
|
136
|
+ // 如果有自动OIDC登录选项,直接调用第一个
|
|
|
137
|
+ handleOIDCLogin(res.data.ops[0])
|
|
|
138
|
+ }
|
|
|
139
|
+ disablePwd.value = res.data.disable_pwd
|
|
134
|
140
|
allowRegister.value = res.data.register
|
|
135
|
141
|
if (res.data.need_captcha) {
|
|
136
|
142
|
loadCaptcha()
|
|
|
@@ -288,4 +294,4 @@ h1 {
|
|
288
|
294
|
}
|
|
289
|
295
|
}
|
|
290
|
296
|
}
|
|
291
|
|
-</style>
|
|
|
297
|
+</style>
|