diff --git a/plinth/__main__.py b/plinth/__main__.py index 6b9908040..3be807a30 100644 --- a/plinth/__main__.py +++ b/plinth/__main__.py @@ -214,7 +214,8 @@ def configure_django(): 'django.contrib.contenttypes', 'django.contrib.messages', 'stronghold', - 'plinth'] + 'plinth', + 'axes'] applications += module_loader.get_modules_to_load() sessions_directory = os.path.join(cfg.data_dir, 'sessions') diff --git a/plinth/modules/users/urls.py b/plinth/modules/users/urls.py index 497f5850f..9b150ebb8 100644 --- a/plinth/modules/users/urls.py +++ b/plinth/modules/users/urls.py @@ -20,12 +20,14 @@ URLs for the Users module from django.conf.urls import url from django.urls import reverse_lazy -from stronghold.decorators import public +from stronghold.decorators import public from plinth.utils import non_admin_view from plinth.modules.sso.views import SSOLoginView, SSOLogoutView, CaptchaLoginView from . import views +from axes.decorators import watch_login + urlpatterns = [ url(r'^sys/users/$', views.UserList.as_view(), name='index'), url(r'^sys/users/create/$', views.UserCreate.as_view(), name='create'), @@ -38,8 +40,11 @@ urlpatterns = [ url(r'^sys/users/(?P[\w.@+-]+)/change_password/$', non_admin_view(views.UserChangePassword.as_view()), name='change_password'), - # Add Django's login/logout urls - url(r'^accounts/login/$', public(SSOLoginView.as_view()), name='login'), + + # Authnz is handled by SSO + url(r'^accounts/login/$', + public(watch_login(SSOLoginView.as_view())), + name='login'), url(r'^accounts/logout/$', non_admin_view(SSOLogoutView.as_view()), {'next_page': reverse_lazy('index')},