use of cz.metacentrum.perun.audit.events.UserManagerEvents.OwnershipEnabledForSpecificUser in project perun by CESNET.
the class UsersManagerBlImpl method addSpecificUserOwner.
@Override
public void addSpecificUserOwner(PerunSession sess, User user, User specificUser) throws RelationExistsException {
if (specificUser.isServiceUser() && specificUser.isSponsoredUser())
throw new InternalErrorException("We don't support specific and sponsored users together yet.");
if (specificUser.getMajorSpecificType().equals(SpecificUserType.NORMAL))
throw new InternalErrorException("Incorrect type of specification for specific user!" + specificUser);
if (user.getMajorSpecificType().equals(SpecificUserType.SERVICE))
throw new InternalErrorException("Service user can`t own another account (service or guest)!" + user);
List<User> specificUserOwners = this.getUsersBySpecificUser(sess, specificUser);
if (specificUserOwners.remove(user))
throw new RelationExistsException("User is already the active owner of specific user.");
if (getUsersManagerImpl().specificUserOwnershipExists(sess, user, specificUser)) {
getUsersManagerImpl().enableOwnership(sess, user, specificUser);
getPerunBl().getAuditer().log(sess, new OwnershipEnabledForSpecificUser(user, specificUser));
} else {
getPerunBl().getAuditer().log(sess, new UserAddedToOwnersOfSpecificUser(user, specificUser));
getUsersManagerImpl().addSpecificUserOwner(sess, user, specificUser);
}
try {
// refresh authz for sponsors
if (specificUser.isSponsoredUser())
AuthzResolverBlImpl.addSpecificUserOwner(sess, specificUser, user);
// refresh authz for service user owners
if (specificUser.isServiceUser() && sess.getPerunPrincipal() != null) {
if (user.getId() == sess.getPerunPrincipal().getUserId()) {
AuthzResolverBlImpl.refreshAuthz(sess);
}
}
} catch (AlreadyAdminException ex) {
throw new InternalErrorException("User " + user + " is already sponsor of sponsored user " + specificUser);
}
}
Aggregations