mirror of
https://github.com/continew-org/continew-admin-ui.git
synced 2025-11-11 02:57:09 +08:00
chore(login): 调整租户登录逻辑
This commit is contained in:
@@ -8,8 +8,8 @@
|
||||
size="large"
|
||||
@submit="handleLogin"
|
||||
>
|
||||
<a-form-item v-if="tenantStore.tenantEnabled && !tenantStore.tenantCode" field="tenantCode" hide-label>
|
||||
<a-input v-model="tenantCodeInput" placeholder="请输入租户编码" allow-clear />
|
||||
<a-form-item v-if="tenantStore.needInputTenantId" field="tenantCode" hide-label>
|
||||
<a-input v-model="form.tenantCode" placeholder="请输入租户编码" allow-clear />
|
||||
</a-form-item>
|
||||
<a-form-item field="username" hide-label>
|
||||
<a-input v-model="form.username" placeholder="请输入用户名" allow-clear />
|
||||
@@ -44,14 +44,14 @@
|
||||
import { type FormInstance, Message } from '@arco-design/web-vue'
|
||||
import { useStorage } from '@vueuse/core'
|
||||
import { getImageCaptcha } from '@/apis/common'
|
||||
import { useTabsStore, useTenantStore, useUserStore } from '@/stores'
|
||||
import { useTabsStore, useUserStore } from '@/stores'
|
||||
import { encryptByRsa } from '@/utils/encrypt'
|
||||
import { useTenantStore } from '@/stores/modules/tenant'
|
||||
|
||||
const tenantStore = useTenantStore()
|
||||
|
||||
const loginConfig = useStorage('login-config', {
|
||||
rememberMe: true,
|
||||
tenantCode: tenantStore.tenantCode,
|
||||
username: 'admin', // 演示默认值
|
||||
password: 'admin123', // 演示默认值
|
||||
// username: debug ? 'admin' : '', // 演示默认值
|
||||
@@ -63,21 +63,22 @@ const isCaptchaEnabled = ref(true)
|
||||
const captchaImgBase64 = ref()
|
||||
|
||||
const formRef = ref<FormInstance>()
|
||||
const tenantCodeInput = ref('') // 用户手动输入的租户编码
|
||||
const form = reactive({
|
||||
username: loginConfig.value.username,
|
||||
password: loginConfig.value.password,
|
||||
captcha: '',
|
||||
uuid: '',
|
||||
expired: false,
|
||||
tenantCode: '', // 新增
|
||||
})
|
||||
// 校验规则部分
|
||||
const rules: FormInstance['rules'] = {
|
||||
username: [{ required: true, message: '请输入用户名' }],
|
||||
password: [{ required: true, message: '请输入密码' }],
|
||||
captcha: [{ required: isCaptchaEnabled.value, message: '请输入验证码' }],
|
||||
tenantCode: [
|
||||
{
|
||||
required: tenantStore.tenantEnabled && !tenantStore.tenantCode,
|
||||
required: tenantStore.needInputTenantId,
|
||||
message: '请输入租户编码',
|
||||
},
|
||||
],
|
||||
@@ -128,10 +129,9 @@ const handleLogin = async () => {
|
||||
if (isInvalid) return
|
||||
loading.value = true
|
||||
|
||||
// 计算最终要传递的租户编码
|
||||
let finalTenantCode = ''
|
||||
if (tenantStore.tenantEnabled) {
|
||||
finalTenantCode = tenantStore.tenantCode || tenantCodeInput.value
|
||||
let tenantCode
|
||||
if (tenantStore.needInputTenantId) {
|
||||
tenantCode = form.tenantCode
|
||||
}
|
||||
|
||||
await userStore.accountLogin({
|
||||
@@ -139,11 +139,10 @@ const handleLogin = async () => {
|
||||
password: encryptByRsa(form.password) || '',
|
||||
captcha: form.captcha,
|
||||
uuid: form.uuid,
|
||||
}, finalTenantCode)
|
||||
}, tenantCode)
|
||||
tabsStore.reset()
|
||||
const { redirect, ...othersQuery } = router.currentRoute.value.query
|
||||
const { rememberMe } = loginConfig.value
|
||||
loginConfig.value.tenantCode = rememberMe ? finalTenantCode : ''
|
||||
loginConfig.value.username = rememberMe ? form.username : ''
|
||||
|
||||
// 如果有重定向参数,解码并直接跳转到完整路径
|
||||
|
||||
@@ -96,14 +96,15 @@ import AccountLogin from './components/account/index.vue'
|
||||
import PhoneLogin from './components/phone/index.vue'
|
||||
import EmailLogin from './components/email/index.vue'
|
||||
import { socialAuth } from '@/apis/auth'
|
||||
import { useAppStore, useTenantStore } from '@/stores'
|
||||
import { useAppStore } from '@/stores'
|
||||
import { useTenantStore } from '@/stores/modules/tenant'
|
||||
import { useDevice } from '@/hooks'
|
||||
import { getTenantCodeByDomain, getTenantStatus } from '@/apis'
|
||||
import { getTenantIdByDomain, getTenantStatus } from '@/apis'
|
||||
|
||||
defineOptions({ name: 'Login' })
|
||||
const appStore = useAppStore()
|
||||
const tenantStore = useTenantStore()
|
||||
const { isDesktop } = useDevice()
|
||||
const appStore = useAppStore()
|
||||
const title = computed(() => appStore.getTitle())
|
||||
const logo = computed(() => appStore.getLogo())
|
||||
|
||||
@@ -128,8 +129,8 @@ const onGetTenant = async () => {
|
||||
// 开启租户 根据地址(域名)查询租户code
|
||||
if (data) {
|
||||
const domain = window.location.hostname
|
||||
const { data } = await getTenantCodeByDomain(domain)
|
||||
tenantStore.setTenantCode(data)
|
||||
const { data: tenantId } = await getTenantIdByDomain(domain)
|
||||
tenantStore.setTenantId(tenantId)
|
||||
}
|
||||
}
|
||||
onMounted(() => {
|
||||
|
||||
Reference in New Issue
Block a user