Files
rustdesk-api-web/src/views/my/info.vue
T
2024-12-25 19:59:41 +08:00

100 lines
3.2 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<template>
<div>
<el-card :title="T('Userinfo')" shadow="hover">
<el-form class="info-form" ref="form" label-width="120px" label-suffix="">
<el-form-item :label="T('Username')">
<div>{{ userStore.username }}</div>
</el-form-item>
<el-form-item :label="T('Email')">
<div>{{ userStore.email }}</div>
</el-form-item>
<el-form-item :label="T('Password')" prop="password">
<el-button type="danger" @click="showChangePwd">{{ T('ChangePassword') }}</el-button>
</el-form-item>
<el-form-item label="OIDC">
<el-table :data="oidcData" border fit>
<el-table-column :label="T('IdP')" prop="op" align="center"></el-table-column>
<el-table-column :label="T('Status')" prop="status" align="center">
<template #default="{ row }">
<el-tag v-if="row.status === 1" type="success">{{ T('HasBind') }}</el-tag>
<el-tag v-else type="danger">{{ T('NoBind') }}</el-tag>
</template>
</el-table-column>
<el-table-column :label="T('Actions')" align="center" width="200">
<template #default="{ row }">
<el-button v-if="row.status === 1" type="danger" size="small" @click="toUnBind(row)">{{ T('UnBind') }}</el-button>
<el-button v-else type="success" size="small" @click="toBind(row)">{{ T('ToBind') }}</el-button>
</template>
</el-table-column>
</el-table>
</el-form-item>
</el-form>
</el-card>
<el-card shadow="hover" style="margin-top: 20px">
<div v-html="html"></div>
</el-card>
<changePwdDialog v-model:visible="changePwdVisible"></changePwdDialog>
</div>
</template>
<script setup>
import changePwdDialog from '@/components/changePwdDialog.vue'
import { computed, ref } from 'vue'
import { useUserStore } from '@/store/user'
import { useAppStore } from '@/store/app'
import { bind, unbind } from '@/api/oauth'
import { myOauth } from '@/api/user'
import { ElMessageBox } from 'element-plus'
import { T } from '@/utils/i18n'
import { marked } from 'marked'
const appStore = useAppStore()
const userStore = useUserStore()
const changePwdVisible = ref(false)
const showChangePwd = () => {
changePwdVisible.value = true
}
const oidcData = ref([])
const getMyOauth = async () => {
const res = await myOauth().catch(_ => false)
if (res) {
oidcData.value = res.data
}
}
getMyOauth()
const toBind = async (row) => {
const res = await bind({ op: row.op }).catch(_ => false)
if (res) {
const { code, url } = res.data
window.open(url)
}
}
const toUnBind = async (row) => {
const cf = await ElMessageBox.confirm(T('Confirm?', { param: T('UnBind') }), {
confirmButtonText: T('Confirm'),
cancelButtonText: T('Cancel'),
type: 'warning',
}).catch(_ => false)
if (!cf) {
return false
}
const res = await unbind({ op: row.op }).catch(_ => false)
if (res) {
getMyOauth()
}
}
const html = computed(_ => marked(appStore.setting.hello))
</script>
<style scoped lang="scss">
.info-form {
width: 600px;
margin: 0 auto;
}
</style>