protected void doPost()

in teamcity-invitations-plugin-server/src/main/java/org/jetbrains/teamcity/invitations/InvitationAdminController.java [112:177]


    protected void doPost(@NotNull final HttpServletRequest request, @NotNull final HttpServletResponse response, @NotNull final Element xmlResponse) {
        try {
            SProject project = teamCityCoreFacade.findProjectByExtId(request.getParameter("projectId"));
            if (project == null) {
                throw new ValidationException("projectId", "Project must be specified");
            }

            String token = request.getParameter("token");

            if (request.getParameter("saveInvitation") != null) {
                if (StringUtil.isEmptyOrSpaces(token)) {
                    //new
                    token = StringUtil.generateUniqueHash();
                    Invitation invitation = createFromRequest(token, project, request);
                    invitations.addInvitation(invitation);
                    xmlResponse.setAttribute("token", invitation.getToken());
                    xmlResponse.setAttribute("token", invitation.getToken());
                    ActionMessages.getOrCreateMessages(request).addRawMessage(MESSAGES_KEY,
                            "Invitation created. Copy and send the following link to the user you want to invite: " +
                                    "<span id=\"justCreatedInvitation\">" + invitationsController.getInvitationsPath() + "?token=" + invitation.getToken() + "<span/> " +
                                    "<span class=\"clipboard-btn tc-icon icon16 tc-icon_copy\" data-clipboard-action=\"copy\"data-clipboard-target=\"#justCreatedInvitation\"></span>");
                } else {
                    //edit
                    Invitation updated = createFromRequest(token, project, request);
                    Invitation current = invitations.getInvitation(token);
                    if (current != null) {
                        updated.setEnabled(current.isEnabled());
                        invitations.updateInvitation(updated, "Invitation '" + updated.getName() + "' updated.");
                        ActionMessages.getOrCreateMessages(request).addMessage(MESSAGES_KEY, "Invitation '" + updated.getName() + "' updated.");
                    }
                }

            } else if (request.getParameter("removeInvitation") != null && token != null) {
                //delete
                Invitation invitation = invitations.getInvitation(token);
                if (invitation != null && !invitation.isAvailableFor(SessionUser.getUser(request))) {
                    throw new AccessDeniedException(SessionUser.getUser(request), "You don't have permissions to remove invitation " + token);
                }
                Invitation deleted = invitations.removeInvitation(project, token);
                if (deleted != null) {
                    ActionMessages.getOrCreateMessages(request).addMessage(MESSAGES_KEY, "Invitation '" + deleted.getName() + "' removed.");
                } else {
                    ActionMessages.getOrCreateMessages(request).addMessage(MESSAGES_KEY, "Invitation '" + token + "' doesn't exist.");
                }
            } else if (request.getParameter("setEnabled") != null && token != null) {
                //disable
                Invitation invitation = invitations.getInvitation(token);
                if (invitation != null && !invitation.isAvailableFor(SessionUser.getUser(request))) {
                    throw new AccessDeniedException(SessionUser.getUser(request), "You don't have permissions to edit the invitation " + token);
                }
                if (invitation != null) {
                    Boolean enabled = Boolean.valueOf(request.getParameter("setEnabled"));
                    invitation.setEnabled(enabled);
                    String comment = enabled ? "Invitation '" + invitation.getName() + "' enabled." : "Invitation '" + invitation.getName() + "' disabled.";
                    invitations.updateInvitation(invitation, comment);
                    ActionMessages.getOrCreateMessages(request).addMessage(MESSAGES_KEY, comment);
                } else {
                    ActionMessages.getOrCreateMessages(request).addMessage(MESSAGES_KEY, "Invitation '" + token + "' doesn't exist.");
                }
            } else {
                Loggers.SERVER.warn("Unrecognized invitation request: " + WebUtil.getRequestDump(request));
            }
        } catch (ValidationException e) {
            e.getActionErrors().serialize(xmlResponse);
        }
    }