修复三个问题:1.钉钉登录时保留管理员角色 2.用户管理已支持设置管理员角色 3.网站设置添加注册功能开关
This commit is contained in:
parent
e1989510de
commit
cfa38c9b36
@ -508,8 +508,17 @@ public class UserService {
|
||||
if (primaryDept != null) {
|
||||
user.setDeptId(primaryDeptId);
|
||||
user.setDeptName(primaryDept.getDeptName());
|
||||
// 根据主部门类型设置角色
|
||||
user.setRoleIds("receiving".equals(primaryDept.getDeptType()) ? "5" : "6");
|
||||
// 根据主部门类型设置角色(但如果用户已经是管理员,保留管理员角色)
|
||||
String currentRoleIds = user.getRoleIds();
|
||||
boolean isAdmin = currentRoleIds != null &&
|
||||
(currentRoleIds.contains("1") || currentRoleIds.contains("2"));
|
||||
if (!isAdmin) {
|
||||
// 只有非管理员用户才根据部门类型设置角色
|
||||
user.setRoleIds("receiving".equals(primaryDept.getDeptType()) ? "5" : "6");
|
||||
} else {
|
||||
log.info("用户已是管理员,保留管理员角色: userId={}, roleIds={}",
|
||||
user.getId(), currentRoleIds);
|
||||
}
|
||||
user.setStatus(1); // 启用用户
|
||||
needUpdate = true;
|
||||
log.info("同步用户多个部门: userId={}, 部门数量={}, 主部门={}",
|
||||
@ -530,7 +539,17 @@ public class UserService {
|
||||
setUserDepartments(user.getId(), List.of(defaultDept.getId()), defaultDept.getId());
|
||||
user.setDeptId(defaultDept.getId());
|
||||
user.setDeptName(defaultDept.getDeptName());
|
||||
user.setRoleIds("receiving".equals(defaultDept.getDeptType()) ? "5" : "6");
|
||||
// 根据部门类型设置角色(但如果用户已经是管理员,保留管理员角色)
|
||||
String currentRoleIds = user.getRoleIds();
|
||||
boolean isAdmin = currentRoleIds != null &&
|
||||
(currentRoleIds.contains("1") || currentRoleIds.contains("2"));
|
||||
if (!isAdmin) {
|
||||
// 只有非管理员用户才根据部门类型设置角色
|
||||
user.setRoleIds("receiving".equals(defaultDept.getDeptType()) ? "5" : "6");
|
||||
} else {
|
||||
log.info("用户已是管理员,保留管理员角色: userId={}, roleIds={}",
|
||||
user.getId(), currentRoleIds);
|
||||
}
|
||||
user.setStatus(1); // 启用用户
|
||||
needUpdate = true;
|
||||
log.warn("已有用户无法匹配,使用默认部门: userId={}, deptId={}, deptName={}, 钉钉部门: {}",
|
||||
|
||||
@ -74,7 +74,7 @@
|
||||
</a-button>
|
||||
</a-form-item>
|
||||
|
||||
<div class="auth-switch">
|
||||
<div v-if="registerEnabled" class="auth-switch">
|
||||
<span class="switch-text">还没有账号?</span>
|
||||
<button type="button" class="switch-link" @click="activeTab = 'register'">
|
||||
注册账号
|
||||
@ -226,12 +226,14 @@ import * as departmentApi from '@/api/department'
|
||||
import { isDingTalkFeatureEnabled } from '@/api/dingtalk'
|
||||
import request from '@/utils/request'
|
||||
import type { Result } from '@/api/types'
|
||||
import { getSystemConfig } from '@/api/system'
|
||||
|
||||
const router = useRouter()
|
||||
const authStore = useAuthStore()
|
||||
const siteSettingsStore = useSiteSettingsStore()
|
||||
|
||||
const activeTab = ref<'login' | 'register'>('login')
|
||||
const registerEnabled = ref(true)
|
||||
|
||||
const loading = ref(false)
|
||||
const registerLoading = ref(false)
|
||||
@ -393,6 +395,22 @@ const checkDingTalkLogin = async () => {
|
||||
}
|
||||
}
|
||||
|
||||
// 检查注册功能是否启用
|
||||
const checkRegisterEnabled = async () => {
|
||||
try {
|
||||
const response = await getSystemConfig('site.register.enabled')
|
||||
if (response.data) {
|
||||
registerEnabled.value = response.data === 'true' || response.data === '1'
|
||||
} else {
|
||||
registerEnabled.value = true // 默认开启
|
||||
}
|
||||
console.log('注册功能状态:', registerEnabled.value)
|
||||
} catch (error) {
|
||||
console.error('检查注册功能状态失败:', error)
|
||||
registerEnabled.value = true // 默认开启
|
||||
}
|
||||
}
|
||||
|
||||
// 处理钉钉登录
|
||||
const handleDingTalkLogin = async () => {
|
||||
dingTalkLoginLoading.value = true
|
||||
@ -430,6 +448,9 @@ onMounted(() => {
|
||||
// 检查钉钉登录是否启用
|
||||
checkDingTalkLogin()
|
||||
|
||||
// 检查注册功能是否启用
|
||||
checkRegisterEnabled()
|
||||
|
||||
// 监听网站设置更新事件(在加载后监听,确保能接收到事件)
|
||||
window.addEventListener('siteSettingsUpdated', handleSiteSettingsUpdate)
|
||||
|
||||
|
||||
@ -62,6 +62,18 @@
|
||||
</div>
|
||||
</a-form-item>
|
||||
|
||||
<a-divider orientation="left">功能开关</a-divider>
|
||||
<a-form-item label="注册功能">
|
||||
<a-switch
|
||||
v-model:checked="siteSettings.registerEnabled"
|
||||
checked-children="开启"
|
||||
un-checked-children="关闭"
|
||||
/>
|
||||
<div style="margin-top: 8px; font-size: 12px; color: #888;">
|
||||
控制登录页面是否显示注册功能
|
||||
</div>
|
||||
</a-form-item>
|
||||
|
||||
<a-form-item>
|
||||
<a-button type="primary" size="large" @click="handleSaveSiteSettings" :loading="savingSiteSettings">
|
||||
<template #icon><Icon name="check" size="sm" /></template>
|
||||
@ -1384,8 +1396,10 @@ const router = useRouter()
|
||||
const siteSettings = reactive({
|
||||
siteName: 'DesignHub',
|
||||
logoUrl: '',
|
||||
registerEnabled: true,
|
||||
siteNameConfigId: null as number | null,
|
||||
logoConfigId: null as number | null
|
||||
logoConfigId: null as number | null,
|
||||
registerEnabledConfigId: null as number | null
|
||||
})
|
||||
|
||||
const loading = reactive({
|
||||
@ -2519,11 +2533,21 @@ const loadSiteSettings = async () => {
|
||||
} else {
|
||||
siteSettings.logoUrl = siteSettingsStore.logoUrl
|
||||
}
|
||||
|
||||
// 查找注册功能开关配置
|
||||
const registerConfig = configs.find((c: any) => c.configKey === 'site.register.enabled')
|
||||
if (registerConfig) {
|
||||
siteSettings.registerEnabled = registerConfig.configValue === 'true' || registerConfig.configValue === '1'
|
||||
siteSettings.registerEnabledConfigId = registerConfig.id
|
||||
} else {
|
||||
siteSettings.registerEnabled = true // 默认开启
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('加载网站设置失败:', error)
|
||||
// 如果API失败,尝试从store读取
|
||||
siteSettings.siteName = siteSettingsStore.siteName
|
||||
siteSettings.logoUrl = siteSettingsStore.logoUrl
|
||||
siteSettings.registerEnabled = true // 默认开启
|
||||
} finally {
|
||||
loadingSiteSettings.value = false
|
||||
}
|
||||
@ -2599,6 +2623,29 @@ const handleSaveSiteSettings = async () => {
|
||||
}
|
||||
}
|
||||
|
||||
// 保存注册功能开关
|
||||
if (siteSettings.registerEnabledConfigId) {
|
||||
// 如果配置已存在,更新
|
||||
await updateSystemConfig(siteSettings.registerEnabledConfigId, {
|
||||
configValue: siteSettings.registerEnabled ? 'true' : 'false'
|
||||
})
|
||||
} else {
|
||||
// 如果配置不存在,创建
|
||||
const response = await createSystemConfig({
|
||||
configKey: 'site.register.enabled',
|
||||
configValue: siteSettings.registerEnabled ? 'true' : 'false',
|
||||
configGroup: 'site',
|
||||
configName: '注册功能开关',
|
||||
description: '控制登录页面是否显示注册功能',
|
||||
valueType: 'boolean',
|
||||
builtIn: 0,
|
||||
sortOrder: 3
|
||||
})
|
||||
if (response.data && response.data.id) {
|
||||
siteSettings.registerEnabledConfigId = response.data.id
|
||||
}
|
||||
}
|
||||
|
||||
// 更新全局store(这会自动更新所有使用store的组件)
|
||||
siteSettingsStore.updateSiteSettings(siteSettings.siteName, siteSettings.logoUrl)
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user