diff --git a/pom.xml b/pom.xml index af9bc03..38ed794 100644 --- a/pom.xml +++ b/pom.xml @@ -12,7 +12,7 @@ UTF-8 - 1.8 + 17 ${java.version} ${java.version} @@ -120,8 +120,8 @@ org.apache.maven.plugins maven-compiler-plugin - 1.8 - 1.8 + ${java.version} + ${java.version} UTF-8 diff --git a/src/main/java/cokr/xit/base/user/GenericUser.java b/src/main/java/cokr/xit/base/user/GenericUser.java index 76bbc56..7734312 100644 --- a/src/main/java/cokr/xit/base/user/GenericUser.java +++ b/src/main/java/cokr/xit/base/user/GenericUser.java @@ -49,7 +49,6 @@ public abstract class GenericUser extends User { } private String - key, passwordHint, passwordHintAnswer, gender, @@ -62,7 +61,6 @@ public abstract class GenericUser extends User { faxNo, mobilePhoneNo, groupID, - locked, status; private int lockCount; private String lockedDate; @@ -72,20 +70,6 @@ public abstract class GenericUser extends User { */ public abstract String getType(); - /**사용자의 고유 ID를 반환한다. - * @return 사용자의 고유 ID - */ - public String getKey() { - return key; - } - - /**사용자의 고유 ID를 설정한다. - * @param key 사용자의 고유 ID - */ - public void setKey(String key) { - this.key = key; - } - /**비밀번호의 힌트를 반환한다. * @return */ @@ -255,20 +239,6 @@ public abstract class GenericUser extends User { this.groupID = groupID; } - /**사용자 계정의 잠금여부를 반환한다. - * @return 사용자 계정의 잠금여부 - */ - public String getLocked() { - return Assert.ifEmpty(locked, "N"); - } - - /**사용자 계정의 잠금여부를 설정한다. - * @param locked 사용자 계정의 잠금여부 - */ - public void setLocked(String locked) { - this.locked = locked; - } - /**사용자 계정의 잠금횟수를 반환한다. * @return 사용자 계정의 잠금횟수 */ diff --git a/src/main/java/cokr/xit/base/user/ManagedUser.java b/src/main/java/cokr/xit/base/user/ManagedUser.java index 07bab98..8663f8e 100644 --- a/src/main/java/cokr/xit/base/user/ManagedUser.java +++ b/src/main/java/cokr/xit/base/user/ManagedUser.java @@ -12,7 +12,6 @@ public class ManagedUser extends GenericUser { deptCode, birthday, positionName, - institute, certificateDn; @Override @@ -104,20 +103,6 @@ public class ManagedUser extends GenericUser { this.positionName = positionName; } - /**소속기관을 반환한다. - * @return 소속기관 코드 - */ - public String getInstitute() { - return institute; - } - - /**소속기관을 설정한다. - * @param insititute 소속기관 코드 - */ - public void setInstitute(String insititute) { - this.institute = insititute; - } - /**인증 DN값을 반환한다. * @return 인증 DN값 */ diff --git a/src/main/java/cokr/xit/base/user/dao/UserMapper.java b/src/main/java/cokr/xit/base/user/dao/UserMapper.java index 2454b96..5cb0024 100644 --- a/src/main/java/cokr/xit/base/user/dao/UserMapper.java +++ b/src/main/java/cokr/xit/base/user/dao/UserMapper.java @@ -57,6 +57,31 @@ public interface UserMapper extends AbstractMapper { return !users.isEmpty() ? users.get(0) : null; } + /**사용자 계정과 기관에 해당하는 사용자를 반환한다. + * @param params 파라미터 + *
{
+	 *     "account":사용자 계정,
+	 *     "institute":사용자 소속 기관
+	 * }
+ * @return 사용자 + */ + T getUser(Map params); + + /**사용자 계정과 기관에 해당하는 사용자를 반환한다. + * @param account 사용자 계정 + * @param institute 사용자 소속 기관 + * @return 사용자 + */ + default T getUser(String account, String institute) { + notEmpty(account, "사용자 계정"); + notEmpty(institute, "소속 기관 코드"); + return getUser( + params() + .set("account", account) + .set("institute", institute) + ); + } + /**사용자 정보를 등록한다. * @param user 사용자 * @return 저장된 정보수 diff --git a/src/main/java/cokr/xit/base/user/service/UserService.java b/src/main/java/cokr/xit/base/user/service/UserService.java index f13a845..7de9e04 100644 --- a/src/main/java/cokr/xit/base/user/service/UserService.java +++ b/src/main/java/cokr/xit/base/user/service/UserService.java @@ -59,6 +59,14 @@ public interface UserService { */ T getUser(String userID); + /**지정한 계정의 사용자를 반환한다. + * @param 사용자 타입 + * @param account 사용자 계정 + * @param institute 소속 기관 코드 + * @return 사용자 + */ + T getUser(String account, String institute); + /**사용자 정보를 등록한다. 사용자 정보 등록 시 {@link cokr.xit.foundation.util.CharsEncoder 비밀번호는 암호화}하여 저장한다. * @param user 사용자 * @return 등록 결과 diff --git a/src/main/java/cokr/xit/base/user/service/bean/UserBean.java b/src/main/java/cokr/xit/base/user/service/bean/UserBean.java index 33a66c5..7994297 100644 --- a/src/main/java/cokr/xit/base/user/service/bean/UserBean.java +++ b/src/main/java/cokr/xit/base/user/service/bean/UserBean.java @@ -30,7 +30,7 @@ public class UserBean extends AbstractComponent { */ public List getUserList(UserQuery req) { switch (ifEmpty(req.getBy(), () -> "")) { - case "userID": req.setBy("USER_ID"); break; + case "userAccount": req.setBy("USER_ACNT"); break; default: req.setBy("USER_NM"); break; } req.setOrderBy(req.getBy()); @@ -63,6 +63,16 @@ public class UserBean extends AbstractComponent { return userMapper.getUser(userID); } + /**지정한 계정의 사용자를 반환한다. + * @param 사용자 타입 + * @param account 사용자 계정 + * @param institute 소속 기관 코드 + * @return 사용자 + */ + public T getUser(String account, String institute) { + return userMapper.getUser(account, institute); + } + /**사용자 정보를 등록한다. 사용자 정보 등록 시 {@link cokr.xit.foundation.util.CharsEncoder 비밀번호는 암호화}하여 저장한다. * @param user 사용자 * @return 등록 결과 @@ -73,8 +83,7 @@ public class UserBean extends AbstractComponent { public boolean create(User user) { if (user == null) return false; - String userID = notEmpty(user.getId(), "user.id"); - User existing = getUser(userID); + User existing = getExistingUser(user); if (existing != null) throw applicationException(null) .setMessage(message("duplicate.object", "사용자")); @@ -85,6 +94,12 @@ public class UserBean extends AbstractComponent { return userMapper.insertUser(user) > 0; } + private User getExistingUser(User user) { + String account = user.getAccount(), + institute = user.getInstitute(); + return getUser(account, institute); + } + /**사용자 정보를 수정한다. * @param user 사용자 * @return 수정 결과 @@ -95,6 +110,11 @@ public class UserBean extends AbstractComponent { public boolean update(User user) { if (user == null) return false; + User existing = getExistingUser(user); + if (existing != null && !equals(user.getId(), existing.getId())) + throw applicationException(null) + .setMessage(message("duplicate.object", "사용자")); + user.setModifiedBy(currentUser().getId()); return userMapper.updateUser(user) > 0; } diff --git a/src/main/java/cokr/xit/base/user/service/bean/UserServiceBean.java b/src/main/java/cokr/xit/base/user/service/bean/UserServiceBean.java index cf132e0..fc9ebb6 100644 --- a/src/main/java/cokr/xit/base/user/service/bean/UserServiceBean.java +++ b/src/main/java/cokr/xit/base/user/service/bean/UserServiceBean.java @@ -42,6 +42,11 @@ public class UserServiceBean extends AbstractServiceBean implements UserService return userBean.getUser(userID); } + @Override + public T getUser(String account, String institute) { + return userBean.getUser(account, institute); + } + @Override public boolean create(User user) { return userBean.create(user); diff --git a/src/main/java/cokr/xit/base/user/web/UserController.java b/src/main/java/cokr/xit/base/user/web/UserController.java index 8e7c3b5..5328eec 100644 --- a/src/main/java/cokr/xit/base/user/web/UserController.java +++ b/src/main/java/cokr/xit/base/user/web/UserController.java @@ -68,16 +68,17 @@ public class UserController extends AbstractController { return mav.addObject("userList", toJson(list)); } - /**지정한 사용자 아이디가 사용 중인지 반환한다. - * @param userID 사용자 아이디 + /**지정한 사용자 계정이 사용 중인지 반환한다. + * @param account 사용자 계정 + * @param institute 소속 기관 코드 * @return jsonView *
 {
 	 *     "duplicate": 사용 중이면 true, 그렇지 않으면 false
 	 * }
*/ @RequestMapping(name="중복 확인", value="/duplicate.do") - public ModelAndView isDuplicate(String userID) { - U user = userService.getUser(userID); + public ModelAndView isDuplicate(String account, String institute) { + U user = userService.getUser(account, institute); return new ModelAndView("jsonView") .addObject("duplicate", user != null); }