|
|
|
@ -1,6 +1,7 @@
|
|
|
|
|
package cokr.xit.base.user.service.bean;
|
|
|
|
|
|
|
|
|
|
import java.util.List;
|
|
|
|
|
import java.util.Map;
|
|
|
|
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
|
|
|
|
|
|
|
@ -113,21 +114,50 @@ public class UserBean extends AbstractBean {
|
|
|
|
|
User existing = getExistingUser(user);
|
|
|
|
|
if (existing != null && !equals(user.getId(), existing.getId()))
|
|
|
|
|
throw applicationException(null)
|
|
|
|
|
.setMessage(message("duplicate.object", "사용자"));
|
|
|
|
|
.setMessage(message("authenticationFailure.badCredentials"));
|
|
|
|
|
|
|
|
|
|
user.setModifiedBy(currentUser().getId());
|
|
|
|
|
return userMapper.updateUser(user) > 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private String defaultPassword() {
|
|
|
|
|
return properties.getString("defaultPassword");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**지정한 암호화된 문자열이 디폴트 비밀번호와 같은지 반환한다.
|
|
|
|
|
* @param encrypted 암호화된 문자열
|
|
|
|
|
* @return 지정한 암호화된 문자열이 디폴트 비밀번호와 같은지 여부
|
|
|
|
|
*/
|
|
|
|
|
public boolean isDefaultPassword(String encrypted) {
|
|
|
|
|
String defaultPassword = defaultPassword();
|
|
|
|
|
if (isEmpty(encrypted)
|
|
|
|
|
|| isEmpty(defaultPassword))
|
|
|
|
|
return false;
|
|
|
|
|
|
|
|
|
|
return passwordEncoder.matches(defaultPassword, encrypted);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**지정한 사용자들의 비밀번호를 변경한다. {@link cokr.xit.foundation.util.CharsEncoder 비밀번호는 암호화}하여 저장한다.
|
|
|
|
|
* @param init 비밀번호 초기화 여부
|
|
|
|
|
* @param password 새 비밀번호
|
|
|
|
|
* @param userIDs 사용자 아이디
|
|
|
|
|
* @return 저장된 정보수
|
|
|
|
|
*/
|
|
|
|
|
public int changePassword(String password, String... userIDs) {
|
|
|
|
|
public int changePassword(boolean init, String password, String... userIDs) {
|
|
|
|
|
if (init) {
|
|
|
|
|
password = defaultPassword();
|
|
|
|
|
}
|
|
|
|
|
return userMapper.changePassword(passwordEncoder.encode(password), userIDs);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public int changePassword(String userID, String currentPassword, String password) {
|
|
|
|
|
User user = userMapper.getUser(Map.of("userID", userID));
|
|
|
|
|
if (!passwordEncoder.matches(currentPassword, user.getPassword()))
|
|
|
|
|
return 0;
|
|
|
|
|
|
|
|
|
|
return changePassword(false, password, userID);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**지정한 사용자들을 잠금 또는 잠김해제한다.
|
|
|
|
|
* @param lock 잠김 여부
|
|
|
|
|
* <ul><li>잠금이면 true</li>
|
|
|
|
|