|
|
@@ -63,6 +63,7 @@ public class AuthService {
|
|
|
* @param password パスワード
|
|
|
* @return
|
|
|
*/
|
|
|
+ @Transactional
|
|
|
public String login(String username, String password)
|
|
|
{
|
|
|
// ユーザー
|
|
|
@@ -73,6 +74,7 @@ public class AuthService {
|
|
|
throw new UserPasswordNotMatchException();
|
|
|
}
|
|
|
|
|
|
+
|
|
|
// 認証コードを送信する
|
|
|
BssUserAuthCodeMailBo bssUserAuthCodeMailBo = new BssUserAuthCodeMailBo();
|
|
|
bssUserAuthCodeMailBo.setUserId(userDetails.getFarmerId());
|
|
|
@@ -82,7 +84,7 @@ public class AuthService {
|
|
|
|
|
|
String sendId = bssUserCertificationService.sendAuthCodeByEmail(bssUserAuthCodeMailBo);
|
|
|
|
|
|
- return this.createTempToken(sendId, userDetails.getMailAddress());
|
|
|
+ return this.createTempToken(sendId, userDetails.getFarmerId());
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
@@ -95,14 +97,11 @@ public class AuthService {
|
|
|
|
|
|
// ユーザー認証
|
|
|
Authentication authentication = null;
|
|
|
- FarmerUserInfo userDetails = null;
|
|
|
+ AuthTempTokenBo authTempTokenBo = getTempToken(authSecondBo.getTempToken());
|
|
|
|
|
|
try
|
|
|
{
|
|
|
- AuthTempTokenBo authTempTokenBo = getTempToken(authSecondBo.getTempToken());
|
|
|
- // ユーザー
|
|
|
- userDetails = this.selectUserByMailAddress(authTempTokenBo.getMailAddess());
|
|
|
- UsernamePasswordAuthenticationToken authenticationToken = new UsernamePasswordAuthenticationToken(userDetails.getFarmerId(), authSecondBo.getVerifyCode());
|
|
|
+ UsernamePasswordAuthenticationToken authenticationToken = new UsernamePasswordAuthenticationToken(authTempTokenBo.getUserId(), authSecondBo.getVerifyCode());
|
|
|
AuthenticationContextHolder.setContext(authenticationToken);
|
|
|
authentication = authenticationManager.authenticate(authenticationToken);
|
|
|
}
|
|
|
@@ -110,12 +109,12 @@ public class AuthService {
|
|
|
{
|
|
|
if (e instanceof BadCredentialsException)
|
|
|
{
|
|
|
- AsyncManager.me().execute(AsyncFactory.recordLogininfor(appConfig.getName(), userDetails.getFarmerId(), Constants.LOGIN_FAIL, MessageUtils.message("E0063")));
|
|
|
+ AsyncManager.me().execute(AsyncFactory.recordLogininfor(appConfig.getName(), authTempTokenBo.getUserId(), Constants.LOGIN_FAIL, MessageUtils.message("E0063")));
|
|
|
throw new AuthVerifyCodeNotMatchException();
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- AsyncManager.me().execute(AsyncFactory.recordLogininfor(appConfig.getName(), userDetails.getFarmerId(), Constants.LOGIN_FAIL, e.getMessage()));
|
|
|
+ AsyncManager.me().execute(AsyncFactory.recordLogininfor(appConfig.getName(), authTempTokenBo.getUserId(), Constants.LOGIN_FAIL, e.getMessage()));
|
|
|
throw new ServiceException(e.getMessage());
|
|
|
}
|
|
|
}
|
|
|
@@ -124,7 +123,7 @@ public class AuthService {
|
|
|
AuthenticationContextHolder.clearContext();
|
|
|
}
|
|
|
// I0011=二次認証に成功しました。
|
|
|
- AsyncManager.me().execute(AsyncFactory.recordLogininfor(appConfig.getName(), userDetails.getFarmerId(), Constants.LOGIN_SUCCESS, MessageUtils.message("I0011")));
|
|
|
+ AsyncManager.me().execute(AsyncFactory.recordLogininfor(appConfig.getName(), authTempTokenBo.getUserId(), Constants.LOGIN_SUCCESS, MessageUtils.message("I0011")));
|
|
|
|
|
|
LoginUser<FarmerUserInfo> loginUser = (LoginUser) authentication.getPrincipal();
|
|
|
|
|
|
@@ -135,7 +134,46 @@ public class AuthService {
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
+ * 認証コードを送信します。
|
|
|
+ * パスワードを忘れた方
|
|
|
+ *
|
|
|
+ * @param authSendVerifyCodeBo
|
|
|
+ *
|
|
|
+ * @return 一時token
|
|
|
+ */
|
|
|
+ @Transactional
|
|
|
+ public String sendAuthCode(AuthSendVerifyCodeBo authSendVerifyCodeBo){
|
|
|
+ // メールアドレス 必須入力
|
|
|
+ if(ValueUtils.isEmpty(authSendVerifyCodeBo.getMailAddress())){
|
|
|
+ // E0003={0}は必須入力です。
|
|
|
+ throw new ServiceException(MessageUtils.message("E0003", MessageUtils.message("mailAddress")));
|
|
|
+ }
|
|
|
+
|
|
|
+ // ユーザー メールアドレス
|
|
|
+ FarmerUserInfo user = farmerMapper.selectUserByMailAddress(DecryptUtils.encryptAES(authSendVerifyCodeBo.getMailAddress()));
|
|
|
+
|
|
|
+ if(user == null){
|
|
|
+ // E0062 確認用のパスワードと新パスワードが一致しません。
|
|
|
+ throw new ServiceException(MessageUtils.message("E0062", authSendVerifyCodeBo.getMailAddress()));
|
|
|
+ }
|
|
|
+
|
|
|
+ // 認証コードを送信する
|
|
|
+ BssUserAuthCodeMailBo bssUserAuthCodeMailBo = new BssUserAuthCodeMailBo();
|
|
|
+ bssUserAuthCodeMailBo.setUserId(user.getFarmerId());
|
|
|
+ bssUserAuthCodeMailBo.setMailAddress(user.getMailAddress());
|
|
|
+ bssUserAuthCodeMailBo.setType(BssUserCertificationType.FRAMER);
|
|
|
+ bssUserAuthCodeMailBo.setPgId(SankinPgIdEnum.N002.getCode());
|
|
|
+
|
|
|
+ String sendId = bssUserCertificationService.sendAuthCodeByEmail(bssUserAuthCodeMailBo);
|
|
|
+
|
|
|
+ return this.createTempToken(sendId, user.getFarmerId());
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
* 認証コードを再送信する
|
|
|
+ *
|
|
|
+ * @return 一時token
|
|
|
*/
|
|
|
@Transactional
|
|
|
public String resendAuthCode(AuthReSendVerifyCodeBo authReSendVerifyCodeBo) throws Exception {
|
|
|
@@ -143,7 +181,7 @@ public class AuthService {
|
|
|
AuthTempTokenBo authTempTokenBo = getTempToken(authReSendVerifyCodeBo.getTempToken());
|
|
|
|
|
|
// ユーザー
|
|
|
- FarmerUserInfo userDetails = this.selectUserByMailAddress(authTempTokenBo.getMailAddess());
|
|
|
+ FarmerUserInfo userDetails = this.selectUserByUserName(authTempTokenBo.getUserId());
|
|
|
|
|
|
// 認証コードを再送信する
|
|
|
BssUserAuthCodeMailBo bssUserAuthCodeMailBo = new BssUserAuthCodeMailBo();
|
|
|
@@ -151,15 +189,15 @@ public class AuthService {
|
|
|
bssUserAuthCodeMailBo.setMailAddress(userDetails.getMailAddress());
|
|
|
bssUserAuthCodeMailBo.setType(BssUserCertificationType.FRAMER);
|
|
|
bssUserAuthCodeMailBo.setPgId(SankinPgIdEnum.N003.getCode());
|
|
|
- bssUserAuthCodeMailBo.setPreSendId(authTempTokenBo.getSendVerifyCodeId());
|
|
|
|
|
|
String sendId = bssUserCertificationService.sendAuthCodeByEmail(bssUserAuthCodeMailBo);
|
|
|
|
|
|
- return this.createTempToken(sendId, userDetails.getMailAddress());
|
|
|
+ return this.createTempToken(sendId, userDetails.getFarmerId());
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* パスワード再設定
|
|
|
+ *
|
|
|
* @param authResetPwdBo
|
|
|
*/
|
|
|
@Transactional
|
|
|
@@ -180,41 +218,11 @@ public class AuthService {
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- * 認証コードを送信します。
|
|
|
- * パスワードを忘れた方
|
|
|
+ * ユーザーネームでユーザーを查詢
|
|
|
*
|
|
|
- * @param authSendVerifyCodeBo
|
|
|
- *
|
|
|
- * @return 一時token
|
|
|
+ * @param username ユーザーネーム
|
|
|
+ * @return ユーザーオブジェクト情報
|
|
|
*/
|
|
|
- @Transactional
|
|
|
- public String sendAuthCode(AuthSendVerifyCodeBo authSendVerifyCodeBo){
|
|
|
- // メールアドレス 必須入力
|
|
|
- if(ValueUtils.isEmpty(authSendVerifyCodeBo.getMailAddress())){
|
|
|
- // E0003={0}は必須入力です。
|
|
|
- throw new ServiceException(MessageUtils.message("E0003", MessageUtils.message("mailAddress")));
|
|
|
- }
|
|
|
-
|
|
|
- // ユーザー メールアドレス
|
|
|
- FarmerUserInfo user = farmerMapper.selectUserByMailAddress(authSendVerifyCodeBo.getMailAddress());
|
|
|
-
|
|
|
- if(user == null){
|
|
|
- // E0062 確認用のパスワードと新パスワードが一致しません。
|
|
|
- throw new ServiceException(MessageUtils.message("E0062", authSendVerifyCodeBo.getMailAddress()));
|
|
|
- }
|
|
|
-
|
|
|
- // 認証コードを送信する
|
|
|
- BssUserAuthCodeMailBo bssUserAuthCodeMailBo = new BssUserAuthCodeMailBo();
|
|
|
- bssUserAuthCodeMailBo.setUserId(user.getFarmerId());
|
|
|
- bssUserAuthCodeMailBo.setMailAddress(user.getMailAddress());
|
|
|
- bssUserAuthCodeMailBo.setType(BssUserCertificationType.FRAMER);
|
|
|
- bssUserAuthCodeMailBo.setPgId(SankinPgIdEnum.N002.getCode());
|
|
|
-
|
|
|
- String sendId = bssUserCertificationService.sendAuthCodeByEmail(bssUserAuthCodeMailBo);
|
|
|
-
|
|
|
- return this.createTempToken(sendId, user.getMailAddress());
|
|
|
- }
|
|
|
-
|
|
|
public FarmerUserInfo selectUserByUserName(String username){
|
|
|
// ユーザー
|
|
|
FarmerUserInfo userDetails = farmerMapper.selectUserByUserName(username);
|
|
|
@@ -233,24 +241,6 @@ public class AuthService {
|
|
|
return userDetails;
|
|
|
}
|
|
|
|
|
|
- public FarmerUserInfo selectUserByMailAddress(String mailAddress) throws Exception {
|
|
|
- // ユーザー
|
|
|
- FarmerUserInfo userDetails = farmerMapper.selectUserByMailAddress(DecryptUtils.encryptAES(mailAddress));
|
|
|
-
|
|
|
- if (StringUtils.isNull(userDetails))
|
|
|
- {
|
|
|
- log.info("ログインユーザ:{}は存在しません.", mailAddress);
|
|
|
- throw new ServiceException(MessageUtils.message("E0050", mailAddress));
|
|
|
- }
|
|
|
- else if (UserStatus.DISABLE.getCode().equals(userDetails.getDiscontinuedFlg()))
|
|
|
- {
|
|
|
- log.info("ログインユーザ:{}が停止されました", mailAddress);
|
|
|
- throw new ServiceException(MessageUtils.message("E0049"));
|
|
|
- }
|
|
|
-
|
|
|
- return userDetails;
|
|
|
- }
|
|
|
-
|
|
|
/**
|
|
|
* ロギングログイン情報
|
|
|
*
|
|
|
@@ -265,17 +255,17 @@ public class AuthService {
|
|
|
* 認証トークンの生成
|
|
|
*
|
|
|
* @param sendAuthVerifyCodeId ユーザー認証情報ID
|
|
|
- * @param email メールアドレス
|
|
|
+ * @param userId ユーザーID
|
|
|
* @return 認証トークン
|
|
|
*/
|
|
|
- private String createTempToken(String sendAuthVerifyCodeId, String email) {
|
|
|
+ private String createTempToken(String sendAuthVerifyCodeId, String userId) {
|
|
|
String resultToken = StringUtils.EMPTY;
|
|
|
try {
|
|
|
Map<String, Object> encryptMap = Map.of(
|
|
|
"sendId", sendAuthVerifyCodeId,
|
|
|
- "sendAddress", email);
|
|
|
+ "userId", userId);
|
|
|
String tokenFormat = JsonUtil.toJsonStr(encryptMap);
|
|
|
- resultToken = DecryptUtils.decryptAES(tokenFormat);
|
|
|
+ resultToken = DecryptUtils.encryptAES(tokenFormat);
|
|
|
} catch (Exception ex) {
|
|
|
log.error("【認証ユーザー異常】一時トークンの生成に失敗しました。", ex);
|
|
|
throw new ServiceException("一時トークン生成失敗しますので、管理者を連絡してください。");
|
|
|
@@ -307,7 +297,7 @@ public class AuthService {
|
|
|
|
|
|
if (null != tokenMap && tokenMap.containsKey("sendId") && StringUtils.isNotNull(tokenMap.get("sendId"))) {
|
|
|
result.setSendVerifyCodeId(String.valueOf(tokenMap.get("sendId")));
|
|
|
- result.setMailAddess(String.valueOf(tokenMap.get("sendAddress")));
|
|
|
+ result.setUserId(String.valueOf(tokenMap.get("userId")));
|
|
|
}
|
|
|
|
|
|
return result;
|