package org.oregami.service; import com.google.inject.Inject; import org.oregami.data.UserDao; import org.oregami.entities.KeyObjects.UserStatusKey; import org.oregami.entities.user.User; import org.oregami.entities.user.UserStatus; import org.oregami.util.MailHelper; import org.oregami.util.validation.UserValidator; import java.sql.Timestamp; import java.util.List; import java.util.UUID; public class UserServiceImpl implements IUserService { @Inject private UserDao userDao; private MailHelper mailhelper = MailHelper.instance(); public void uponSuccessfulRegistration(User user){ String recipient = user.getEmail(); mailhelper.sendMail(recipient, "[Development-Test-Mail only] Your Oregami account", "This is only a development mail.\n\nWelcome to Oregami.org!\n\nYour username: " + user.getUsername()); String admin = "gene@kultpower.de"; mailhelper.sendMail(admin, "New user account", "username: " + user.getUsername() + "\n" + "email: " + user.getEmail()); } @Override public ServiceResult<User> register(User userData) { UserValidator validator = buildUserValidator(userData); List<ServiceError> errorMessages = validator.validateForRegister(); User user = null; if (errorMessages.size() == 0) { user = userData; UserStatus userStatus = new UserStatus(); String hash = UUID.randomUUID().toString(); userStatus.setVerifyHash(hash); userStatus.setCreationDate(new Timestamp(System.currentTimeMillis())); userStatus.setUserStatus(UserStatusKey.Registration); user.addUserStatus(userStatus); user.setPasswordAndEncryptIt(user.getPassword()); userDao.save(user); uponSuccessfulRegistration(user); } return new ServiceResult<User>(user, errorMessages); } private UserValidator buildUserValidator(User userData) { return new UserValidator(userDao, userData); } public UserDao getUserDao() { return userDao; } public void setUserDao(UserDao UserDao) { this.userDao = UserDao; } @Override public User loadUserByUsername(String username) { User user = userDao.findOneByUsername(username); return user; } public void setMailhelper(MailHelper mailhelper) { this.mailhelper = mailhelper; } }