/** * Balero CMS Project: Proyecto 100% Mexicano de código libre. * Página Oficial: http://www.balerocms.com * * @author Anibal Gomez <anibalgomez@icloud.com> * @copyright Copyright (C) 2015 Neblina Software. Derechos reservados. * @license Licencia BSD; vea LICENSE.txt */ package com.neblina.balero.service; import com.neblina.balero.domain.User; import com.neblina.balero.service.impl.CustomUserDetailsManager; import com.neblina.balero.service.repository.UserRepository; import com.neblina.balero.util.PasswordGenerator; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.core.Authentication; import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.stereotype.Service; import java.util.List; @Service public class UserService { private static final Logger log = LogManager.getLogger(UserService.class.getName()); @Autowired private UserRepository userRepository; @Autowired private CustomUserDetailsManager customUserDetailsManager; public void createUserAccount(String userName, String password, String passwordVerify, String firstName, String lastName, String email, boolean subscribed, String roles, String type) { PasswordGenerator pwd = new PasswordGenerator(); User user = new User(); user.setUsername(userName); user.setPassword(pwd.generatePassword(password)); user.setPasswordVerify(pwd.generatePassword(passwordVerify)); user.setFirstName(firstName); user.setLastName(lastName); user.setEmail(email); user.setSubscribed(subscribed); user.setRoles(roles); user.setType(type); userRepository.save(user); try { if(!userName.equals("temp") && !password.equals("temp")) { log.debug("Creating user '" + userName + "' with User id: " + user.getId() + " and Email: " + email); //inMemoryUserDetailsManager.createUser(new org.springframework.security.core.userdetails.User(userName, pwd.generatePassword(password), AuthorityUtils.createAuthorityList("ROLE_USER"))); customUserDetailsManager.loadUserByUsername(userName); } } catch (Exception e) { log.debug("Error: " + e.getMessage()); } } public User getUserByUsername(String username) { User user = userRepository.findOneByUsername(username); return user; } public List<User> getAllUsers() { List<User> users = userRepository.findAll(); return users; } public void saveAdminProfile(String firstName, String lastName, String email) { User user = userRepository.findOneByUsername("admin"); user.setUsername(user.getUsername()); user.setPassword(user.getPassword()); user.setPasswordVerify(user.getPasswordVerify()); user.setFirstName(firstName); user.setLastName(lastName); user.setEmail(email); user.setSubscribed(user.getSubscribed()); userRepository.save(user); } public void saveUserProfile(String firstName, String lastName, String email) { Authentication auth = SecurityContextHolder.getContext().getAuthentication(); String username = auth.getName(); //get logged in username User user = userRepository.findOneByUsername(username); user.setUsername(user.getUsername()); user.setPassword(user.getPassword()); user.setPasswordVerify(user.getPasswordVerify()); user.setFirstName(firstName); user.setLastName(lastName); user.setEmail(email); user.setSubscribed(user.getSubscribed()); userRepository.save(user); } public void changeAdminPassword(String newPassword) { User user = userRepository.findOneByUsername("admin"); PasswordGenerator passwordGenerator = new PasswordGenerator(); user.setPassword(passwordGenerator.generatePassword(newPassword)); user.setPasswordVerify(passwordGenerator.generatePassword(newPassword)); userRepository.save(user); //inMemoryUserDetailsManager.changePassword(null, passwordGenerator.generatePassword(newPassword)); customUserDetailsManager.changePassword(null, passwordGenerator.generatePassword(newPassword)); log.debug("Changing password for admin..."); } public void changeUserPassword(String newPassword) { Authentication auth = SecurityContextHolder.getContext().getAuthentication(); String username = auth.getName(); //get logged in username User user = userRepository.findOneByUsername(username); PasswordGenerator passwordGenerator = new PasswordGenerator(); user.setPassword(passwordGenerator.generatePassword(newPassword)); user.setPasswordVerify(passwordGenerator.generatePassword(newPassword)); userRepository.save(user); customUserDetailsManager.changePassword(null, passwordGenerator.generatePassword(newPassword)); log.debug("Changing password for admin..."); } /** * @deprecated */ public void updateUserEmail(Long id, String email) { User user = userRepository.findOneById(id); user.setEmail(email); userRepository.save(user); log.debug("Updating user's email."); } public void updateUserInfo(Long id, String firstName, String lastName, String email) { User user = userRepository.findOneById(id); user.setFirstName(firstName); user.setLastName(lastName); user.setEmail(email); userRepository.save(user); log.debug("Updating user's email."); } public void deleteUserEmail(Long id) { User user = userRepository.findOneById(id); user.setId(id); userRepository.delete(user); log.debug("Deleting user's email."); } public void updateSubscribedStatus() { Authentication auth = SecurityContextHolder.getContext().getAuthentication(); String username = auth.getName(); //get logged in username User user = userRepository.findOneByUsername(username); user.setSubscribed(!user.getSubscribed()); userRepository.save(user); log.debug("Updating subscribed status to: " + !user.getSubscribed() + " for: " + user.getUsername()); } public void updateSubscribedStatusByEmail(String email) { log.debug("Updating subscribed for: " + email); User user = userRepository.findOneByEmail(email); user.setSubscribed(!user.getSubscribed()); userRepository.save(user); } public void cancelSubscribedStatusByEmail(String email) { log.debug("Cancelling subscription for: " + email); User user = userRepository.findOneByEmail(email); user.setSubscribed(false); userRepository.save(user); } public int getTotalUsers() { return userRepository.findAll().size(); } public int getSubscribedUsers() { return userRepository.findAllBySubscribed(true).size(); } public String getMyUsername() { Authentication auth = SecurityContextHolder.getContext().getAuthentication(); String username = auth.getName(); //get logged in username return username; } public String getUserType() { User user = userRepository.findOneByUsername(getMyUsername()); return user.getType(); } public User findOneByUsername(String username) { return userRepository.findOneByUsername(username); } public List<User> findAll() { return userRepository.findAll(); } public User findOneById(Long id) { return userRepository.findOneById(id); } public User findOneByEmail(String email) { return userRepository.findOneByEmail(email); } }