Commit 3d6652988068b8f765a794ba24b8d44ec3f5e611
1 parent
027410af
Exists in
master
and in
3 other branches
Adding user logout log
Showing
3 changed files
with
31 additions
and
11 deletions
Show diff stats
log/decorators.py
@@ -10,17 +10,25 @@ def log_decorator(log_component = '', log_action = '', log_resource = ''): | @@ -10,17 +10,25 @@ def log_decorator(log_component = '', log_action = '', log_resource = ''): | ||
10 | def _log_decorator(view_function): | 10 | def _log_decorator(view_function): |
11 | 11 | ||
12 | def _decorator(request, *args, **kwargs): | 12 | def _decorator(request, *args, **kwargs): |
13 | + user = None | ||
14 | + | ||
15 | + if request.user.is_authenticated: | ||
16 | + user = request.user | ||
13 | 17 | ||
14 | response = view_function(request, *args, **kwargs) | 18 | response = view_function(request, *args, **kwargs) |
15 | 19 | ||
16 | - if request.user.is_authenticated: | ||
17 | - | 20 | + log_context = {} |
21 | + | ||
22 | + if hasattr(request, 'log_context'): | ||
23 | + log_context = request.log_context | ||
24 | + | ||
25 | + if user: | ||
18 | log = Log() | 26 | log = Log() |
19 | - log.user = str(request.user) | ||
20 | - log.user_id = request.user.id | ||
21 | - log.user_email = request.user.email | 27 | + log.user = str(user) |
28 | + log.user_id = user.id | ||
29 | + log.user_email = user.email | ||
22 | log.component = log_component | 30 | log.component = log_component |
23 | - log.context = request.log_context | 31 | + log.context = log_context |
24 | log.action = log_action | 32 | log.action = log_action |
25 | log.resource = log_resource | 33 | log.resource = log_resource |
26 | 34 | ||
@@ -55,9 +63,15 @@ def log_decorator_ajax(log_component = '', log_action = '', log_resource = ''): | @@ -55,9 +63,15 @@ def log_decorator_ajax(log_component = '', log_action = '', log_resource = ''): | ||
55 | 63 | ||
56 | response = view_function(request, *args, **kwargs) | 64 | response = view_function(request, *args, **kwargs) |
57 | 65 | ||
66 | + log_context = {} | ||
67 | + | ||
68 | + if hasattr(request, 'log_context'): | ||
69 | + log_context = request.log_context | ||
70 | + | ||
58 | log = Log.objects.latest('id') | 71 | log = Log.objects.latest('id') |
59 | - log.context = request.log_context | 72 | + log.context = log_context |
60 | log.save() | 73 | log.save() |
74 | + | ||
61 | elif view_action == 'close': | 75 | elif view_action == 'close': |
62 | if request.user.is_authenticated: | 76 | if request.user.is_authenticated: |
63 | log = get_object_or_404(Log, id = request.GET.get('log_id')) | 77 | log = get_object_or_404(Log, id = request.GET.get('log_id')) |
users/urls.py
@@ -5,7 +5,7 @@ from . import views | @@ -5,7 +5,7 @@ from . import views | ||
5 | 5 | ||
6 | urlpatterns = [ | 6 | urlpatterns = [ |
7 | url(r'^login/$', views.login, name='login'), | 7 | url(r'^login/$', views.login, name='login'), |
8 | - url(r'^logout/$', auth_views.logout, {'next_page': 'users:login'}, name='logout'), | 8 | + url(r'^logout/$', views.logout, {'next_page': 'users:login'}, name='logout'), |
9 | url(r'^signup/$', views.RegisterUser.as_view(), name = 'signup'), | 9 | url(r'^signup/$', views.RegisterUser.as_view(), name = 'signup'), |
10 | url(r'^forgot_password/$', views.ForgotPassword.as_view(), name = 'forgot_pass'), | 10 | url(r'^forgot_password/$', views.ForgotPassword.as_view(), name = 'forgot_pass'), |
11 | url(r'^reset_password_confirm/(?P<uidb64>[0-9A-Za-z]+)-(?P<token>.+)/$', views.PasswordResetConfirmView.as_view(), name = 'reset_password_confirm'), | 11 | url(r'^reset_password_confirm/(?P<uidb64>[0-9A-Za-z]+)-(?P<token>.+)/$', views.PasswordResetConfirmView.as_view(), name = 'reset_password_confirm'), |
users/views.py
1 | from django.shortcuts import get_object_or_404, redirect, render | 1 | from django.shortcuts import get_object_or_404, redirect, render |
2 | from django.views import generic | 2 | from django.views import generic |
3 | from django.contrib import messages | 3 | from django.contrib import messages |
4 | -from django.contrib.auth import authenticate, login as login_user | 4 | +from django.contrib.auth import authenticate, login as login_user, logout as logout_user |
5 | from django.contrib.auth.mixins import LoginRequiredMixin | 5 | from django.contrib.auth.mixins import LoginRequiredMixin |
6 | from django.core.urlresolvers import reverse, reverse_lazy | 6 | from django.core.urlresolvers import reverse, reverse_lazy |
7 | from django.utils.translation import ugettext_lazy as _ | 7 | from django.utils.translation import ugettext_lazy as _ |
@@ -498,8 +498,6 @@ def login(request): | @@ -498,8 +498,6 @@ def login(request): | ||
498 | 498 | ||
499 | next_url = request.GET.get('next', None) | 499 | next_url = request.GET.get('next', None) |
500 | 500 | ||
501 | - request.log_context = {} | ||
502 | - | ||
503 | if next_url: | 501 | if next_url: |
504 | return redirect(next_url) | 502 | return redirect(next_url) |
505 | 503 | ||
@@ -514,6 +512,14 @@ def login(request): | @@ -514,6 +512,14 @@ def login(request): | ||
514 | 512 | ||
515 | return render(request, "users/login.html", context) | 513 | return render(request, "users/login.html", context) |
516 | 514 | ||
515 | +@log_decorator('user', 'logout', 'system') | ||
516 | +def logout(request, next_page = None): | ||
517 | + logout_user(request) | ||
518 | + | ||
519 | + if next_page: | ||
520 | + return redirect(next_page) | ||
521 | + | ||
522 | + return redirect(reverse('users:login')) | ||
517 | 523 | ||
518 | # API VIEWS | 524 | # API VIEWS |
519 | class UserViewSet(viewsets.ModelViewSet): | 525 | class UserViewSet(viewsets.ModelViewSet): |