| | |
| | | if (ObjectUtils.isEmpty(password)) { |
| | | password = firstText(userInfo, "tenantPassword", "password", "pwd"); |
| | | } |
| | | if (ObjectUtils.isEmpty(account) || ObjectUtils.isEmpty(password)) { |
| | | log.error("[浪潮SSO] 未取到租户账号/密码, userInfo={}", userInfo); |
| | | // 免密登录只需账号;password 仅作日志参考,浪潮侧不返回也不影响登录 |
| | | if (ObjectUtils.isEmpty(account)) { |
| | | log.error("[浪潮SSO] 未取到租户账号, userInfo={}", userInfo); |
| | | return AjaxResult.error("浪潮未返回企业租户账号信息,请联系平台管理员检查该账号的企业绑定"); |
| | | } |
| | | try { |
| | | String generateToken = loginService.login(account, password, null, IdWorker.get32UUID()); |
| | | // 浪潮侧已完成身份认证(code 换 token → 取 userInfo),本地不再用 tenantPassword 二次校验。 |
| | | // 原实现 login(account, password, ...) 在浪潮配置的密码与本地 sys_user.password 不一致时 |
| | | // 会抛 UserPasswordNotMatchException,表现为「租户账号[xxx]在系统中登录失败(用户不存在/密码错误)」。 |
| | | String generateToken = loginService.ssoLogin(account); |
| | | AjaxResult ajax = AjaxResult.success(); |
| | | ajax.put(Constants.TOKEN, generateToken); |
| | | return ajax; |