protected void addUser(Set<String> addresses, Experimenter exp) { String email = exp.getEmail(); if (!isEmpty(email)) { addresses.add(email); } }
protected void addUser(Set<String> addresses, Experimenter exp) { String email = exp.getEmail(); if (!isEmpty(email)) { addresses.add(email); } }
protected String getUserEmail(String user) { Experimenter e = getQueryService().findByString(Experimenter.class, "omeName", user); if (e == null) { return null; } return e.getEmail(); }
@RolesAllowed("user") @Transactional(readOnly = false) public void notifyMembersOfShare(long shareId, String subject, String message, boolean html) { EventContext ec = getSecuritySystem().getEventContext(); Set<Experimenter> exps = getAllMembers(shareId); exps.add(getShare(shareId).getOwner()); Map<Experimenter, String> errors = new HashMap<Experimenter, String>(); for (final Experimenter e : exps) { if (e.getId() != ec.getCurrentUserId() && e.getEmail() != null && mailUtil.validateEmail(e.getEmail())) { try { mailUtil.sendEmail(e.getEmail(), subject, message, html, null, null); } catch (MailException me) { errors.put(e, me.getMessage()); } } } if (!errors.isEmpty()) { log.error(ServiceHandler.getResultsString(errors, null)); } }
return getLdap(); } else if (field.equals(EMAIL)) { return getEmail(); } else if (field.equals(CONFIG)) { return getConfig();
private void sendEmail(Experimenter e, String newPassword) { // Create a thread safe "copy" of the template message and customize it SimpleMailMessage msg = new SimpleMailMessage(this.templateMessage); msg.setSubject("OMERO - Reset password"); msg.setTo(e.getEmail()); msg.setText("Dear " + e.getFirstName() + " " + e.getLastName() + " (" + e.getOmeName() + ")" + " your new password is: " + newPassword); try { this.mailSender.send(msg); getBeanHelper().getLogger().info("sent new password for {} to {}", e.getOmeName(), e.getEmail()); } catch (Exception ex) { throw new RuntimeException( "Exception: " + ex.getMessage() + ". " + "Password was not changed because email could not be sent " + "to user:" + e.getOmeName() + ". Please turn on the debug " + "mode in omero.properties by the: omero.mail.debug=true"); } }
"ApiUsageException", ex.getMessage()); if (e.getEmail() == null) throw helper.cancel(new ERR(), null, "unknown-email", "ApiUsageException", String.format("User has no email address.")); else if (!e.getEmail().equals(email)) throw helper.cancel(new ERR(), null, "not-match", "ApiUsageException", mailUtil.sendEmail(sender, e.getEmail(), subject, body, false, null, null); log.info("sent new password for {} to {}", e.getOmeName(), e.getEmail()); } catch (MailException me) { log.error(me.getMessage());
public void runAsAdmin() { Experimenter e = iQuery.findByString(Experimenter.class, "omeName", name); if (e == null) { throw new AuthenticationException("Unknown user."); } else if (e.getEmail() == null) { throw new AuthenticationException( "User has no email address."); } else if (!e.getEmail().equals(email)) { throw new AuthenticationException( "Email address does not match."); } else if (passwordUtil.getDnById(e.getId())) { throw new AuthenticationException( "User is authenticated by LDAP server you cannot reset this password."); } else { final long systemGroupId = getSecurityRoles().getSystemGroupId(); for (final ExperimenterGroup group : e.linkedExperimenterGroupList()) { if (group.getId() == systemGroupId) { throw new ApiUsageException( "Cannot reset password of administrators. Have another administrator set the new password."); } } String passwd = passwordUtil.generateRandomPasswd(); sendEmail(e, passwd); // changeUserPassword checks adminOrPiOfUser // Skipping that. See #7327 _changePassword(e.getOmeName(), passwd); } } });
/** * @param experimenter */ private void copyAndSaveExperimenter(final Experimenter experimenter) { final Experimenter orig = userProxy(experimenter.getId()); final String origOmeName = orig.getOmeName(); final String newOmeName = experimenter.getOmeName(); if (!origOmeName.equals(newOmeName)) { final Roles roles = getSecurityRoles(); final Set<String> fixedExperimenterNames = ImmutableSet.of(roles.getRootName(), roles.getGuestName()); if (fixedExperimenterNames.contains(origOmeName)) { throw new ValidationException("cannot change name of special experimenter '" + origOmeName + "'"); } else if (fixedExperimenterNames.contains(newOmeName)) { throw new ValidationException("cannot change name to special experimenter '" + newOmeName + "'"); } } orig.setOmeName(newOmeName); orig.setEmail(experimenter.getEmail()); orig.setFirstName(experimenter.getFirstName()); orig.setMiddleName(experimenter.getMiddleName()); orig.setLastName(experimenter.getLastName()); orig.setInstitution(experimenter.getInstitution()); reallySafeSave(orig); }
@RolesAllowed("user") @Transactional(readOnly = false) public void updateSelf(@NotNull Experimenter e) { EventContext ec = getSecuritySystem().getEventContext(); final Experimenter self = getExperimenter(ec.getCurrentUserId()); self.setFirstName(e.getFirstName()); self.setMiddleName(e.getMiddleName()); self.setLastName(e.getLastName()); self.setEmail(e.getEmail()); self.setInstitution(e.getInstitution()); getSecuritySystem().runAsAdmin(new AdminAction() { public void runAsAdmin() { iUpdate.flush(); } }); getBeanHelper().getLogger().info( "Updated own user info: " + self.getOmeName()); }
protected Experimenter copyUser(Experimenter e) { if (e.getOmeName() == null) { throw new ValidationException("OmeName may not be null."); } Experimenter copy = new Experimenter(); copy.setOmeName(e.getOmeName()); copy.setFirstName(e.getFirstName()); copy.setMiddleName(e.getMiddleName()); copy.setLastName(e.getLastName()); copy.setEmail(e.getEmail()); copy.setInstitution(e.getInstitution()); copy.setLdap(e.getLdap()); copy.setConfig(e.getConfig()); if (e.getDetails() != null && e.getDetails().getPermissions() != null) { copy.getDetails().setPermissions(e.getDetails().getPermissions()); } // TODO make ShallowCopy-like which ignores collections and details. // if possible, values should be validated. i.e. iTypes should say what // is non-null return copy; }