protected ModelAndView doHandle()

in teamcity-invitations-plugin-server/src/main/java/org/jetbrains/teamcity/invitations/InvitationsProceedController.java [42:74]


    protected ModelAndView doHandle(@NotNull HttpServletRequest request, @NotNull HttpServletResponse response) throws Exception {
        SUser user = SessionUser.getUser(request);

        Object tokenObj = request.getParameter("token");
        if (tokenObj != null) {
            String token = (String) tokenObj;

            if (UserFunctions.isGuestUser(user)) {
                redirectTo(request.getContextPath() + InvitationsLandingController.INVITATIONS_PATH + "?guestError=1&token=" + token, response);
                return null;
            }

            Invitation invitation = core.runAsSystem(() -> invitations.getInvitation(token));
            if (invitation == null) {
                Loggers.SERVER.warn("User accepted the invitation with token " + token + " but invitation doesn't exist anymore");
                return new ModelAndView(new RedirectView("/"));
            }
            if (!invitation.isEnabled()) {
                Loggers.SERVER.warn("User accepted the invitation with token " + token + " but invitation is disabled");
                return new ModelAndView(new RedirectView("/"));
            }
            if (invitation.getValidationError() != null) {
                Loggers.SERVER.warn("User accepted the invitation with token " + token + " but invitation is invalid: " + invitation.getValidationError());
                return new ModelAndView(new RedirectView("/"));
            }
            ModelAndView result = invitation.invitationAccepted(user, request, response);
            Loggers.ACTIVITIES.info("User " + user.describe(false) + " accepted the invitation " + invitation.describe(true) + ".");
            return result;
        } else {
            Loggers.SERVER.warn("User accepted the invitation with unknown token: " + WebUtil.getRequestDump(request));
            return new ModelAndView(new RedirectView("/"));
        }
    }