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): | ... | ... |