A self hosted chat application with end-to-end encrypted messaging.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

53 lines
1.4 KiB

  1. package org.ros.chatto.logged;
  2. import javax.servlet.http.HttpSessionBindingEvent;
  3. import javax.servlet.http.HttpSessionBindingListener;
  4. import org.ros.chatto.model.UserSession;
  5. import org.ros.chatto.service.UserService;
  6. import lombok.Getter;
  7. import lombok.Setter;
  8. import lombok.extern.slf4j.Slf4j;
  9. @Getter
  10. @Setter
  11. @Slf4j
  12. public class UserLoggingSessionListener implements HttpSessionBindingListener {
  13. private final String username;
  14. private final UserService userService;
  15. public UserLoggingSessionListener(String username) {
  16. this.username = username;
  17. userService = BeanUtil.getBean(UserService.class);
  18. }
  19. @Override
  20. public void valueBound(HttpSessionBindingEvent event) {
  21. UserLoggingSessionListener user = (UserLoggingSessionListener) event
  22. .getValue();
  23. log.debug("Incrementing session count for user {}", user.getUsername());
  24. userService.incrementUserSession(user.getUsername());
  25. // log.trace("Username = {} with sessions = {}", userSession.getUser(),
  26. // userSession.getNumSessions());
  27. }
  28. @Override
  29. public void valueUnbound(HttpSessionBindingEvent event) {
  30. UserLoggingSessionListener user = (UserLoggingSessionListener) event
  31. .getValue();
  32. log.debug("Decrementing session count for user {}", user.getUsername());
  33. UserSession userSession = userService
  34. .decrementUserSession(user.getUsername());
  35. log.trace("Username = {} with sessions = {}", userSession.getUser(),
  36. userSession.getNumSessions());
  37. }
  38. }