fix(person): 子账号继承主账号 role_type + Login 不再硬编 leader
问题: sponsor 主账号新建的子账号 role_type 没写入,
被 sys_user.role_type DEFAULT 'executor' 覆盖,
导致子账号进入 executor 视角;另外 Login.vue
autoRole/短信登录都硬编 'leader' 兜底, getInfo
失败时静默跳 /leader/home。
修复:
- BizPersonServiceImpl.insert 读主账号 SysUser,
把 mainUser.getRoleType() 写到新子账号
(SysUserMapper.xml insertUser 已支持 role_type 列)
- Login.vue: 短信登录 fallbackRole 改 '',
autoRole 不匹配返回 '', afterLogin 无 role 跳 /login
(不再 fallback /leader/home)
Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -283,7 +283,9 @@ async function afterLogin(token, displayName, fallbackRole) {
|
||||
})
|
||||
}
|
||||
ElMessage.success(`欢迎,${displayName}(${userTypes.find(u => u.value === role)?.name || role})`)
|
||||
router.replace(roleHome[role] || '/leader/home')
|
||||
// 没拿到角色就跳回登录页 (之前 fallback 到 /leader/home 会让子账号误入 leader)
|
||||
if (!role || !roleHome[role]) return router.replace({ name: 'login' })
|
||||
router.replace(roleHome[role])
|
||||
}
|
||||
|
||||
function switchMode(mode) {
|
||||
@@ -335,8 +337,8 @@ async function onSmsLoginSubmit() {
|
||||
await runSmsLoginOnce(async () => {
|
||||
try {
|
||||
const res = await smsLogin({ phone: smsForm.phone, smsCode: smsForm.smsCode, uuid: smsForm.uuid })
|
||||
// 短信登录后无 username, 用 phone 作为显示名; role 兜底默认 leader
|
||||
await afterLogin(res.token, smsForm.phone, 'leader')
|
||||
// 短信登录后无 username, 用 phone 作为显示名; fallbackRole 留空, 让 /getInfo 决定
|
||||
await afterLogin(res.token, smsForm.phone, '')
|
||||
} catch (e) {
|
||||
// request.js 已弹错误
|
||||
}
|
||||
@@ -351,7 +353,8 @@ function autoRole(username) {
|
||||
if (u.startsWith('doctor')) return 'doctor'
|
||||
if (u.startsWith('executor')) return 'executor'
|
||||
if (u.startsWith('sponsor')) return 'sponsor'
|
||||
return 'leader'
|
||||
// 不匹配返回空串, 让 /getInfo 决定 (避免名字不规范时误进 leader)
|
||||
return ''
|
||||
}
|
||||
|
||||
const roleHome = {
|
||||
|
||||
Reference in New Issue
Block a user