Co-authored-by: Eve832 <eve.meelan@grafana.com>
Co-authored-by: Francisco Montes de Oca <nevermind89x@gmail.com>
Co-authored-by: Ildar Iskhakov <ildar.iskhakov@grafana.com>
Co-authored-by: Innokentii Konstantinov <innokenty.konstantinov@grafana.com>
Co-authored-by: Julia <ferril.darkdiver@gmail.com>
Co-authored-by: maskin25 <kengurek@gmail.com>
Co-authored-by: Matias Bordese <mbordese@gmail.com>
Co-authored-by: Matvey Kukuy <motakuk@gmail.com>
Co-authored-by: Michael Derynck <michael.derynck@grafana.com>
Co-authored-by: Richard Hartmann <richih@richih.org>
Co-authored-by: Robby Milo <robbymilo@fastmail.com>
Co-authored-by: Timur Olzhabayev <timur.olzhabayev@grafana.com>
Co-authored-by: Vadim Stepanov <vadimkerr@gmail.com>
Co-authored-by: Yulia Shanyrova <yulia.shanyrova@grafana.com>
28 lines
1.4 KiB
Python
28 lines
1.4 KiB
Python
from urllib.parse import urljoin
|
|
|
|
from django.http import HttpResponse
|
|
from django.shortcuts import redirect
|
|
from rest_framework import status
|
|
from social_core import exceptions
|
|
from social_django.middleware import SocialAuthExceptionMiddleware
|
|
|
|
from common.constants.slack_auth import REDIRECT_AFTER_SLACK_INSTALL, SLACK_AUTH_FAILED
|
|
|
|
|
|
class SocialAuthAuthCanceledExceptionMiddleware(SocialAuthExceptionMiddleware):
|
|
def process_exception(self, request, exception):
|
|
if isinstance(exception, exceptions.AuthCanceled):
|
|
# if user canceled authentication, redirect them to the previous page using the same link
|
|
# as we used to redirect after auth/install
|
|
url_to_redirect = urljoin(request.user.organization.grafana_url, "/a/grafana-oncall-app/?page=chat-ops")
|
|
return redirect(url_to_redirect)
|
|
elif isinstance(exception, exceptions.AuthFailed):
|
|
# if authentication was failed, redirect user to the plugin page using the same link
|
|
# as we used to redirect after auth/install with error flag
|
|
url_to_redirect = urljoin(
|
|
request.user.organization.grafana_url,
|
|
f"/a/grafana-oncall-app/?page=chat-ops&slack_error={SLACK_AUTH_FAILED}",
|
|
)
|
|
return redirect(url_to_redirect)
|
|
elif isinstance(exception, KeyError) and REDIRECT_AFTER_SLACK_INSTALL in exception.args:
|
|
return HttpResponse(status=status.HTTP_401_UNAUTHORIZED)
|