@Override
  protected void doGet(HttpServletRequest req, HttpServletResponse resp)
      throws ServletException, IOException {

    UserPermissionsBean userPermissionsBean =
        (UserPermissionsBean) req.getAttribute(AuthRequestAttribute.USER_PERMISSIONS.getName());

    if (userPermissionsBean.getViewSessions() && userPermissionsBean.getViewSessionPermissions())
      req.getRequestDispatcher("/WEB-INF/auth/session-permissions.jsp").forward(req, resp);
    else resp.sendRedirect("/auth/settings");
  }
  @Override
  protected void doPost(HttpServletRequest req, HttpServletResponse resp)
      throws ServletException, IOException {

    UserPermissionsBean userPermissionsBean =
        (UserPermissionsBean) req.getAttribute(AuthRequestAttribute.USER_PERMISSIONS.getName());

    if (userPermissionsBean.getViewSessions() && userPermissionsBean.getViewSessionPermissions()) {

      if (userPermissionsBean.getChangeSessionPermissions()) {
        long sessionPermissionsCode = 0;
        if (req.getParameter(HtmlVariable.VIEW_SESSIONS.getName()) != null)
          sessionPermissionsCode =
              sessionPermissionsCode + SessionPermissions.VIEW_SESSIONS.getCode();
        if (req.getParameter(HtmlVariable.DISCONNECT_SESSIONS.getName()) != null)
          sessionPermissionsCode =
              sessionPermissionsCode + SessionPermissions.DISCONNECT_SESSIONS.getCode();
        if (req.getParameter(HtmlVariable.VIEW_SESSION_PERMISSIONS.getName()) != null)
          sessionPermissionsCode =
              sessionPermissionsCode + SessionPermissions.VIEW_SESSION_PERMISSIONS.getCode();
        if (req.getParameter(HtmlVariable.CHANGE_SESSION_PERMISSIONS.getName()) != null)
          sessionPermissionsCode =
              sessionPermissionsCode + SessionPermissions.CHANGE_SESSION_PERMISSIONS.getCode();

        Error error = Error.NONE;
        UserBean userBean = (UserBean) req.getAttribute(AuthRequestAttribute.USER.getName());
        DatastoreService datastore = DatastoreServiceFactory.getDatastoreService();
        Transaction txn = datastore.beginTransaction(TransactionOptions.Builder.withXG(true));
        User user = UserFactory.getByKey(datastore, txn, userBean.getKey());
        UserPermissions userPermissions = null;
        if (user == null) error = Error.NON_EXISTENT_USER;
        else if ((userPermissions =
                PermissionsFactory.getUserPermissionsByUserId(datastore, txn, user.getUserId()))
            == null) error = Error.NO_PERMISSIONS;
        else
          try {
            userPermissions.setSessionPermissions(sessionPermissionsCode);
            PermissionsFactory.updateUserPermissions(datastore, txn, userPermissions);
            txn.commit();
            userPermissionsBean = new UserPermissionsBean(userPermissions);
            req.setAttribute(AuthRequestAttribute.USER_PERMISSIONS.getName(), userPermissionsBean);
          } catch (ConcurrentModificationException e) {
            error = Error.ERROR_IN_SESSION_PERMISSIONS;
          }

        if (error != Error.NONE && txn.isActive()) txn.rollback();

        if (userPermissionsBean.getViewSessions()
            && userPermissionsBean.getViewSessionPermissions()) {
          req.setAttribute(HtmlVariable.ERROR.getName(), error.toString());
          req.getRequestDispatcher("/WEB-INF/auth/session-permissions.jsp").forward(req, resp);
        } else resp.sendRedirect("/auth/settings");
      } else req.getRequestDispatcher("/WEB-INF/auth/session-permissions.jsp").forward(req, resp);
    } else resp.sendRedirect("/auth/settings");
  }