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

feat: 优化oauth设置页面 (#22)

* hide ClientSecret when re-edit

* add rediret_url at oauth form(readonly, for user to know what's the redirect url)

* format defaultRedirect
Tao Chen месяцев назад: 5
Родитель
Сommit
4be05adb0c
1 измененных файлов с 29 добавлено и 8 удалено
  1. 29 8
      src/views/oauth/index.vue

+ 29 - 8
src/views/oauth/index.vue

@@ -37,7 +37,7 @@
37 37
     </el-card>
38 38
     <el-dialog v-model="formVisible" :title="!formData.id?T('Create') :T('Update')" width="800">
39 39
       <el-form class="dialog-form" ref="form" :model="formData" :rules="rules" label-width="120px">
40
-        <el-form-item label="Type" prop="">
40
+        <el-form-item label="Type" prop="oauth_type">
41 41
           <el-radio-group v-model="formData.oauth_type" :disabled="!!formData.id">
42 42
             <el-radio v-for="item in types" :key="item.value" :value="item.value" style="display: block">
43 43
               {{ item.label }}
@@ -57,11 +57,21 @@
57 57
           <el-input v-model="formData.client_id"></el-input>
58 58
         </el-form-item>
59 59
         <el-form-item label="ClientSecret" prop="client_secret">
60
-          <el-input v-model="formData.client_secret"></el-input>
60
+          <el-input
61
+            v-model="formData.client_secret"
62
+            :type="formData.id ? 'password' : 'text'"
63
+            :show-password="!formData.id"
64
+            >
65
+          </el-input>
66
+        </el-form-item>
67
+        <el-form-item label="RedirectUrl" prop="redirect_url">
68
+          <el-input
69
+            v-model="formData.redirect_url"
70
+            readonly
71
+            suffix-icon="el-icon-document-copy"
72
+            @click="copyRedirectUrl"
73
+          />
61 74
         </el-form-item>
62
-<!--        <el-form-item label="RedirectUrl" prop="redirect_url">
63
-          <el-input v-model="formData.redirect_url"></el-input>
64
-        </el-form-item>-->
65 75
         <el-form-item label="PkceEnable" prop="pkce_enable">
66 76
           <el-switch v-model="formData.pkce_enable"
67 77
                      :active-value="true"
@@ -97,6 +107,12 @@
97 107
   import { ElMessage, ElMessageBox } from 'element-plus'
98 108
   import { T } from '@/utils/i18n'
99 109
 
110
+  const copyRedirectUrl = () => {
111
+    navigator.clipboard.writeText(formData.redirect_url)
112
+      .then(() => ElMessage.success('Copied'))
113
+      .catch(() => ElMessage.error('Copy failed'))
114
+  }
115
+
100 116
   const listRes = reactive({
101 117
     list: [], total: 0, loading: false,
102 118
   })
@@ -167,7 +183,7 @@
167 183
   const rules = {
168 184
     client_id: [{ required: true, message: T('ParamRequired', { param: 'client_id' }), trigger: 'blur' }],
169 185
     client_secret: [{ required: true, message: T('ParamRequired', { param: 'client_secret' }), trigger: 'blur' }],
170
-    redirect_url: [{ required: true, message: T('ParamRequired', { param: 'redirect_url' }), trigger: 'blur' }],
186
+    // redirect_url: [{ required: true, message: T('ParamRequired', { param: 'redirect_url' }), trigger: 'blur' }],
171 187
     oauth_type: [{ required: true, message: T('ParamRequired', { param: 'oauth_type' }), trigger: 'blur' }],
172 188
     issuer: [{ required: true, message: T('ParamRequired', { param: 'issuer' }), trigger: 'blur' }],
173 189
     pkce_method: [
@@ -185,6 +201,11 @@
185 201
       },
186 202
     ],
187 203
   }
204
+
205
+  const defaultRedirect = () => {
206
+    return `${window.location.origin}/api/oidc/callback`
207
+  }
208
+
188 209
   const toEdit = (row) => {
189 210
     formVisible.value = true
190 211
     formData.id = row.id
@@ -193,7 +214,7 @@
193 214
     formData.issuer = row.issuer
194 215
     formData.client_id = row.client_id
195 216
     formData.client_secret = row.client_secret
196
-    formData.redirect_url = row.redirect_url
217
+    formData.redirect_url = row.redirect_url || defaultRedirect()
197 218
     formData.scopes = row.scopes
198 219
     formData.auto_register = row.auto_register
199 220
     formData.pkce_enable = row.pkce_enable
@@ -207,7 +228,7 @@
207 228
     formData.issuer = ''
208 229
     formData.client_id = ''
209 230
     formData.client_secret = ''
210
-    formData.redirect_url = ''
231
+    formData.redirect_url = defaultRedirect()
211 232
     formData.scopes = ''
212 233
     formData.auto_register = false
213 234
     formData.pkce_enable = false