Просмотр исходного кода

feat: Login (#21)

* if auto_oidc=true, auto login by oidc and hiden login-form if diable_pwd

* also hide divider
Tao Chen месяцев назад: 6
Родитель
Сommit
09a40d3502
1 измененных файлов с 10 добавлено и 4 удалено
  1. 10 4
      src/views/login/login.vue

+ 10 - 4
src/views/login/login.vue

@@ -3,9 +3,9 @@
3
     <div class="login-card">
3
     <div class="login-card">
4
       <img src="@/assets/logo.png" alt="logo" class="login-logo"/>
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
         <el-form-item :label="T('Username')">
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
         </el-form-item>
9
         </el-form-item>
10
 
10
 
11
         <el-form-item :label="T('Password')">
11
         <el-form-item :label="T('Password')">
@@ -25,7 +25,7 @@
25
         </el-form-item>
25
         </el-form-item>
26
       </el-form>
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
         <span>{{ T('or login in with') }}</span>
29
         <span>{{ T('or login in with') }}</span>
30
       </div>
30
       </div>
31
 
31
 
@@ -126,11 +126,17 @@
126
   }
126
   }
127
 
127
 
128
   const allowRegister = ref(false)
128
   const allowRegister = ref(false)
129
+  const disablePwd = ref(false)
129
   const loadLoginOptions = async () => {
130
   const loadLoginOptions = async () => {
130
     try {
131
     try {
131
       const res = await loginOptions().catch(_ => false)
132
       const res = await loginOptions().catch(_ => false)
132
       if (!res || !res.data) return console.error('No valid response received')
133
       if (!res || !res.data) return console.error('No valid response received')
133
       res.data.ops.map(option => (options.push({ name: option }))) // 创建新的对象数组
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
       allowRegister.value = res.data.register
140
       allowRegister.value = res.data.register
135
       if (res.data.need_captcha) {
141
       if (res.data.need_captcha) {
136
         loadCaptcha()
142
         loadCaptcha()
@@ -288,4 +294,4 @@ h1 {
288
     }
294
     }
289
   }
295
   }
290
 }
296
 }
291
-</style>
297
+</style>