/** * Create user - persist to database * * @param userEntity * @return true if success */ public boolean createUser(UserEntity userEntity) { if (!userDao.checkAvailable(userEntity.getUserName())) { FacesMessage message = constructErrorMessage( String.format( getMessageBundle().getString("userExistsMsg"), userEntity.getUserName()), null); getFacesContext().addMessage(null, message); return false; } try { userDao.save(userEntity); } catch (Exception e) { FacesMessage message = constructFatalMessage(e.getMessage(), null); getFacesContext().addMessage(null, message); return false; } return true; }
/** Construct UserDetails instance required by spring security */ public UserDetails loadUserByUsername(String userName) throws UsernameNotFoundException { UserEntity user = userDao.loadUserByUserName(userName); if (user == null) { throw new UsernameNotFoundException( String.format(getMessageBundle().getString("badCredentials"), userName)); } // Just one simple authority, basically it should be located in the additional table of database Collection<GrantedAuthority> authorities = new ArrayList<GrantedAuthority>(); authorities.add(new SimpleGrantedAuthority("ROLE_USER")); User userDetails = new User(user.getUserName(), user.getPassword(), authorities); return userDetails; }
/** * Check user name availability. UI ajax use. * * @param ajax event * @return */ public boolean checkAvailable(AjaxBehaviorEvent event) { InputText inputText = (InputText) event.getSource(); String value = (String) inputText.getValue(); boolean available = userDao.checkAvailable(value); if (!available) { FacesMessage message = constructErrorMessage( null, String.format(getMessageBundle().getString("userExistsMsg"), value)); getFacesContext().addMessage(event.getComponent().getClientId(), message); } else { FacesMessage message = constructInfoMessage( null, String.format(getMessageBundle().getString("userAvailableMsg"), value)); getFacesContext().addMessage(event.getComponent().getClientId(), message); } return available; }
/** * Retrieves full User record from database by user name * * @param userName * @return UserEntity */ public UserEntity loadUserEntityByUsername(String userName) { return userDao.loadUserByUserName(userName); }