diff --git a/log/decorators.py b/log/decorators.py index 0f55aa2..70a3af8 100644 --- a/log/decorators.py +++ b/log/decorators.py @@ -10,17 +10,25 @@ def log_decorator(log_component = '', log_action = '', log_resource = ''): def _log_decorator(view_function): def _decorator(request, *args, **kwargs): + user = None + + if request.user.is_authenticated: + user = request.user response = view_function(request, *args, **kwargs) - if request.user.is_authenticated: - + log_context = {} + + if hasattr(request, 'log_context'): + log_context = request.log_context + + if user: log = Log() - log.user = str(request.user) - log.user_id = request.user.id - log.user_email = request.user.email + log.user = str(user) + log.user_id = user.id + log.user_email = user.email log.component = log_component - log.context = request.log_context + log.context = log_context log.action = log_action log.resource = log_resource @@ -55,9 +63,15 @@ def log_decorator_ajax(log_component = '', log_action = '', log_resource = ''): response = view_function(request, *args, **kwargs) + log_context = {} + + if hasattr(request, 'log_context'): + log_context = request.log_context + log = Log.objects.latest('id') - log.context = request.log_context + log.context = log_context log.save() + elif view_action == 'close': if request.user.is_authenticated: log = get_object_or_404(Log, id = request.GET.get('log_id')) diff --git a/users/urls.py b/users/urls.py index 6e190b7..180aceb 100644 --- a/users/urls.py +++ b/users/urls.py @@ -5,7 +5,7 @@ from . import views urlpatterns = [ url(r'^login/$', views.login, name='login'), - url(r'^logout/$', auth_views.logout, {'next_page': 'users:login'}, name='logout'), + url(r'^logout/$', views.logout, {'next_page': 'users:login'}, name='logout'), url(r'^signup/$', views.RegisterUser.as_view(), name = 'signup'), url(r'^forgot_password/$', views.ForgotPassword.as_view(), name = 'forgot_pass'), url(r'^reset_password_confirm/(?P[0-9A-Za-z]+)-(?P.+)/$', views.PasswordResetConfirmView.as_view(), name = 'reset_password_confirm'), diff --git a/users/views.py b/users/views.py index 04a2a80..b63050c 100644 --- a/users/views.py +++ b/users/views.py @@ -1,7 +1,7 @@ from django.shortcuts import get_object_or_404, redirect, render from django.views import generic from django.contrib import messages -from django.contrib.auth import authenticate, login as login_user +from django.contrib.auth import authenticate, login as login_user, logout as logout_user from django.contrib.auth.mixins import LoginRequiredMixin from django.core.urlresolvers import reverse, reverse_lazy from django.utils.translation import ugettext_lazy as _ @@ -498,8 +498,6 @@ def login(request): next_url = request.GET.get('next', None) - request.log_context = {} - if next_url: return redirect(next_url) @@ -514,6 +512,14 @@ def login(request): return render(request, "users/login.html", context) +@log_decorator('user', 'logout', 'system') +def logout(request, next_page = None): + logout_user(request) + + if next_page: + return redirect(next_page) + + return redirect(reverse('users:login')) # API VIEWS class UserViewSet(viewsets.ModelViewSet): -- libgit2 0.21.2