Skip to content

Commit 2266409

Browse files
committed
完成 OAuth2 的客户端模块
1 parent e5e9cf4 commit 2266409

File tree

3 files changed

+72
-14
lines changed

3 files changed

+72
-14
lines changed

src/components/generator/config.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -499,7 +499,7 @@ export const selectComponents = [
499499
__slot__: {
500500
'list-type': true
501501
},
502-
action: 'https://jsonplaceholder.typicode.com/posts/',
502+
action: process.env.VUE_APP_BASE_API + "/admin-api/infra/file/upload", // 请求地址
503503
disabled: false,
504504
accept: '',
505505
name: 'file',

src/utils/dict.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ export const DICT_TYPE = {
2323
SYSTEM_SMS_SEND_STATUS: 'system_sms_send_status',
2424
SYSTEM_SMS_RECEIVE_STATUS: 'system_sms_receive_status',
2525
SYSTEM_ERROR_CODE_TYPE: 'system_error_code_type',
26+
SYSTEM_OAUTH2_GRANT_TYPE: 'system_oauth2_grant_type',
2627

2728
// ========== INFRA 模块 ==========
2829
INFRA_BOOLEAN_STRING: 'infra_boolean_string',

src/views/system/oauth2/client/index.vue

Lines changed: 70 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -29,19 +29,32 @@
2929

3030
<!-- 列表 -->
3131
<el-table v-loading="loading" :data="list">
32-
<el-table-column label="客户端编号" align="center" prop="id" />
32+
<el-table-column label="客户端编号" align="center" prop="clientId" />
3333
<el-table-column label="客户端密钥" align="center" prop="secret" />
3434
<el-table-column label="应用名" align="center" prop="name" />
35-
<el-table-column label="应用图标" align="center" prop="logo" />
36-
<el-table-column label="应用描述" align="center" prop="description" />
35+
<el-table-column label="应用图标" align="center" prop="logo">
36+
<template slot-scope="scope">
37+
<img width="40px" height="40px" :src="scope.row.logo">
38+
</template>
39+
</el-table-column>
3740
<el-table-column label="状态" align="center" prop="status">
3841
<template slot-scope="scope">
3942
<dict-tag :type="DICT_TYPE.COMMON_STATUS" :value="scope.row.status" />
4043
</template>
4144
</el-table-column>
42-
<el-table-column label="访问令牌的有效期" align="center" prop="accessTokenValiditySeconds" />
43-
<el-table-column label="刷新令牌的有效期" align="center" prop="refreshTokenValiditySeconds" />
44-
<el-table-column label="可重定向的 URI 地址" align="center" prop="redirectUris" />
45+
<el-table-column label="访问令牌的有效期" align="center" prop="accessTokenValiditySeconds">
46+
<template slot-scope="scope">{{ scope.row.accessTokenValiditySeconds }} 秒</template>
47+
</el-table-column>
48+
<el-table-column label="刷新令牌的有效期" align="center" prop="refreshTokenValiditySeconds">
49+
<template slot-scope="scope">{{ scope.row.refreshTokenValiditySeconds }} 秒</template>
50+
</el-table-column>
51+
<el-table-column label="授权类型" align="center" prop="authorizedGrantTypes">
52+
<template slot-scope="scope">
53+
<el-tag :disable-transitions="true" v-for="(authorizedGrantType, index) in scope.row.authorizedGrantTypes" :index="index">
54+
{{ authorizedGrantType }}
55+
</el-tag>
56+
</template>
57+
</el-table-column>
4558
<el-table-column label="创建时间" align="center" prop="createTime" width="180">
4659
<template slot-scope="scope">
4760
<span>{{ parseTime(scope.row.createTime) }}</span>
@@ -63,15 +76,17 @@
6376
<!-- 对话框(添加 / 修改) -->
6477
<el-dialog :title="title" :visible.sync="open" width="700px" append-to-body>
6578
<el-form ref="form" :model="form" :rules="rules" label-width="160px">
79+
<el-form-item label="客户端编号" prop="secret">
80+
<el-input v-model="form.clientId" placeholder="请输入客户端编号" />
81+
</el-form-item>
6682
<el-form-item label="客户端密钥" prop="secret">
6783
<el-input v-model="form.secret" placeholder="请输入客户端密钥" />
6884
</el-form-item>
6985
<el-form-item label="应用名" prop="name">
7086
<el-input v-model="form.name" placeholder="请输入应用名" />
7187
</el-form-item>
7288
<el-form-item label="应用图标">
73-
<!-- <imageUpload v-model="form.logo" :limit="1"/>-->
74-
<file-upload v-model="form.logo" :limit="1"/>
89+
<imageUpload v-model="form.logo" :limit="1"/>
7590
</el-form-item>
7691
<el-form-item label="应用描述">
7792
<el-input type="textarea" v-model="form.description" placeholder="请输入应用名" />
@@ -89,7 +104,39 @@
89104
<el-input-number v-model="form.refreshTokenValiditySeconds" placeholder="单位:秒" />
90105
</el-form-item>
91106
<el-form-item label="可重定向的 URI 地址" prop="redirectUris">
92-
<el-input v-model="form.redirectUris" placeholder="请输入可重定向的 URI 地址" />
107+
<el-select v-model="form.redirectUris" multiple filterable allow-create placeholder="请输入可重定向的 URI 地址" style="width: 500px" >
108+
<el-option v-for="redirectUri in form.redirectUris" :key="redirectUri" :label="redirectUri" :value="redirectUri"/>
109+
</el-select>
110+
</el-form-item>
111+
<el-form-item label="是否自动授权" prop="autoApprove">
112+
<el-radio-group v-model="form.autoApprove">
113+
<el-radio :key="true" :label="true">自动登录</el-radio>
114+
<el-radio :key="false" :label="false">手动登录</el-radio>
115+
</el-radio-group>
116+
</el-form-item>
117+
<el-form-item label="授权类型" prop="authorizedGrantTypes">
118+
<el-select v-model="form.authorizedGrantTypes" multiple filterable placeholder="请输入授权类型" style="width: 500px" >
119+
<el-option v-for="dict in this.getDictDatas(DICT_TYPE.SYSTEM_OAUTH2_GRANT_TYPE)"
120+
:key="dict.value" :label="dict.label" :value="dict.value"/>
121+
</el-select>
122+
</el-form-item>
123+
<el-form-item label="授权范围" prop="scopes">
124+
<el-select v-model="form.scopes" multiple filterable allow-create placeholder="请输入授权范围" style="width: 500px" >
125+
<el-option v-for="scope in form.scopes" :key="scope" :label="scope" :value="scope"/>
126+
</el-select>
127+
</el-form-item>
128+
<el-form-item label="权限" prop="authorities">
129+
<el-select v-model="form.authorities" multiple filterable allow-create placeholder="请输入权限" style="width: 500px" >
130+
<el-option v-for="authority in form.authorities" :key="authority" :label="authority" :value="authority"/>
131+
</el-select>
132+
</el-form-item>
133+
<el-form-item label="资源" prop="resourceIds">
134+
<el-select v-model="form.resourceIds" multiple filterable allow-create placeholder="请输入资源" style="width: 500px" >
135+
<el-option v-for="resourceId in form.resourceIds" :key="resourceId" :label="resourceId" :value="resourceId"/>
136+
</el-select>
137+
</el-form-item>
138+
<el-form-item label="附加信息" prop="additionalInformation">
139+
<el-input type="textarea" v-model="form.additionalInformation" placeholder="请输入附加信息,JSON 格式数据" />
93140
</el-form-item>
94141
</el-form>
95142
<div slot="footer" class="dialog-footer">
@@ -141,13 +188,16 @@ export default {
141188
form: {},
142189
// 表单校验
143190
rules: {
191+
clientId: [{ required: true, message: "客户端编号不能为空", trigger: "blur" }],
144192
secret: [{ required: true, message: "客户端密钥不能为空", trigger: "blur" }],
145193
name: [{ required: true, message: "应用名不能为空", trigger: "blur" }],
146194
logo: [{ required: true, message: "应用图标不能为空", trigger: "blur" }],
147195
status: [{ required: true, message: "状态不能为空", trigger: "blur" }],
148196
accessTokenValiditySeconds: [{ required: true, message: "访问令牌的有效期不能为空", trigger: "blur" }],
149197
refreshTokenValiditySeconds: [{ required: true, message: "刷新令牌的有效期不能为空", trigger: "blur" }],
150198
redirectUris: [{ required: true, message: "可重定向的 URI 地址不能为空", trigger: "blur" }],
199+
autoApprove: [{ required: true, message: "是否自动授权不能为空", trigger: "blur" }],
200+
authorizedGrantTypes: [{ required: true, message: "授权类型不能为空", trigger: "blur" }],
151201
}
152202
};
153203
},
@@ -176,14 +226,21 @@ export default {
176226
reset() {
177227
this.form = {
178228
id: undefined,
229+
clientId: undefined,
179230
secret: undefined,
180231
name: undefined,
181232
logo: undefined,
182233
description: undefined,
183234
status: CommonStatusEnum.ENABLE,
184-
accessTokenValiditySeconds: undefined,
185-
refreshTokenValiditySeconds: undefined,
186-
redirectUris: undefined,
235+
accessTokenValiditySeconds: 30 * 60,
236+
refreshTokenValiditySeconds: 30 * 24 * 60,
237+
redirectUris: [],
238+
autoApprove: true,
239+
authorizedGrantTypes: [],
240+
scopes: [],
241+
authorities: [],
242+
resourceIds: [],
243+
additionalInformation: undefined,
187244
};
188245
this.resetForm("form");
189246
},
@@ -239,7 +296,7 @@ export default {
239296
/** 删除按钮操作 */
240297
handleDelete(row) {
241298
const id = row.id;
242-
this.$modal.confirm('是否确认删除 OAuth2 客户端编号为"' + id + '"的数据项?').then(function() {
299+
this.$modal.confirm('是否确认删除客户端编号为"' + row.clientId + '"的数据项?').then(function() {
243300
return deleteOAuth2Client(id);
244301
}).then(() => {
245302
this.getList();

0 commit comments

Comments
 (0)