diff --git a/dolphinscheduler-ui-next/src/service/service.ts b/dolphinscheduler-ui-next/src/service/service.ts index ed7dfbcd642c0565f1e2b0c46c4b6b4d4be0fec9..953950f0a0caca5ecc3743a72ae5be1f5ab93159 100644 --- a/dolphinscheduler-ui-next/src/service/service.ts +++ b/dolphinscheduler-ui-next/src/service/service.ts @@ -15,7 +15,12 @@ * limitations under the License. */ -import axios, { AxiosRequestConfig, AxiosResponse, AxiosError } from 'axios' +import axios, { + AxiosRequestConfig, + AxiosResponse, + AxiosError, + AxiosRequestHeaders, +} from 'axios' import qs from 'qs' import { useUserStore } from '@/store/user/user' @@ -30,9 +35,6 @@ const baseRequestConfig: AxiosRequestConfig = { paramsSerializer: (params) => { return qs.stringify(params, { arrayFormat: 'repeat' }) }, - headers: { - sessionId: userStore.getSessionId, - }, } const service = axios.create(baseRequestConfig) @@ -43,6 +45,9 @@ const err = (err: AxiosError): Promise => { service.interceptors.request.use((config: AxiosRequestConfig) => { console.log('config', config) + + config.headers && (config.headers.sessionId = userStore.getSessionId) + return config }, err) diff --git a/dolphinscheduler-ui-next/src/views/login/use-login.ts b/dolphinscheduler-ui-next/src/views/login/use-login.ts index 8fd8231636bc0e2840bfe1314a01f2253f220f0d..e9fd243d8abcbefb66bea9746f4d2ca34aa3b645 100644 --- a/dolphinscheduler-ui-next/src/views/login/use-login.ts +++ b/dolphinscheduler-ui-next/src/views/login/use-login.ts @@ -31,9 +31,9 @@ export function useLogin(state: any) { state.loginFormRef.validate(async (valid: any) => { if (!valid) { const loginRes: SessionIdRes = await login({ ...state.loginForm }) - const userInfoRes: UserInfoRes = await getUserInfo() - await userStore.setSessionId(loginRes.sessionId) + + const userInfoRes: UserInfoRes = await getUserInfo() await userStore.setUserInfo(userInfoRes) router.push({ path: 'home' }) diff --git a/dolphinscheduler-ui-next/src/views/password/index.tsx b/dolphinscheduler-ui-next/src/views/password/index.tsx index 97c213a1009b540f16925223ad8e7f1b8d9ae3c2..80fa6c4ef5dcfa8e7388d7d09838fff3c2f080ba 100644 --- a/dolphinscheduler-ui-next/src/views/password/index.tsx +++ b/dolphinscheduler-ui-next/src/views/password/index.tsx @@ -18,51 +18,53 @@ import { defineComponent, toRefs } from 'vue' import { NForm, NFormItem, NButton, NInput } from 'naive-ui' import { useForm } from './use-form' +import { useUpdate } from './use-update' import Card from '@/components/card' const password = defineComponent({ name: 'password', setup() { const { state, t } = useForm() + const { handleUpdate } = useUpdate(state) - return { ...toRefs(state), t } + return { ...toRefs(state), t, handleUpdate } }, render() { - const { rules, passwordForm, t, handlePasswordInput } = this + const { t } = this return ( {{ default: () => (
- + {t('password.submit')} diff --git a/dolphinscheduler-ui-next/src/views/password/use-form.ts b/dolphinscheduler-ui-next/src/views/password/use-form.ts index 87419b554bed55ab3fc2724b48c738a20633c2cc..7edad7b7f92c0a95bc6d6a971d66c0ffef49edcd 100644 --- a/dolphinscheduler-ui-next/src/views/password/use-form.ts +++ b/dolphinscheduler-ui-next/src/views/password/use-form.ts @@ -24,49 +24,28 @@ export function useForm() { const state = reactive({ passwordFormRef: ref(), - confirmPasswordItemFormRef: ref(), passwordForm: { password: '', confirmPassword: '', }, rules: { password: { - required: true, - message: t('password.password_tips'), - }, - confirmPassword: [ - { - required: true, - message: t('password.confirm_password_tips'), - }, - { - trigger: ['input'], - message: t('password.two_password_entries_are_inconsistent'), - validator: (rule: any, value: string): any => { - return ( - state.passwordForm.password && - state.passwordForm.password.startsWith(value) && - state.passwordForm.password.length >= value.length - ) - }, + trigger: ['input', 'blur'], + validator() { + if (state.passwordForm.password === '') { + return new Error(t('password.password_tips')) + } }, - { - trigger: ['blur', 'password-input'], - message: t('password.two_password_entries_are_inconsistent'), - validator: (rule: any, value: string): any => { - return state.passwordForm.password === value - }, + }, + confirmPassword: { + trigger: ['input', 'blur'], + validator() { + if (state.passwordForm.confirmPassword === '') { + return new Error(t('password.confirm_password_tips')) + } }, - ], + }, } as FormRules, - - handlePasswordInput: () => { - if (state.passwordForm.confirmPassword) { - state.confirmPasswordItemFormRef.value.validate({ - trigger: 'password-input', - }) - } - }, }) return { state, t } diff --git a/dolphinscheduler-ui-next/src/views/password/use-update.ts b/dolphinscheduler-ui-next/src/views/password/use-update.ts new file mode 100644 index 0000000000000000000000000000000000000000..5582463205ac6227a10096f8fbf9cf7d79003799 --- /dev/null +++ b/dolphinscheduler-ui-next/src/views/password/use-update.ts @@ -0,0 +1,52 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { useRouter } from 'vue-router' +import { updateUser } from '@/service/modules/users' +import { useUserStore } from '@/store/user/user' +import type { Router } from 'vue-router' +import type { UserInfoRes } from '@/service/modules/users/types' + +export function useUpdate(state: any) { + const router: Router = useRouter() + const userStore = useUserStore() + const userInfo = userStore.userInfo as UserInfoRes + + const handleUpdate = () => { + state.passwordFormRef.validate(async (valid: any) => { + if (!valid) { + await updateUser({ + userPassword: state.passwordForm.password, + id: userInfo.id, + userName: userInfo.userName, + tenantId: userInfo.tenantId, + email: userInfo.email, + phone: userInfo.phone, + state: userInfo.state, + }) + + await userStore.setSessionId('') + await userStore.setUserInfo({}) + await router.push({ path: 'login' }) + } + }) + } + + return { + handleUpdate, + } +}