|
|
@@ -1,6 +1,7 @@
|
|
|
package jp.yamoto.farm.crm.biz.security;
|
|
|
|
|
|
import jakarta.annotation.Resource;
|
|
|
+import jp.yamoto.farm.common.config.FarmConfig;
|
|
|
import jp.yamoto.farm.crm.biz.service.ISysConfigService;
|
|
|
import jp.yamoto.farm.crm.biz.service.ISysUserService;
|
|
|
import jp.yamoto.farm.common.constant.CacheConstants;
|
|
|
@@ -49,6 +50,9 @@ public class SysLoginService
|
|
|
@Autowired
|
|
|
private ISysConfigService configService;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private FarmConfig farmConfig;
|
|
|
+
|
|
|
/**
|
|
|
* ログイン検証
|
|
|
*
|
|
|
@@ -76,12 +80,12 @@ public class SysLoginService
|
|
|
{
|
|
|
if (e instanceof BadCredentialsException)
|
|
|
{
|
|
|
- AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("user.password.not.match")));
|
|
|
+ AsyncManager.me().execute(AsyncFactory.recordLogininfor(farmConfig.getName(), username, Constants.LOGIN_FAIL, MessageUtils.message("user.password.not.match")));
|
|
|
throw new UserPasswordNotMatchException();
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, e.getMessage()));
|
|
|
+ AsyncManager.me().execute(AsyncFactory.recordLogininfor(farmConfig.getName(), username, Constants.LOGIN_FAIL, e.getMessage()));
|
|
|
throw new ServiceException(e.getMessage());
|
|
|
}
|
|
|
}
|
|
|
@@ -89,7 +93,7 @@ public class SysLoginService
|
|
|
{
|
|
|
AuthenticationContextHolder.clearContext();
|
|
|
}
|
|
|
- AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_SUCCESS, MessageUtils.message("user.login.success")));
|
|
|
+ AsyncManager.me().execute(AsyncFactory.recordLogininfor(farmConfig.getName(), username, Constants.LOGIN_SUCCESS, MessageUtils.message("user.login.success")));
|
|
|
LoginUser loginUser = (LoginUser) authentication.getPrincipal();
|
|
|
recordLoginInfo(loginUser.getUserId());
|
|
|
// token
|
|
|
@@ -113,13 +117,13 @@ public class SysLoginService
|
|
|
String captcha = redisCache.getCacheObject(verifyKey);
|
|
|
if (captcha == null)
|
|
|
{
|
|
|
- AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("user.jcaptcha.expire")));
|
|
|
+ AsyncManager.me().execute(AsyncFactory.recordLogininfor(farmConfig.getName(), username, Constants.LOGIN_FAIL, MessageUtils.message("user.jcaptcha.expire")));
|
|
|
throw new CaptchaExpireException();
|
|
|
}
|
|
|
redisCache.deleteObject(verifyKey);
|
|
|
if (!code.equalsIgnoreCase(captcha))
|
|
|
{
|
|
|
- AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("user.jcaptcha.error")));
|
|
|
+ AsyncManager.me().execute(AsyncFactory.recordLogininfor(farmConfig.getName(), username, Constants.LOGIN_FAIL, MessageUtils.message("user.jcaptcha.error")));
|
|
|
throw new CaptchaException();
|
|
|
}
|
|
|
}
|
|
|
@@ -135,28 +139,28 @@ public class SysLoginService
|
|
|
// ユーザー名またはパスワードがNULLのエラー
|
|
|
if (StringUtils.isEmpty(username) || StringUtils.isEmpty(password))
|
|
|
{
|
|
|
- AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("not.null")));
|
|
|
+ AsyncManager.me().execute(AsyncFactory.recordLogininfor(farmConfig.getName(), username, Constants.LOGIN_FAIL, MessageUtils.message("not.null")));
|
|
|
throw new UserNotExistsException();
|
|
|
}
|
|
|
// パスワードが指定された範囲内でなければエラー
|
|
|
if (password.length() < UserConstants.PASSWORD_MIN_LENGTH
|
|
|
|| password.length() > UserConstants.PASSWORD_MAX_LENGTH)
|
|
|
{
|
|
|
- AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("user.password.not.match")));
|
|
|
+ AsyncManager.me().execute(AsyncFactory.recordLogininfor(farmConfig.getName(), username, Constants.LOGIN_FAIL, MessageUtils.message("user.password.not.match")));
|
|
|
throw new UserPasswordNotMatchException();
|
|
|
}
|
|
|
// ユーザー名が指定された範囲外のエラー
|
|
|
if (username.length() < UserConstants.USERNAME_MIN_LENGTH
|
|
|
|| username.length() > UserConstants.USERNAME_MAX_LENGTH)
|
|
|
{
|
|
|
- AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("user.password.not.match")));
|
|
|
+ AsyncManager.me().execute(AsyncFactory.recordLogininfor(farmConfig.getName(), username, Constants.LOGIN_FAIL, MessageUtils.message("user.password.not.match")));
|
|
|
throw new UserPasswordNotMatchException();
|
|
|
}
|
|
|
// IPブラックリスト検証
|
|
|
String blackStr = configService.selectConfigByKey("sys.login.blackIPList");
|
|
|
if (IpUtils.isMatchedIp(blackStr, IpUtils.getIpAddr()))
|
|
|
{
|
|
|
- AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("login.blocked")));
|
|
|
+ AsyncManager.me().execute(AsyncFactory.recordLogininfor(farmConfig.getName(), username, Constants.LOGIN_FAIL, MessageUtils.message("login.blocked")));
|
|
|
throw new BlackListException();
|
|
|
}
|
|
|
}
|