@OnMessage
  public WebsocketMessageWrapper doLogin(WebsocketMessageWrapper<Customer> message) {
    Customer customer =
        loginBean.findCustomer(message.getData().getEmail(), message.getData().getPassword());
    if (customer == null) {
      throw WebSocketServerLogger.LOG.customerNotFoundException(
          message.getData().getEmail(), message.getSequenceId());
    }

    ApiToken apiToken = loginBean.findValidToken(customer);
    if (apiToken == null) {
      apiToken = loginBean.createToken(customer);
    } else {
      apiToken = loginBean.refreshToken(apiToken);
    }

    // loginBean.refreshToken(customer.getEmail(), customer.getPassword(), message.getSequenceId());

    WebsocketMessageWrapper<ApiToken> token = new WebsocketMessageWrapper<>();
    token.setType(WebsocketMessageType.CUSTOMER_API_TOKEN);
    token.setSequenceId(message.getSequenceId());
    token.setData(apiToken);

    return token;
  }