diff --git a/package.json b/package.json index 5ab61828..6119b99d 100644 --- a/package.json +++ b/package.json @@ -41,7 +41,7 @@ "@formkit/utils": "^1.0.0-beta.12", "@formkit/validation": "1.0.0-beta.12", "@formkit/vue": "^1.0.0-beta.12", - "@halo-dev/api-client": "0.0.64", + "@halo-dev/api-client": "0.0.65", "@halo-dev/components": "workspace:*", "@halo-dev/console-shared": "workspace:*", "@halo-dev/richtext-editor": "^0.0.0-alpha.17", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 69c90784..f6e167f5 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -13,7 +13,7 @@ importers: '@formkit/utils': ^1.0.0-beta.12 '@formkit/validation': 1.0.0-beta.12 '@formkit/vue': ^1.0.0-beta.12 - '@halo-dev/api-client': 0.0.64 + '@halo-dev/api-client': 0.0.65 '@halo-dev/components': workspace:* '@halo-dev/console-shared': workspace:* '@halo-dev/richtext-editor': ^0.0.0-alpha.17 @@ -108,7 +108,7 @@ importers: '@formkit/utils': 1.0.0-beta.12-e579559 '@formkit/validation': 1.0.0-beta.12 '@formkit/vue': 1.0.0-beta.12-e579559_ior6jr3fpijijuwpr34w2i25va - '@halo-dev/api-client': 0.0.64 + '@halo-dev/api-client': 0.0.65 '@halo-dev/components': link:packages/components '@halo-dev/console-shared': link:packages/shared '@halo-dev/richtext-editor': 0.0.0-alpha.17_vue@3.2.45 @@ -1992,8 +1992,8 @@ packages: - windicss dev: false - /@halo-dev/api-client/0.0.64: - resolution: {integrity: sha512-zzhTdRi4p7nRsWG7u85YCkoHZLHsbpuWeBCwLl5FSXxY8ruKuiOo0FypkS7Ll7505XASk4MJL6rsyeX+l7rLmQ==} + /@halo-dev/api-client/0.0.65: + resolution: {integrity: sha512-00x5cDnXhjIHlTJ9CB9QDxyiWhJv48DWzKpKh/E1BvIB/umAqAG/S2TATB6z6GvOalOLXMfnQv6IfCb76wgl1Q==} dev: false /@halo-dev/richtext-editor/0.0.0-alpha.17_vue@3.2.45: diff --git a/src/layouts/BasicLayout.vue b/src/layouts/BasicLayout.vue index 45a204c5..cd9cf239 100644 --- a/src/layouts/BasicLayout.vue +++ b/src/layouts/BasicLayout.vue @@ -241,7 +241,7 @@ onMounted(generateMenus); type="secondary" :route="{ name: 'UserDetail', - params: { name: userStore.currentUser?.metadata.name }, + params: { name: '-' }, }" > 个人资料 diff --git a/src/modules/dashboard/widgets/QuickLinkWidget.vue b/src/modules/dashboard/widgets/QuickLinkWidget.vue index d60df376..e529053c 100644 --- a/src/modules/dashboard/widgets/QuickLinkWidget.vue +++ b/src/modules/dashboard/widgets/QuickLinkWidget.vue @@ -23,8 +23,6 @@ interface Action { permissions?: string[]; } -const userStore = useUserStore(); - const router = useRouter(); const themePreviewVisible = ref(false); @@ -36,7 +34,7 @@ const actions: Action[] = [ action: () => { router.push({ name: "UserDetail", - params: { name: userStore.currentUser?.metadata.name }, + params: { name: "-" }, }); }, }, diff --git a/src/modules/system/users/components/UserEditingModal.vue b/src/modules/system/users/components/UserEditingModal.vue index 4794b27a..0ad431d0 100644 --- a/src/modules/system/users/components/UserEditingModal.vue +++ b/src/modules/system/users/components/UserEditingModal.vue @@ -15,6 +15,9 @@ import { reset } from "@formkit/core"; // hooks import { setFocus } from "@/formkit/utils/focus"; import AnnotationsForm from "@/components/form/AnnotationsForm.vue"; +import { useUserStore } from "@/stores/user"; + +const userStore = useUserStore(); const props = withDefaults( defineProps<{ @@ -115,10 +118,16 @@ const handleCreateUser = async () => { try { saving.value = true; if (isUpdateMode.value) { - await apiClient.extension.user.updatev1alpha1User({ - name: formState.value.metadata.name, - user: formState.value, - }); + if (props.user?.metadata.name === userStore.currentUser?.metadata.name) { + await apiClient.user.updateCurrentUser({ + user: formState.value, + }); + } else { + await apiClient.extension.user.updatev1alpha1User({ + name: formState.value.metadata.name, + user: formState.value, + }); + } } else { await apiClient.extension.user.createv1alpha1User({ user: formState.value, diff --git a/src/modules/system/users/layouts/UserProfileLayout.vue b/src/modules/system/users/layouts/UserProfileLayout.vue index cef3be90..4c463680 100644 --- a/src/modules/system/users/layouts/UserProfileLayout.vue +++ b/src/modules/system/users/layouts/UserProfileLayout.vue @@ -8,11 +8,16 @@ import { VTabbar, VAvatar, } from "@halo-dev/components"; -import { onMounted, provide, ref, watch } from "vue"; +import { computed, onMounted, provide, ref, watch } from "vue"; import { useRoute, useRouter } from "vue-router"; import type { User } from "@halo-dev/api-client"; import UserEditingModal from "../components/UserEditingModal.vue"; import UserPasswordChangeModal from "../components/UserPasswordChangeModal.vue"; +import { usePermission } from "@/utils/permission"; +import { useUserStore } from "@/stores/user"; + +const { currentUserHasPermission } = usePermission(); +const userStore = useUserStore(); const tabs = [ { @@ -35,15 +40,27 @@ const { params } = useRoute(); const handleFetchUser = async () => { try { - const { data } = await apiClient.extension.user.getv1alpha1User({ - name: params.name as string, - }); - user.value = data; + if (params.name === "-") { + const { data } = await apiClient.user.getCurrentUserDetail(); + user.value = data; + } else { + const { data } = await apiClient.extension.user.getv1alpha1User({ + name: params.name as string, + }); + user.value = data; + } } catch (e) { console.error(e); } }; +const isCurrentUser = computed(() => { + if (params.name === "-") { + return true; + } + return user.value?.metadata.name === userStore.currentUser?.metadata.name; +}); + provide("user", user); const activeTab = ref(); @@ -112,6 +129,10 @@ const handleTabChange = (id: string) => {