override fun doHandle()

in src/main/kotlin/jetbrains/buildServer/notification/slackNotifier/auth/TestAuthController.kt [36:65]


    override fun doHandle(request: HttpServletRequest, response: HttpServletResponse): ModelAndView {
        val code = request.getParameter("code")
        val clientId = request.session.getAttribute("slack.clientId") as? String?
                ?: return authResult(false, "Unexpected error: can't find client id in session")
        val clientSecret = request.session.getAttribute("slack.clientSecret") as? String?
                ?: return authResult(false, "Unexpected error: can't find client secret in session")

        val redirectUrl = WebUtil.getRootUrl(request) + PATH

        val oauthToken = slackApi.oauthAccess(
                clientId = clientId,
                clientSecret = clientSecret,
                code = code,
                redirectUrl = redirectUrl
        )

        if (!oauthToken.ok) {
            if (oauthToken.error == "bad_redirect_uri") {
                warnBadRedirectUriInfo(request)
            }
            return authResult(false, "Test authentication failed: ${oauthToken.error}")
        }

        val userIdentity = slackApi.usersIdentity(oauthToken.accessToken)
        if (!userIdentity.ok) {
            return authResult(false, "Unexpected error: ${userIdentity.error}")
        }

        return authResult(true, "You successfully signed in as ${userIdentity.user.displayName}")
    }