|
|
|
@ -34,6 +34,7 @@ import cn.estsh.impp.framework.boot.util.*;
|
|
|
|
|
import io.swagger.annotations.ApiOperation;
|
|
|
|
|
import org.apache.commons.collections.CollectionUtils;
|
|
|
|
|
import org.apache.commons.lang3.StringUtils;
|
|
|
|
|
import org.apache.logging.log4j.util.Strings;
|
|
|
|
|
import org.apache.shiro.authc.*;
|
|
|
|
|
import org.slf4j.Logger;
|
|
|
|
|
import org.slf4j.LoggerFactory;
|
|
|
|
@ -235,16 +236,24 @@ public class SysUserService implements ISysUserService {
|
|
|
|
|
@Override
|
|
|
|
|
public BaseToken getToken(String loginName, String password, String languageCode, Integer loginPlatform) {
|
|
|
|
|
SysUser user = this.getSysUserByLoginName(loginName);
|
|
|
|
|
if (user != null) {
|
|
|
|
|
if (user.getUserType().equals(CommonEnumUtil.USER_TYPE.ADMIN.getValue())) {
|
|
|
|
|
return new AdminToken(loginName, password, languageCode, loginPlatform);
|
|
|
|
|
} else if (user.getUserType().equals(CommonEnumUtil.USER_TYPE.SA.getValue())) {
|
|
|
|
|
return new SaAdminToken(loginName, password, languageCode, loginPlatform);
|
|
|
|
|
} else {
|
|
|
|
|
return new UserToken(loginName, password, languageCode, loginPlatform);
|
|
|
|
|
//拦截没有权限的账号,供应商账号不能登录pc
|
|
|
|
|
loginPlatform = loginPlatform != null ? loginPlatform : CommonEnumUtil.LOG_LOGIN_PLATFORM.PC_IMPP_CORE.getValue();
|
|
|
|
|
//判断条件,如果有authPlatform限制,则进行校验,没有,按照原有登录
|
|
|
|
|
//authPlatform限制,如果不包含平台权限,则不能登录,这里可以扩展多个登录权限限制。
|
|
|
|
|
String authPlatform = user.getAuthPlatform();
|
|
|
|
|
if (Strings.isNotBlank(authPlatform)){
|
|
|
|
|
List<Integer> authPlatforms = Arrays.stream(authPlatform.split(",")).map(Integer::parseInt).collect(Collectors.toList());
|
|
|
|
|
if (!authPlatforms.contains(loginPlatform)){
|
|
|
|
|
throw ImppExceptionBuilder.newInstance().setErrorDetail("此账号没有权限登录此平台,请联系管理员!").build();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (user.getUserType().equals(CommonEnumUtil.USER_TYPE.ADMIN.getValue())) {
|
|
|
|
|
return new AdminToken(loginName, password, languageCode, loginPlatform);
|
|
|
|
|
} else if (user.getUserType().equals(CommonEnumUtil.USER_TYPE.SA.getValue())) {
|
|
|
|
|
return new SaAdminToken(loginName, password, languageCode, loginPlatform);
|
|
|
|
|
} else {
|
|
|
|
|
throw new CredentialsException("用户不存在");
|
|
|
|
|
return new UserToken(loginName, password, languageCode, loginPlatform);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|