audit(major): AuditEntry -> Event
This commit is contained in:
		| @ -1,5 +1,5 @@ | |||||||
| """passbook URL Configuration""" | """passbook URL Configuration""" | ||||||
| from django.urls import include, path | from django.urls import path | ||||||
|  |  | ||||||
| from passbook.admin.views import (applications, audit, debug, factors, groups, | from passbook.admin.views import (applications, audit, debug, factors, groups, | ||||||
|                                   invitations, overview, policy, |                                   invitations, overview, policy, | ||||||
| @ -74,7 +74,7 @@ urlpatterns = [ | |||||||
|     path('group/<uuid:pk>/update/', groups.GroupUpdateView.as_view(), name='group-update'), |     path('group/<uuid:pk>/update/', groups.GroupUpdateView.as_view(), name='group-update'), | ||||||
|     path('group/<uuid:pk>/delete/', groups.GroupDeleteView.as_view(), name='group-delete'), |     path('group/<uuid:pk>/delete/', groups.GroupDeleteView.as_view(), name='group-delete'), | ||||||
|     # Audit Log |     # Audit Log | ||||||
|     path('audit/', audit.AuditEntryListView.as_view(), name='audit-log'), |     path('audit/', audit.EventListView.as_view(), name='audit-log'), | ||||||
|     # Groups |     # Groups | ||||||
|     path('groups/', groups.GroupListView.as_view(), name='groups'), |     path('groups/', groups.GroupListView.as_view(), name='groups'), | ||||||
|     # Debug |     # Debug | ||||||
|  | |||||||
| @ -1,18 +1,18 @@ | |||||||
| """passbook AuditEntry administration""" | """passbook Event administration""" | ||||||
| from django.views.generic import ListView | from django.views.generic import ListView | ||||||
| from guardian.mixins import PermissionListMixin | from guardian.mixins import PermissionListMixin | ||||||
|  |  | ||||||
| from passbook.audit.models import AuditEntry | from passbook.audit.models import Event | ||||||
|  |  | ||||||
|  |  | ||||||
| class AuditEntryListView(PermissionListMixin, ListView): | class EventListView(PermissionListMixin, ListView): | ||||||
|     """Show list of all invitations""" |     """Show list of all invitations""" | ||||||
|  |  | ||||||
|     model = AuditEntry |     model = Event | ||||||
|     template_name = 'administration/audit/list.html' |     template_name = 'administration/audit/list.html' | ||||||
|     permission_required = 'passbook_audit.view_auditentry' |     permission_required = 'passbook_audit.view_event' | ||||||
|     ordering = '-created' |     ordering = '-created' | ||||||
|     paginate_by = 10 |     paginate_by = 10 | ||||||
|  |  | ||||||
|     def get_queryset(self): |     def get_queryset(self): | ||||||
|         return AuditEntry.objects.all().order_by('-created') |         return Event.objects.all().order_by('-created') | ||||||
|  | |||||||
							
								
								
									
										19
									
								
								passbook/audit/migrations/0002_auto_20191028_0829.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								passbook/audit/migrations/0002_auto_20191028_0829.py
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,19 @@ | |||||||
|  | # Generated by Django 2.2.6 on 2019-10-28 08:29 | ||||||
|  |  | ||||||
|  | from django.conf import settings | ||||||
|  | from django.db import migrations | ||||||
|  |  | ||||||
|  |  | ||||||
|  | class Migration(migrations.Migration): | ||||||
|  |  | ||||||
|  |     dependencies = [ | ||||||
|  |         migrations.swappable_dependency(settings.AUTH_USER_MODEL), | ||||||
|  |         ('passbook_audit', '0001_initial'), | ||||||
|  |     ] | ||||||
|  |  | ||||||
|  |     operations = [ | ||||||
|  |         migrations.RenameModel( | ||||||
|  |             old_name='AuditEntry', | ||||||
|  |             new_name='Event', | ||||||
|  |         ), | ||||||
|  |     ] | ||||||
| @ -12,8 +12,8 @@ from passbook.lib.models import UUIDModel | |||||||
|  |  | ||||||
| LOGGER = get_logger() | LOGGER = get_logger() | ||||||
|  |  | ||||||
| class AuditEntry(UUIDModel): | class Event(UUIDModel): | ||||||
|     """An individual audit log entry""" |     """An individual audit log event""" | ||||||
|  |  | ||||||
|     ACTION_LOGIN = 'login' |     ACTION_LOGIN = 'login' | ||||||
|     ACTION_LOGIN_FAILED = 'login_failed' |     ACTION_LOGIN_FAILED = 'login_failed' | ||||||
| @ -46,7 +46,7 @@ class AuditEntry(UUIDModel): | |||||||
|  |  | ||||||
|     @staticmethod |     @staticmethod | ||||||
|     def create(action, request, **kwargs): |     def create(action, request, **kwargs): | ||||||
|         """Create AuditEntry from arguments""" |         """Create Event from arguments""" | ||||||
|         client_ip, _ = get_client_ip(request) |         client_ip, _ = get_client_ip(request) | ||||||
|         if not hasattr(request, 'user'): |         if not hasattr(request, 'user'): | ||||||
|             user = None |             user = None | ||||||
| @ -54,7 +54,7 @@ class AuditEntry(UUIDModel): | |||||||
|             user = request.user |             user = request.user | ||||||
|         if isinstance(user, AnonymousUser): |         if isinstance(user, AnonymousUser): | ||||||
|             user = kwargs.get('user', None) |             user = kwargs.get('user', None) | ||||||
|         entry = AuditEntry.objects.create( |         entry = Event.objects.create( | ||||||
|             action=action, |             action=action, | ||||||
|             user=user, |             user=user, | ||||||
|             # User 255.255.255.255 as fallback if IP cannot be determined |             # User 255.255.255.255 as fallback if IP cannot be determined | ||||||
|  | |||||||
| @ -2,7 +2,7 @@ | |||||||
| from django.contrib.auth.signals import user_logged_in, user_logged_out | from django.contrib.auth.signals import user_logged_in, user_logged_out | ||||||
| from django.dispatch import receiver | from django.dispatch import receiver | ||||||
|  |  | ||||||
| from passbook.audit.models import AuditEntry | from passbook.audit.models import Event | ||||||
| from passbook.core.signals import (invitation_created, invitation_used, | from passbook.core.signals import (invitation_created, invitation_used, | ||||||
|                                    user_signed_up) |                                    user_signed_up) | ||||||
|  |  | ||||||
| @ -10,26 +10,26 @@ from passbook.core.signals import (invitation_created, invitation_used, | |||||||
| @receiver(user_logged_in) | @receiver(user_logged_in) | ||||||
| def on_user_logged_in(sender, request, user, **kwargs): | def on_user_logged_in(sender, request, user, **kwargs): | ||||||
|     """Log successful login""" |     """Log successful login""" | ||||||
|     AuditEntry.create(AuditEntry.ACTION_LOGIN, request) |     Event.create(Event.ACTION_LOGIN, request) | ||||||
|  |  | ||||||
| @receiver(user_logged_out) | @receiver(user_logged_out) | ||||||
| def on_user_logged_out(sender, request, user, **kwargs): | def on_user_logged_out(sender, request, user, **kwargs): | ||||||
|     """Log successfully logout""" |     """Log successfully logout""" | ||||||
|     AuditEntry.create(AuditEntry.ACTION_LOGOUT, request) |     Event.create(Event.ACTION_LOGOUT, request) | ||||||
|  |  | ||||||
| @receiver(user_signed_up) | @receiver(user_signed_up) | ||||||
| def on_user_signed_up(sender, request, user, **kwargs): | def on_user_signed_up(sender, request, user, **kwargs): | ||||||
|     """Log successfully signed up""" |     """Log successfully signed up""" | ||||||
|     AuditEntry.create(AuditEntry.ACTION_SIGN_UP, request) |     Event.create(Event.ACTION_SIGN_UP, request) | ||||||
|  |  | ||||||
| @receiver(invitation_created) | @receiver(invitation_created) | ||||||
| def on_invitation_created(sender, request, invitation, **kwargs): | def on_invitation_created(sender, request, invitation, **kwargs): | ||||||
|     """Log Invitation creation""" |     """Log Invitation creation""" | ||||||
|     AuditEntry.create(AuditEntry.ACTION_INVITE_CREATED, request, |     Event.create(Event.ACTION_INVITE_CREATED, request, | ||||||
|                       invitation_uuid=invitation.uuid.hex) |                       invitation_uuid=invitation.uuid.hex) | ||||||
|  |  | ||||||
| @receiver(invitation_used) | @receiver(invitation_used) | ||||||
| def on_invitation_used(sender, request, invitation, **kwargs): | def on_invitation_used(sender, request, invitation, **kwargs): | ||||||
|     """Log Invitation usage""" |     """Log Invitation usage""" | ||||||
|     AuditEntry.create(AuditEntry.ACTION_INVITE_USED, request, |     Event.create(Event.ACTION_INVITE_USED, request, | ||||||
|                       invitation_uuid=invitation.uuid.hex) |                       invitation_uuid=invitation.uuid.hex) | ||||||
|  | |||||||
| @ -8,7 +8,7 @@ from django.utils.translation import ugettext as _ | |||||||
| from oauth2_provider.views.base import AuthorizationView | from oauth2_provider.views.base import AuthorizationView | ||||||
| from structlog import get_logger | from structlog import get_logger | ||||||
|  |  | ||||||
| from passbook.audit.models import AuditEntry | from passbook.audit.models import Event | ||||||
| from passbook.core.models import Application | from passbook.core.models import Application | ||||||
| from passbook.core.views.access import AccessMixin | from passbook.core.views.access import AccessMixin | ||||||
| from passbook.core.views.utils import LoadingView, PermissionDeniedView | from passbook.core.views.utils import LoadingView, PermissionDeniedView | ||||||
| @ -77,8 +77,8 @@ class PassbookAuthorizationView(AccessMixin, AuthorizationView): | |||||||
|  |  | ||||||
|     def form_valid(self, form): |     def form_valid(self, form): | ||||||
|         # User has clicked on "Authorize" |         # User has clicked on "Authorize" | ||||||
|         AuditEntry.create( |         Event.create( | ||||||
|             action=AuditEntry.ACTION_AUTHORIZE_APPLICATION, |             action=Event.ACTION_AUTHORIZE_APPLICATION, | ||||||
|             request=self.request, |             request=self.request, | ||||||
|             app=str(self._application)) |             app=str(self._application)) | ||||||
|         LOGGER.debug('user %s authorized %s', self.request.user, self._application) |         LOGGER.debug('user %s authorized %s', self.request.user, self._application) | ||||||
|  | |||||||
| @ -3,7 +3,7 @@ from django.contrib import messages | |||||||
| from django.shortcuts import redirect | from django.shortcuts import redirect | ||||||
| from structlog import get_logger | from structlog import get_logger | ||||||
|  |  | ||||||
| from passbook.audit.models import AuditEntry | from passbook.audit.models import Event | ||||||
| from passbook.core.models import Application | from passbook.core.models import Application | ||||||
| from passbook.policies.engine import PolicyEngine | from passbook.policies.engine import PolicyEngine | ||||||
|  |  | ||||||
| @ -28,8 +28,8 @@ def check_permissions(request, user, client): | |||||||
|             messages.error(request, policy_message) |             messages.error(request, policy_message) | ||||||
|         return redirect('passbook_providers_oauth:oauth2-permission-denied') |         return redirect('passbook_providers_oauth:oauth2-permission-denied') | ||||||
|  |  | ||||||
|     AuditEntry.create( |     Event.create( | ||||||
|         action=AuditEntry.ACTION_AUTHORIZE_APPLICATION, |         action=Event.ACTION_AUTHORIZE_APPLICATION, | ||||||
|         request=request, |         request=request, | ||||||
|         app=application.name, |         app=application.name, | ||||||
|         skipped_authorization=False) |         skipped_authorization=False) | ||||||
|  | |||||||
| @ -13,7 +13,7 @@ from django.views.decorators.csrf import csrf_exempt | |||||||
| from signxml.util import strip_pem_header | from signxml.util import strip_pem_header | ||||||
| from structlog import get_logger | from structlog import get_logger | ||||||
|  |  | ||||||
| from passbook.audit.models import AuditEntry | from passbook.audit.models import Event | ||||||
| from passbook.core.models import Application | from passbook.core.models import Application | ||||||
| from passbook.lib.mixins import CSRFExemptMixin | from passbook.lib.mixins import CSRFExemptMixin | ||||||
| from passbook.lib.utils.template import render_to_string | from passbook.lib.utils.template import render_to_string | ||||||
| @ -123,8 +123,8 @@ class LoginProcessView(AccessRequiredView): | |||||||
|         if self.provider.application.skip_authorization: |         if self.provider.application.skip_authorization: | ||||||
|             ctx = self.provider.processor.generate_response() |             ctx = self.provider.processor.generate_response() | ||||||
|             # Log Application Authorization |             # Log Application Authorization | ||||||
|             AuditEntry.create( |             Event.create( | ||||||
|                 action=AuditEntry.ACTION_AUTHORIZE_APPLICATION, |                 action=Event.ACTION_AUTHORIZE_APPLICATION, | ||||||
|                 request=request, |                 request=request, | ||||||
|                 app=self.provider.application.name, |                 app=self.provider.application.name, | ||||||
|                 skipped_authorization=True) |                 skipped_authorization=True) | ||||||
| @ -145,8 +145,8 @@ class LoginProcessView(AccessRequiredView): | |||||||
|         # Check if user has access |         # Check if user has access | ||||||
|         if request.POST.get('ACSUrl', None): |         if request.POST.get('ACSUrl', None): | ||||||
|             # User accepted request |             # User accepted request | ||||||
|             AuditEntry.create( |             Event.create( | ||||||
|                 action=AuditEntry.ACTION_AUTHORIZE_APPLICATION, |                 action=Event.ACTION_AUTHORIZE_APPLICATION, | ||||||
|                 request=request, |                 request=request, | ||||||
|                 app=self.provider.application.name, |                 app=self.provider.application.name, | ||||||
|                 skipped_authorization=False) |                 skipped_authorization=False) | ||||||
|  | |||||||
		Reference in New Issue
	
	Block a user
	 Langhammer, Jens
					Langhammer, Jens