/* * This file is subject to the terms and conditions defined in file 'LICENSE.txt', which is part of this source code package. */ package won.owner.web.validator; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import org.springframework.validation.Errors; import org.springframework.validation.Validator; import won.owner.model.User; import won.owner.pojo.UserPojo; import won.owner.service.impl.WONUserDetailService; /** * User: t.kozel * Date: 11/12/13 */ @Component public class UserRegisterValidator implements Validator { private final static Logger log = LoggerFactory.getLogger(UserRegisterValidator.class); private final Validator validator; private final WONUserDetailService wonUserDetailService; @Autowired public UserRegisterValidator(final Validator validator, final WONUserDetailService wonUserDetailService) { this.validator = validator; this.wonUserDetailService = wonUserDetailService; } @Override public boolean supports(final Class<?> clazz) { return clazz.equals(UserPojo.class); } @Override public void validate(final Object target, final Errors errors) { UserPojo user = (UserPojo) target; validator.validate(target, errors); if (user.getPassword().length() < 6) { errors.rejectValue("password", "passwordTooShort", "Password needs to be at least 6 Characters long"); } if(errors.getFieldError("username") != null) { User userInDb = (User) wonUserDetailService.loadUserByUsername(user.getUsername()); if(userInDb != null) { errors.reject("userIsAlreadyInDb", "Username already exists, please choose a different one"); } } } }