Merge pull request #4 from IamTaoChen/changeOwnPasswd

add placeholder at changePassWD for Oauth user
This commit is contained in:
2024-10-31 18:46:47 +08:00
committed by GitHub
17 changed files with 54 additions and 36 deletions
+9 -9
View File
@@ -1,18 +1,18 @@
<template> <template>
<el-dialog v-model="visible" width="50%"> <el-dialog v-model="visible" width="50%" :show-close="false">
<el-form ref="cpwd" :model="changePwdForm" :rules="chagePwdRules" label-width="120px" style="margin-top: 20px"> <el-form ref="cpwd" :model="changePwdForm" :rules="chagePwdRules" label-width="150px" label-position="left" style="margin-top: 20px">
<el-form-item label="旧密码" prop="old_password"> <el-form-item :label="T('OldPassword')" prop="old_password">
<el-input v-model="changePwdForm.old_password" show-password></el-input> <el-input v-model="changePwdForm.old_password" :placeholder="T('For OIDC login without a password, enter any 4-20 letters')" show-password></el-input>
</el-form-item> </el-form-item>
<el-form-item label="新密码" prop="new_password"> <el-form-item :label="T('NewPassword')" prop="new_password">
<el-input v-model="changePwdForm.new_password" show-password></el-input> <el-input v-model="changePwdForm.new_password" show-password></el-input>
</el-form-item> </el-form-item>
<el-form-item label="确认密码" prop="confirmPwd"> <el-form-item :label="T('ConfirmPassword')" prop="confirmPwd">
<el-input v-model="changePwdForm.confirmPwd" show-password></el-input> <el-input v-model="changePwdForm.confirmPwd" show-password></el-input>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-button @click="cancelChangePwd">取消</el-button> <el-button @click="cancelChangePwd">{{ T('Cancel') }}</el-button>
<el-button type="primary" @click="changePassword">确定</el-button> <el-button type="primary" @click="changePassword">{{ T('Confirm') }}</el-button>
</el-form-item> </el-form-item>
</el-form> </el-form>
</el-dialog> </el-dialog>
@@ -24,7 +24,7 @@
import { ElMessageBox } from 'element-plus' import { ElMessageBox } from 'element-plus'
import { changeCurPwd } from '@/api/user' import { changeCurPwd } from '@/api/user'
import { useUserStore } from '@/store/user' import { useUserStore } from '@/store/user'
import { T } from '@/utils/i18n'
const props = defineProps({ const props = defineProps({
visible: Boolean, visible: Boolean,
}) })
+18
View File
@@ -431,6 +431,24 @@
"or login in with": { "or login in with": {
"One": "或使用以下登陆" "One": "或使用以下登陆"
}, },
"Optional, default is" :
{
"One": "可选, 默认值是"
},
"Check your IdP docs, without":
{
"One": "检查IdP的文档, 不包含"
},
"For OIDC login without a password, enter any 4-20 letters":
{
"One": "如果通过 OIDC 登录且未设置密码,请输入任意 4-20 个字符"
},
"OldPassword": {
"One": "旧密码"
},
"NewPassword": {
"One": "新密码"
},
"ConfirmPassword": { "ConfirmPassword": {
"One": "确认密码" "One": "确认密码"
}, },
+1 -1
View File
@@ -20,7 +20,7 @@
</el-card> </el-card>
<el-card class="list-body" shadow="hover"> <el-card class="list-body" shadow="hover">
<el-table :data="listRes.list" v-loading="listRes.loading" border> <el-table :data="listRes.list" v-loading="listRes.loading" border>
<el-table-column prop="id" label="id" align="center"/> <el-table-column prop="id" label="ID" align="center"/>
<el-table-column prop="user_id" :label="T('Owner')" align="center"> <el-table-column prop="user_id" :label="T('Owner')" align="center">
<template #default="{row}"> <template #default="{row}">
<span v-if="row.user_id"> <el-tag>{{ allUsers?.find(u => u.id === row.user_id)?.username }}</el-tag> </span> <span v-if="row.user_id"> <el-tag>{{ allUsers?.find(u => u.id === row.user_id)?.username }}</el-tag> </span>
+2 -2
View File
@@ -36,7 +36,7 @@
<el-card class="list-body" shadow="hover"> <el-card class="list-body" shadow="hover">
<!-- <el-tag type="danger" style="margin-bottom: 10px">不建议在此操作地址簿可能会造成数据不同步</el-tag>--> <!-- <el-tag type="danger" style="margin-bottom: 10px">不建议在此操作地址簿可能会造成数据不同步</el-tag>-->
<el-table :data="listRes.list" v-loading="listRes.loading" border> <el-table :data="listRes.list" v-loading="listRes.loading" border>
<el-table-column prop="id" label="id" align="center" width="200"> <el-table-column prop="id" label="ID" align="center" width="200">
<template #default="{row}"> <template #default="{row}">
<div> <div>
<PlatformIcons :name="platformList.find(p=>p.label===row.platform)?.icon" style="width: 20px;height: 20px;display: inline-block" color="var(--basicBlack)"/> <PlatformIcons :name="platformList.find(p=>p.label===row.platform)?.icon" style="width: 20px;height: 20px;display: inline-block" color="var(--basicBlack)"/>
@@ -104,7 +104,7 @@
<el-option v-for="c in collectionListRes.list" :key="c.id" :label="c.name" :value="c.id"></el-option> <el-option v-for="c in collectionListRes.list" :key="c.id" :label="c.name" :value="c.id"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="id" prop="id" required> <el-form-item label="ID" prop="id" required>
<el-input v-model="formData.id"></el-input> <el-input v-model="formData.id"></el-input>
</el-form-item> </el-form-item>
<el-form-item :label="T('Username')" prop="username"> <el-form-item :label="T('Username')" prop="username">
+1 -1
View File
@@ -15,7 +15,7 @@
</el-card> </el-card>
<el-card class="list-body" shadow="hover"> <el-card class="list-body" shadow="hover">
<el-table :data="listRes.list" v-loading="listRes.loading" border> <el-table :data="listRes.list" v-loading="listRes.loading" border>
<el-table-column prop="id" label="id" align="center" width="100"/> <el-table-column prop="id" label="ID" align="center" width="100"/>
<el-table-column :label="T('Peer')" prop="peer_id" align="center" width="120"/> <el-table-column :label="T('Peer')" prop="peer_id" align="center" width="120"/>
<el-table-column :label="T('FromPeer')" prop="from_peer" align="center" width="120"/> <el-table-column :label="T('FromPeer')" prop="from_peer" align="center" width="120"/>
<el-table-column :label="T('FromName')" prop="from_name" align="center" width="120"/> <el-table-column :label="T('FromName')" prop="from_name" align="center" width="120"/>
+1 -1
View File
@@ -15,7 +15,7 @@
</el-card> </el-card>
<el-card class="list-body" shadow="hover"> <el-card class="list-body" shadow="hover">
<el-table :data="listRes.list" v-loading="listRes.loading" border max-height="750"> <el-table :data="listRes.list" v-loading="listRes.loading" border max-height="750">
<el-table-column prop="id" label="id" align="center" width="100"/> <el-table-column prop="id" label="ID" align="center" width="100"/>
<el-table-column :label="T('Peer')" prop="peer_id" align="center" width="120"/> <el-table-column :label="T('Peer')" prop="peer_id" align="center" width="120"/>
<el-table-column :label="T('FromPeer')" prop="from_peer" align="center" width="120"/> <el-table-column :label="T('FromPeer')" prop="from_peer" align="center" width="120"/>
<el-table-column :label="T('FromName')" prop="from_name" align="center" width="120"/> <el-table-column :label="T('FromName')" prop="from_name" align="center" width="120"/>
+1 -1
View File
@@ -13,7 +13,7 @@
</el-card> </el-card>
<el-card class="list-body" shadow="hover"> <el-card class="list-body" shadow="hover">
<el-table :data="listRes.list" v-loading="listRes.loading" border> <el-table :data="listRes.list" v-loading="listRes.loading" border>
<el-table-column prop="id" label="id" align="center"></el-table-column> <el-table-column prop="id" label="ID" align="center"></el-table-column>
<el-table-column prop="name" :label="T('Name')" align="center"/> <el-table-column prop="name" :label="T('Name')" align="center"/>
<el-table-column prop="type" :label="T('Type')" align="center"> <el-table-column prop="type" :label="T('Type')" align="center">
<template #default="{row}"> <template #default="{row}">
+1 -1
View File
@@ -21,7 +21,7 @@
<el-card class="list-body" shadow="hover"> <el-card class="list-body" shadow="hover">
<!-- <el-tag type="danger" style="margin-bottom: 10px">不建议在此操作地址簿可能会造成数据不同步</el-tag>--> <!-- <el-tag type="danger" style="margin-bottom: 10px">不建议在此操作地址簿可能会造成数据不同步</el-tag>-->
<el-table :data="listRes.list" v-loading="listRes.loading" border> <el-table :data="listRes.list" v-loading="listRes.loading" border>
<el-table-column prop="id" label="id" align="center" width="100"/> <el-table-column prop="id" label="ID" align="center" width="100"/>
<el-table-column label="所属用户" align="center" width="120"> <el-table-column label="所属用户" align="center" width="120">
<template #default="{row}"> <template #default="{row}">
<span v-if="row.user_id"> <el-tag>{{ allUsers?.find(u => u.id === row.user_id)?.username }}</el-tag> </span> <span v-if="row.user_id"> <el-tag>{{ allUsers?.find(u => u.id === row.user_id)?.username }}</el-tag> </span>
+1 -1
View File
@@ -41,7 +41,7 @@ import { useUserStore } from '@/store/user'
import { ElMessage } from 'element-plus'; import { ElMessage } from 'element-plus';
import { T } from '@/utils/i18n'; import { T } from '@/utils/i18n';
import { useRoute, useRouter } from 'vue-router'; import { useRoute, useRouter } from 'vue-router';
import { loginOptions, oidcAuth, oidcQuery } from '@/api/login'; import { loginOptions } from '@/api/login';
import { getCode, removeCode } from '@/utils/auth' import { getCode, removeCode } from '@/utils/auth'
const oauthInfo = ref({}) const oauthInfo = ref({})
+1 -1
View File
@@ -11,7 +11,7 @@
<el-card class="list-body" shadow="hover"> <el-card class="list-body" shadow="hover">
<el-tag type="danger" effect="light" style="margin-bottom: 10px">{{ T('MyAddressBookTips') }}</el-tag> <el-tag type="danger" effect="light" style="margin-bottom: 10px">{{ T('MyAddressBookTips') }}</el-tag>
<el-table :data="list" v-loading="listRes.loading" border> <el-table :data="list" v-loading="listRes.loading" border>
<!-- <el-table-column prop="id" label="id" align="center"/>--> <!-- <el-table-column prop="id" label="ID" align="center"/>-->
<el-table-column prop="name" :label="T('Name')" align="center"/> <el-table-column prop="name" :label="T('Name')" align="center"/>
<el-table-column prop="created_at" :label="T('CreatedAt')" align="center"/> <el-table-column prop="created_at" :label="T('CreatedAt')" align="center"/>
<!-- <el-table-column prop="updated_at" label="更新时间" align="center"/>--> <!-- <el-table-column prop="updated_at" label="更新时间" align="center"/>-->
+2 -2
View File
@@ -26,7 +26,7 @@
<el-card class="list-body" shadow="hover"> <el-card class="list-body" shadow="hover">
<!-- <el-tag type="danger" style="margin-bottom: 10px">不建议在此操作地址簿可能会造成数据不同步</el-tag>--> <!-- <el-tag type="danger" style="margin-bottom: 10px">不建议在此操作地址簿可能会造成数据不同步</el-tag>-->
<el-table :data="listRes.list" v-loading="listRes.loading" border> <el-table :data="listRes.list" v-loading="listRes.loading" border>
<el-table-column prop="id" label="id" align="center" width="200"> <el-table-column prop="id" label="ID" align="center" width="200">
<template #default="{row}"> <template #default="{row}">
<div> <div>
<PlatformIcons :name="platformList.find(p=>p.label===row.platform)?.icon" style="width: 20px;height: 20px;display: inline-block" color="var(--basicBlack)"/> <PlatformIcons :name="platformList.find(p=>p.label===row.platform)?.icon" style="width: 20px;height: 20px;display: inline-block" color="var(--basicBlack)"/>
@@ -80,7 +80,7 @@
<el-option v-for="c in collectionListRes.list" :key="c.id" :label="c.name" :value="c.id"></el-option> <el-option v-for="c in collectionListRes.list" :key="c.id" :label="c.name" :value="c.id"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="id" prop="id" required> <el-form-item label="ID" prop="id" required>
<el-input v-model="formData.id"></el-input> <el-input v-model="formData.id"></el-input>
</el-form-item> </el-form-item>
<el-form-item :label="T('Username')" prop="username"> <el-form-item :label="T('Username')" prop="username">
+2 -2
View File
@@ -46,7 +46,7 @@
<el-card class="list-body" shadow="hover"> <el-card class="list-body" shadow="hover">
<!-- <el-tag type="danger" style="margin-bottom: 10px">不建议在此操作地址簿可能会造成数据不同步</el-tag>--> <!-- <el-tag type="danger" style="margin-bottom: 10px">不建议在此操作地址簿可能会造成数据不同步</el-tag>-->
<el-table :data="listRes.list" v-loading="listRes.loading" border> <el-table :data="listRes.list" v-loading="listRes.loading" border>
<el-table-column prop="id" label="id" align="center" width="200"> <el-table-column prop="id" label="ID" align="center" width="200">
<template #default="{row}"> <template #default="{row}">
<span>{{ row.id }} <el-icon @click="handleClipboard(row.id, $event)"><CopyDocument/></el-icon></span> <span>{{ row.id }} <el-icon @click="handleClipboard(row.id, $event)"><CopyDocument/></el-icon></span>
</template> </template>
@@ -90,7 +90,7 @@
<el-dialog v-model="formVisible" width="800" :title="!formData.row_id?T('Create') :T('Update') "> <el-dialog v-model="formVisible" width="800" :title="!formData.row_id?T('Create') :T('Update') ">
<el-form class="dialog-form" ref="form" :model="formData" label-width="120px"> <el-form class="dialog-form" ref="form" :model="formData" label-width="120px">
<el-form-item label="id" prop="id" required> <el-form-item label="ID" prop="id" required>
<el-input v-model="formData.id"></el-input> <el-input v-model="formData.id"></el-input>
</el-form-item> </el-form-item>
<el-form-item :label="T('Username')" prop="username"> <el-form-item :label="T('Username')" prop="username">
+2 -2
View File
@@ -16,7 +16,7 @@
</el-card> </el-card>
<el-card class="list-body" shadow="hover"> <el-card class="list-body" shadow="hover">
<el-table :data="listRes.list" v-loading="listRes.loading" border> <el-table :data="listRes.list" v-loading="listRes.loading" border>
<el-table-column prop="id" label="id" align="center"/> <el-table-column prop="id" label="ID" align="center"/>
<el-table-column prop="collection_id" :label="T('AddressBook')" align="center" width="150"> <el-table-column prop="collection_id" :label="T('AddressBook')" align="center" width="150">
<template #default="{row}"> <template #default="{row}">
<span v-if="row.collection_id === 0">{{ T('MyAddressBook') }}</span> <span v-if="row.collection_id === 0">{{ T('MyAddressBook') }}</span>
@@ -36,7 +36,7 @@
</el-table-column> </el-table-column>
<el-table-column prop="created_at" :label="T('CreatedAt')" align="center"/> <el-table-column prop="created_at" :label="T('CreatedAt')" align="center"/>
<el-table-column prop="updated_at" :label="T('UpdatedAt')" align="center"/> <el-table-column prop="updated_at" :label="T('UpdatedAt')" align="center"/>
<el-table-column label="操作" align="center"> <el-table-column :label="T('Actions')" align="center">
<template #default="{row}"> <template #default="{row}">
<el-button @click="toEdit(row)">{{ T('Edit') }}</el-button> <el-button @click="toEdit(row)">{{ T('Edit') }}</el-button>
<el-button type="danger" @click="del(row)">{{ T('Delete') }}</el-button> <el-button type="danger" @click="del(row)">{{ T('Delete') }}</el-button>
+4 -4
View File
@@ -10,8 +10,8 @@
</el-card> </el-card>
<el-card class="list-body" shadow="hover"> <el-card class="list-body" shadow="hover">
<el-table :data="listRes.list" v-loading="listRes.loading" border> <el-table :data="listRes.list" v-loading="listRes.loading" border>
<el-table-column prop="id" label="id" align="center"/> <el-table-column prop="id" label="ID" align="center"/>
<el-table-column prop="op" :label="T('Type')" align="center"/> <el-table-column prop="op" :label="T('Platform')" align="center"/>
<el-table-column prop="auto_register" :label="T('AutoRegister')" align="center"/> <el-table-column prop="auto_register" :label="T('AutoRegister')" align="center"/>
<el-table-column prop="created_at" :label="T('CreatedAt')" align="center"/> <el-table-column prop="created_at" :label="T('CreatedAt')" align="center"/>
<el-table-column prop="updated_at" :label="T('UpdatedAt')" align="center"/> <el-table-column prop="updated_at" :label="T('UpdatedAt')" align="center"/>
@@ -42,10 +42,10 @@
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
<el-form-item v-if="formData.op === 'oidc'" label="Issuer" prop="issuer"> <el-form-item v-if="formData.op === 'oidc'" label="Issuer" prop="issuer">
<el-input v-model="formData.issuer" placeholder="Check your IdP docs, without '/.well-known/openid-configuration'"></el-input> <el-input v-model="formData.issuer" :placeholder="`${T('Check your IdP docs, without')} '/.well-known/openid-configuration'`"></el-input>
</el-form-item> </el-form-item>
<el-form-item v-show="formData.op === 'oidc'" label="Scopes" prop="scopes"> <el-form-item v-show="formData.op === 'oidc'" label="Scopes" prop="scopes">
<el-input v-model="formData.scopes" placeholder= "Optional, default is 'openid,profile,email'"></el-input> <el-input v-model="formData.scopes" :placeholder="`${T('Optional, default is')} 'openid,profile,email'`" ></el-input>
</el-form-item> </el-form-item>
<el-form-item label="ClientId" prop="client_id"> <el-form-item label="ClientId" prop="client_id">
<el-input v-model="formData.client_id"></el-input> <el-input v-model="formData.client_id"></el-input>
+5 -5
View File
@@ -30,12 +30,12 @@
<el-card class="list-body" shadow="hover"> <el-card class="list-body" shadow="hover">
<el-table :data="listRes.list" v-loading="listRes.loading" border size="small" @selection-change="handleSelectionChange"> <el-table :data="listRes.list" v-loading="listRes.loading" border size="small" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center"/> <el-table-column type="selection" width="55" align="center"/>
<el-table-column prop="id" label="id" align="center" width="150"> <el-table-column prop="id" label="ID" align="center" width="150">
<template #default="{row}"> <template #default="{row}">
<span>{{ row.id }} <el-icon @click="handleClipboard(row.id, $event)"><CopyDocument/></el-icon></span> <span>{{ row.id }} <el-icon @click="handleClipboard(row.id, $event)"><CopyDocument/></el-icon></span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="cpu" label="cpu" align="center" width="100" show-overflow-tooltip/> <el-table-column prop="cpu" label="CPU" align="center" width="100" show-overflow-tooltip/>
<el-table-column prop="hostname" :label="T('Hostname')" align="center" width="120"/> <el-table-column prop="hostname" :label="T('Hostname')" align="center" width="120"/>
<el-table-column prop="memory" :label="T('Memory')" align="center" width="120"/> <el-table-column prop="memory" :label="T('Memory')" align="center" width="120"/>
<el-table-column prop="os" :label="T('Os')" align="center" width="120" show-overflow-tooltip/> <el-table-column prop="os" :label="T('Os')" align="center" width="120" show-overflow-tooltip/>
@@ -74,7 +74,7 @@
</el-card> </el-card>
<el-dialog v-model="formVisible" :title="!formData.row_id?T('Create'):T('Update')" width="800"> <el-dialog v-model="formVisible" :title="!formData.row_id?T('Create'):T('Update')" width="800">
<el-form class="dialog-form" ref="form" :model="formData" label-width="120px"> <el-form class="dialog-form" ref="form" :model="formData" label-width="120px">
<el-form-item label="id" prop="id" required> <el-form-item label="ID" prop="id" required>
<el-input v-model="formData.id"></el-input> <el-input v-model="formData.id"></el-input>
</el-form-item> </el-form-item>
<el-form-item :label="T('Username')" prop="username"> <el-form-item :label="T('Username')" prop="username">
@@ -83,7 +83,7 @@
<el-form-item :label="T('Hostname')" prop="hostname"> <el-form-item :label="T('Hostname')" prop="hostname">
<el-input v-model="formData.hostname"></el-input> <el-input v-model="formData.hostname"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="cpu" prop="cpu"> <el-form-item label="CPU" prop="cpu">
<el-input v-model="formData.cpu"></el-input> <el-input v-model="formData.cpu"></el-input>
</el-form-item> </el-form-item>
<el-form-item :label="T('Memory')" prop="memory"> <el-form-item :label="T('Memory')" prop="memory">
@@ -118,7 +118,7 @@
></el-option> ></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="id" prop="id" required> <el-form-item label="ID" prop="id" required>
<el-input v-model="ABFormData.id"></el-input> <el-input v-model="ABFormData.id"></el-input>
</el-form-item> </el-form-item>
<el-form-item :label="T('Username')" prop="username"> <el-form-item :label="T('Username')" prop="username">
+1 -1
View File
@@ -26,7 +26,7 @@
</el-card> </el-card>
<el-card class="list-body" shadow="hover"> <el-card class="list-body" shadow="hover">
<el-table :data="listRes.list" v-loading="listRes.loading" border> <el-table :data="listRes.list" v-loading="listRes.loading" border>
<el-table-column prop="id" label="id" align="center"/> <el-table-column prop="id" label="ID" align="center"/>
<el-table-column :label="T('Owner')" align="center"> <el-table-column :label="T('Owner')" align="center">
<template #default="{row}"> <template #default="{row}">
<span v-if="row.user_id"> <el-tag>{{ allUsers?.find(u => u.id === row.user_id)?.username }}</el-tag> </span> <span v-if="row.user_id"> <el-tag>{{ allUsers?.find(u => u.id === row.user_id)?.username }}</el-tag> </span>
+1 -1
View File
@@ -13,7 +13,7 @@
</el-card> </el-card>
<el-card class="list-body" shadow="hover"> <el-card class="list-body" shadow="hover">
<el-table :data="listRes.list" v-loading="listRes.loading" border> <el-table :data="listRes.list" v-loading="listRes.loading" border>
<el-table-column prop="id" label="id" align="center"></el-table-column> <el-table-column prop="id" label="ID" align="center"></el-table-column>
<el-table-column prop="username" :label="T('Username')" align="center"/> <el-table-column prop="username" :label="T('Username')" align="center"/>
<el-table-column prop="nickname" :label="T('Nickname')" align="center"/> <el-table-column prop="nickname" :label="T('Nickname')" align="center"/>
<el-table-column :label="T('Group')" align="center"> <el-table-column :label="T('Group')" align="center">