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 | 10 | def _log_decorator(view_function): |
11 | 11 | |
12 | 12 | def _decorator(request, *args, **kwargs): |
13 | + user = None | |
14 | + | |
15 | + if request.user.is_authenticated: | |
16 | + user = request.user | |
13 | 17 | |
14 | 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 | 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 | 30 | log.component = log_component |
23 | - log.context = request.log_context | |
31 | + log.context = log_context | |
24 | 32 | log.action = log_action |
25 | 33 | log.resource = log_resource |
26 | 34 | |
... | ... | @@ -55,9 +63,15 @@ def log_decorator_ajax(log_component = '', log_action = '', log_resource = ''): |
55 | 63 | |
56 | 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 | 71 | log = Log.objects.latest('id') |
59 | - log.context = request.log_context | |
72 | + log.context = log_context | |
60 | 73 | log.save() |
74 | + | |
61 | 75 | elif view_action == 'close': |
62 | 76 | if request.user.is_authenticated: |
63 | 77 | log = get_object_or_404(Log, id = request.GET.get('log_id')) | ... | ... |
users/urls.py
... | ... | @@ -5,7 +5,7 @@ from . import views |
5 | 5 | |
6 | 6 | urlpatterns = [ |
7 | 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 | 9 | url(r'^signup/$', views.RegisterUser.as_view(), name = 'signup'), |
10 | 10 | url(r'^forgot_password/$', views.ForgotPassword.as_view(), name = 'forgot_pass'), |
11 | 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 | 1 | from django.shortcuts import get_object_or_404, redirect, render |
2 | 2 | from django.views import generic |
3 | 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 | 5 | from django.contrib.auth.mixins import LoginRequiredMixin |
6 | 6 | from django.core.urlresolvers import reverse, reverse_lazy |
7 | 7 | from django.utils.translation import ugettext_lazy as _ |
... | ... | @@ -498,8 +498,6 @@ def login(request): |
498 | 498 | |
499 | 499 | next_url = request.GET.get('next', None) |
500 | 500 | |
501 | - request.log_context = {} | |
502 | - | |
503 | 501 | if next_url: |
504 | 502 | return redirect(next_url) |
505 | 503 | |
... | ... | @@ -514,6 +512,14 @@ def login(request): |
514 | 512 | |
515 | 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 | 524 | # API VIEWS |
519 | 525 | class UserViewSet(viewsets.ModelViewSet): | ... | ... |