/** * Copyright (c) 2009 - 2012 Red Hat, Inc. * * This software is licensed to you under the GNU General Public License, * version 2 (GPLv2). There is NO WARRANTY for this software, express or * implied, including the implied warranties of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2 * along with this software; if not, see * http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt. * * Red Hat trademarks are not licensed under GPLv2. No permission is * granted to use or replicate Red Hat trademarks that are incorporated * in this software or its documentation. */ package org.candlepin.service.impl; import org.candlepin.model.PermissionBlueprint; import org.candlepin.model.Role; import org.candlepin.model.RoleCurator; import org.candlepin.model.User; import org.candlepin.model.UserCurator; import org.candlepin.service.UserServiceAdapter; import org.candlepin.util.Util; import com.google.inject.Inject; import java.util.HashSet; import java.util.List; import java.util.Set; /** * A {@link UserServiceAdapter} implementation backed by a {@link UserCurator} * for user creation and persistence. */ public class DefaultUserServiceAdapter implements UserServiceAdapter { private UserCurator userCurator; private RoleCurator roleCurator; @Inject public DefaultUserServiceAdapter(UserCurator userCurator, RoleCurator roleCurator) { this.userCurator = userCurator; this.roleCurator = roleCurator; } @Override public User createUser(User user) { return this.userCurator.create(user); } @Override public User updateUser(User user) { return userCurator.update(user); } @Override public List<User> listUsers() { return this.userCurator.listAll().list(); } @Override public List<Role> listRoles() { return roleCurator.listAll().list(); } @Override public Role createRole(Role role) { Set<User> actualUsers = new HashSet<User>(); for (User user : role.getUsers()) { User actualUser = findByLogin(user.getUsername()); actualUsers.add(actualUser); } role.setUsers(actualUsers); for (PermissionBlueprint permission : role.getPermissions()) { permission.setRole(role); } this.roleCurator.create(role); return role; } @Override public boolean validateUser(String username, String password) { User user = this.userCurator.findByLogin(username); String hashedPassword = Util.hash(password); if (user != null && password != null && hashedPassword != null) { return hashedPassword.equals(user.getHashedPassword()); } return false; } @Override public void deleteUser(User user) { for (Role r : user.getRoles()) { user.removeRole(r); } userCurator.delete(user); } @Override public User findByLogin(String login) { return userCurator.findByLogin(login); } @Override public void deleteRole(String roleId) { Role r = roleCurator.find(roleId); roleCurator.delete(r); } @Override public Role updateRole(Role r) { // Set<OwnerPermission> newPermissions = new HashSet<OwnerPermission>(); // for (OwnerPermission incomingPerm : r.getPermissions()) { // newPermissions.add(this.permCurator.findOrCreate( // incomingPerm.getOwner(), incomingPerm.getAccess())); // } // r.getPermissions().clear(); // r.getPermissions().addAll(newPermissions); return roleCurator.merge(r); } @Override public Role getRole(String roleId) { return roleCurator.find(roleId); } @Override public void addUserToRole(Role role, User user) { role.addUser(user); roleCurator.merge(role); } @Override public void removeUserFromRole(Role role, User user) { role.removeUser(user); roleCurator.merge(role); } }