use of org.activityinfo.server.util.logging.LogException in project activityinfo by bedatadriven.
the class SignUpAddressExistsController method resetPassword.
@POST
@Produces(MediaType.TEXT_HTML)
@LogException(emailAlert = true)
@Transactional
public Viewable resetPassword(@FormParam("email") String email) {
try {
User user = userDAO.get().findUserByEmail(email);
user.setChangePasswordKey(SecureTokenGenerator.generate());
user.setDateChangePasswordKeyIssued(new Date());
mailer.send(new ResetPasswordMessage(user));
return new SignUpAddressExistsPageModel(email).asEmailSent();
} catch (NoResultException e) {
return new SignUpAddressExistsPageModel().asLoginError();
} catch (Exception e) {
LOGGER.log(Level.SEVERE, "Failed to send password reset email", e);
return new SignUpAddressExistsPageModel().asEmailError();
}
}
use of org.activityinfo.server.util.logging.LogException in project activityinfo by bedatadriven.
the class SignUpController method signUp.
@POST
@Produces(MediaType.TEXT_HTML)
@LogException(emailAlert = true)
@Transactional
public Response signUp(@FormParam("name") String name, @FormParam("organization") String organization, @FormParam("jobtitle") String jobtitle, @FormParam("email") String email, @FormParam("locale") String locale) {
LOGGER.info("New user signing up! [name: " + name + ", email: " + email + ", locale: " + locale + ", organization: " + organization + ", job title: " + jobtitle + "]");
if (!domainProvider.get().isSignUpAllowed()) {
LOGGER.severe("Blocked attempt to signup via " + domainProvider.get().getHost());
return Response.status(Status.FORBIDDEN).build();
}
// checking parameter values
try {
checkParam(name, true);
checkParam(organization, false);
checkParam(jobtitle, false);
checkParam(email, true);
checkParam(locale, true);
} catch (IllegalArgumentException e) {
LOGGER.log(Level.INFO, "User " + name + " (" + email + ") failed to sign up", e);
return Response.ok(SignUpPageModel.formErrorModel().set(email, name, organization, jobtitle, locale).asViewable()).build();
}
try {
// check duplicate email
if (userDAO.get().doesUserExist(email)) {
return Response.ok(new SignUpAddressExistsPageModel(email).asViewable()).type(MediaType.TEXT_HTML).build();
}
// persist new user
User user = UserDAOImpl.createNewUser(email, name, organization, jobtitle, locale);
userDAO.get().persist(user);
// send confirmation email
mailer.send(new SignUpConfirmationMessage(user));
// return to page with positive result
return Response.seeOther(new URI("/signUp/sent")).build();
} catch (Exception e) {
LOGGER.log(Level.SEVERE, "User " + name + " (" + email + ") failed to sign up", e);
entityManager.getTransaction().rollback();
return Response.ok(SignUpPageModel.genericErrorModel().set(email, name, organization, jobtitle, locale).asViewable()).build();
}
}
use of org.activityinfo.server.util.logging.LogException in project activityinfo by bedatadriven.
the class SmtpMailSender method send.
@Override
@LogException
public void send(Message message) {
try {
Properties props = new Properties();
Session session = Session.getDefaultInstance(props, null);
MimeMessage mimeMessage = new MimeMessage(session);
mimeMessage.setSubject(message.getSubject(), Charsets.UTF_8.name());
mimeMessage.addRecipients(RecipientType.TO, toArray(message.getTo()));
mimeMessage.addRecipients(RecipientType.BCC, toArray(message.getBcc()));
mimeMessage.setFrom(new InternetAddress(configuration.getProperty("smtp.from", "activityinfo@configure-me.com"), configuration.getProperty("smtp.from.name", "ActivityInfo")));
if (message.getReplyTo() != null) {
mimeMessage.setReplyTo(new Address[] { message.getReplyTo() });
}
String body;
if (message.hasHtmlBody()) {
body = message.getHtmlBody();
mimeMessage.setDataHandler(new DataHandler(new HTMLDataSource(body)));
} else {
body = message.getTextBody();
mimeMessage.setText(body, Charsets.UTF_8.name());
}
LOGGER.finest("message to " + message.getTo() + ":\n" + body);
if (!message.getAttachments().isEmpty()) {
Multipart multipart = new MimeMultipart();
for (MessageAttachment attachment : message.getAttachments()) {
MimeBodyPart part = new MimeBodyPart();
part.setFileName(attachment.getFilename());
DataSource src = new ByteArrayDataSource(attachment.getContent(), attachment.getContentType());
part.setDataHandler(new DataHandler(src));
multipart.addBodyPart(part);
}
mimeMessage.setContent(multipart);
}
mimeMessage.saveChanges();
Transport.send(mimeMessage);
} catch (MessagingException e) {
throw new RuntimeException(e);
} catch (UnsupportedEncodingException e) {
throw new RuntimeException(e);
}
}
use of org.activityinfo.server.util.logging.LogException in project activityinfo by bedatadriven.
the class CommandServlet method handleCommands.
/**
* Publicly visible for testing *
*/
@LogException
public List<CommandResult> handleCommands(List<Command> commands) {
applyUserFilters();
List<CommandResult> results = new ArrayList<CommandResult>();
for (Command command : commands) {
LOGGER.log(Level.INFO, authProvider.get().getEmail() + ": " + command.getClass().getSimpleName());
try {
results.add(handleCommand(command));
} catch (CommandException e) {
results.add(e);
}
}
return results;
}
use of org.activityinfo.server.util.logging.LogException in project activityinfo by bedatadriven.
the class CommandServlet method handleCommand.
@LogException(emailAlert = true)
protected CommandResult handleCommand(Command command) throws CommandException {
RemoteExecutionContext context = null;
try {
long timeStart = System.currentTimeMillis();
context = new RemoteExecutionContext(injector);
CommandResult result = context.startExecute(command);
long timeElapsed = System.currentTimeMillis() - timeStart;
if (timeElapsed > 1000) {
LOGGER.warning("Command " + command.toString() + " completed in " + timeElapsed + "ms");
}
return result;
} catch (Exception e) {
throw new CommandException(command, context, e);
}
}
Aggregations