mirror of
https://github.com/ansible/awx.git
synced 2026-05-19 14:57:39 -02:30
Merge pull request #1383 from jakemcdermott/401-on-invalid-login
issue a 401 on invalid login
This commit is contained in:
@@ -66,14 +66,15 @@ class LoggedLoginView(auth_views.LoginView):
|
|||||||
original_user = getattr(request, 'user', None)
|
original_user = getattr(request, 'user', None)
|
||||||
ret = super(LoggedLoginView, self).post(request, *args, **kwargs)
|
ret = super(LoggedLoginView, self).post(request, *args, **kwargs)
|
||||||
current_user = getattr(request, 'user', None)
|
current_user = getattr(request, 'user', None)
|
||||||
|
|
||||||
if current_user and getattr(current_user, 'pk', None) and current_user != original_user:
|
if current_user and getattr(current_user, 'pk', None) and current_user != original_user:
|
||||||
logger.info("User {} logged in.".format(current_user.username))
|
logger.info("User {} logged in.".format(current_user.username))
|
||||||
if request.user.is_authenticated:
|
if request.user.is_authenticated:
|
||||||
return ret
|
return ret
|
||||||
else:
|
else:
|
||||||
ret.status = 401
|
ret.status_code = 401
|
||||||
return ret
|
return ret
|
||||||
|
|
||||||
|
|
||||||
class LoggedLogoutView(auth_views.LogoutView):
|
class LoggedLogoutView(auth_views.LogoutView):
|
||||||
|
|
||||||
|
|||||||
26
awx/main/tests/functional/api/test_auth.py
Normal file
26
awx/main/tests/functional/api/test_auth.py
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
import pytest
|
||||||
|
|
||||||
|
from django.contrib import auth
|
||||||
|
from django.test import Client
|
||||||
|
|
||||||
|
from rest_framework.test import APIRequestFactory
|
||||||
|
|
||||||
|
from awx.api.generics import LoggedLoginView
|
||||||
|
from awx.api.versioning import drf_reverse
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.django_db
|
||||||
|
def test_invalid_login():
|
||||||
|
anon = auth.get_user(Client())
|
||||||
|
url = drf_reverse('api:login')
|
||||||
|
|
||||||
|
factory = APIRequestFactory()
|
||||||
|
|
||||||
|
data = {'userame': 'invalid', 'password': 'invalid'}
|
||||||
|
|
||||||
|
request = factory.post(url, data)
|
||||||
|
request.user = anon
|
||||||
|
|
||||||
|
response = LoggedLoginView.as_view()(request)
|
||||||
|
|
||||||
|
assert response.status_code == 401
|
||||||
Reference in New Issue
Block a user