多租户:登录界面,根据 host 域名获取对应的租户编号
This commit is contained in:
parent
c0d5c76a06
commit
85ee558bef
@ -27,6 +27,11 @@ export const getTenantIdByName = (name: string) => {
|
|||||||
return request.get({ url: '/system/tenant/get-id-by-name?name=' + name })
|
return request.get({ url: '/system/tenant/get-id-by-name?name=' + name })
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 使用租户域名,获得租户信息
|
||||||
|
export const getTenantByWebsite = (website: string) => {
|
||||||
|
return request.get({ url: '/system/tenant/get-by-website?website=' + website })
|
||||||
|
}
|
||||||
|
|
||||||
// 登出
|
// 登出
|
||||||
export const loginOut = () => {
|
export const loginOut = () => {
|
||||||
return request.post({ url: '/system/auth/logout' })
|
return request.post({ url: '/system/auth/logout' })
|
||||||
|
@ -193,10 +193,10 @@ const loginData = reactive({
|
|||||||
})
|
})
|
||||||
|
|
||||||
const socialList = [
|
const socialList = [
|
||||||
{ icon: 'ant-design:github-filled', type: 0 },
|
|
||||||
{ icon: 'ant-design:wechat-filled', type: 30 },
|
{ icon: 'ant-design:wechat-filled', type: 30 },
|
||||||
{ icon: 'ant-design:alipay-circle-filled', type: 0 },
|
{ icon: 'ant-design:dingtalk-circle-filled', type: 20 },
|
||||||
{ icon: 'ant-design:dingtalk-circle-filled', type: 20 }
|
{ icon: 'ant-design:github-filled', type: 0 },
|
||||||
|
{ icon: 'ant-design:alipay-circle-filled', type: 0 }
|
||||||
]
|
]
|
||||||
|
|
||||||
// 获取验证码
|
// 获取验证码
|
||||||
@ -210,7 +210,7 @@ const getCode = async () => {
|
|||||||
verify.value.show()
|
verify.value.show()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//获取租户ID
|
// 获取租户 ID
|
||||||
const getTenantId = async () => {
|
const getTenantId = async () => {
|
||||||
if (loginData.tenantEnable === 'true') {
|
if (loginData.tenantEnable === 'true') {
|
||||||
const res = await LoginApi.getTenantIdByName(loginData.loginForm.tenantName)
|
const res = await LoginApi.getTenantIdByName(loginData.loginForm.tenantName)
|
||||||
@ -230,6 +230,15 @@ const getCookie = () => {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// 根据域名,获得租户信息
|
||||||
|
const getTenantByWebsite = async () => {
|
||||||
|
const website = location.host
|
||||||
|
const res = await LoginApi.getTenantByWebsite(website)
|
||||||
|
if (res) {
|
||||||
|
loginData.loginForm.tenantName = res.name
|
||||||
|
authUtil.setTenantId(res.id)
|
||||||
|
}
|
||||||
|
}
|
||||||
const loading = ref() // ElLoading.service 返回的实例
|
const loading = ref() // ElLoading.service 返回的实例
|
||||||
// 登录
|
// 登录
|
||||||
const handleLogin = async (params) => {
|
const handleLogin = async (params) => {
|
||||||
@ -278,11 +287,16 @@ const doSocialLogin = async (type: number) => {
|
|||||||
} else {
|
} else {
|
||||||
loginLoading.value = true
|
loginLoading.value = true
|
||||||
if (loginData.tenantEnable === 'true') {
|
if (loginData.tenantEnable === 'true') {
|
||||||
|
// 尝试先通过 tenantName 获取租户
|
||||||
|
await getTenantId()
|
||||||
|
// 如果获取不到,则需要弹出提示,进行处理
|
||||||
|
if (!authUtil.getTenantId()) {
|
||||||
await message.prompt('请输入租户名称', t('common.reminder')).then(async ({ value }) => {
|
await message.prompt('请输入租户名称', t('common.reminder')).then(async ({ value }) => {
|
||||||
const res = await LoginApi.getTenantIdByName(value)
|
const res = await LoginApi.getTenantIdByName(value)
|
||||||
authUtil.setTenantId(res)
|
authUtil.setTenantId(res)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
}
|
||||||
// 计算 redirectUri
|
// 计算 redirectUri
|
||||||
// tricky: type、redirect需要先encode一次,否则钉钉回调会丢失。
|
// tricky: type、redirect需要先encode一次,否则钉钉回调会丢失。
|
||||||
// 配合 Login/SocialLogin.vue#getUrlValue() 使用
|
// 配合 Login/SocialLogin.vue#getUrlValue() 使用
|
||||||
@ -307,6 +321,7 @@ watch(
|
|||||||
)
|
)
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
getCookie()
|
getCookie()
|
||||||
|
getTenantByWebsite()
|
||||||
})
|
})
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user