【新增】 新增中心服务器当用户登录的时候,使用管理员密码进行强制登出

This commit is contained in:
dlaren
2025-08-12 23:44:01 +08:00
parent 793986606d
commit f7819fb294
2 changed files with 75 additions and 1 deletions

View File

@@ -36,6 +36,11 @@ export const loginOut = () => {
return request.post({ url: '/system/auth/logout' })
}
// 强制登出
export const refreshLogout = (data: any) => {
return request.post({ url: '/system/auth/refreshLogout', data })
}
// 获取用户权限信息
export const getInfo = () => {
return request.get({ url: '/system/auth/get-permission-info' })

View File

@@ -149,6 +149,39 @@
<!-- </el-col>-->
</el-row>
</el-form>
<el-dialog
v-model="isTrueLoginForAdmin"
title="提示"
width="500"
:before-close="handleClose"
>
<span>是否使用管理员密码强制退出该用户</span>
<template #footer>
<div class="dialog-footer">
<el-button @click="isTrueLoginForAdmin = false">取消</el-button>
<el-button type="primary" @click="openLoginForAdminPassWord()">
确定
</el-button>
</div>
</template>
</el-dialog>
<el-dialog
v-model="isTrueLoginForAdminPassWord"
title="提示"
width="500"
:before-close="handleClose"
>
<span>管理员密码</span>
<el-input v-model="adminPassword" style="width: 240px" placeholder="请输入管理员密码" />
<template #footer>
<div class="dialog-footer">
<el-button @click="isTrueLoginForAdminPassWord = false">取消</el-button>
<el-button type="primary" @click="loginOutAdminPassword()">
确定
</el-button>
</div>
</template>
</el-dialog>
</template>
<script lang="ts" setup>
import { ElLoading } from 'element-plus'
@@ -164,6 +197,11 @@ import { LoginStateEnum, useFormValid, useLoginState } from './useLogin'
defineOptions({ name: 'LoginForm' })
const isTrueLoginForAdmin = ref(false)
const isTrueLoginForAdminPassWord = ref(false)
const adminPassword = ref('')
const { t } = useI18n()
const message = useMessage()
const iconHouse = useIcon({ icon: 'ep:house' })
@@ -180,7 +218,15 @@ const verify = ref()
const captchaType = ref('blockPuzzle') // blockPuzzle 滑块 clickWord 点击文字
const getShow = computed(() => unref(getLoginState) === LoginStateEnum.LOGIN)
const handleClose = (done: () => void) => {
ElMessageBox.confirm('检测您鼠标没有正确点击,确定要关闭?')
.then(() => {
done()
})
.catch(() => {
// catch error
})
}
const LoginRules = {
tenantName: [required],
username: [required],
@@ -225,6 +271,27 @@ const getTenantId = async () => {
authUtil.setTenantId(res)
}
}
// 使用管理员密码登出登录的账号
const openLoginForAdminPassWord = () => {
isTrueLoginForAdmin.value = false
isTrueLoginForAdminPassWord.value = true
}
const loginOutAdminPassword = async () => {
const data = {
loginOutPassword: adminPassword.value,
username: loginData.loginForm.username
}
LoginApi.refreshLogout(data).then((res) => {
if (res) {
message.success(res)
isTrueLoginForAdmin.value = false
isTrueLoginForAdminPassWord.value = false
}
}).catch((err) => {
message.error(err.msg)
})
}
// 记住我
const getLoginFormCache = () => {
const loginForm = authUtil.getLoginForm()
@@ -285,6 +352,8 @@ const handleLogin = async (params: any) => {
await push({ path: redirect.value || permissionStore.addRouters[0].path })
}
} finally {
// 弹出输入管理员密码并重新进行登录
isTrueLoginForAdmin.value = true
loginLoading.value = false
loading.value.close()
}