def log_user_logged_in(sender, request, user, **kwargs): # pylint: disable=unused-argument """ When a user logs in, update the access log """ username = user.get_username() ip_address = get_client_ip(request) user_agent = request.META.get('HTTP_USER_AGENT', '<unknown>')[:255] path_info = request.META.get('PATH_INFO', '<unknown>')[:255] http_accept = request.META.get('HTTP_ACCEPT', '<unknown>')[:1025] log.info('AXES: Successful login by %s.', get_client_str(username, ip_address, user_agent, path_info)) if not settings.AXES_DISABLE_SUCCESS_ACCESS_LOG: AccessLog.objects.create( user_agent=user_agent, ip_address=ip_address, username=username, http_accept=http_accept, path_info=path_info, trusted=True, ) if settings.AXES_RESET_ON_SUCCESS: count = reset_user_attempts(request) log.info('AXES: Deleted %d failed login attempts by %s.', count, get_client_str(username, ip_address, user_agent, path_info))
def user_logged_in(self, sender, request: AxesHttpRequest, user, **kwargs): # pylint: disable=unused-argument """ When user logs in, update the AccessLog related to the user. """ # 1. database query: Clean up expired user attempts from the database clean_expired_user_attempts(request.axes_attempt_time) username = user.get_username() credentials = get_credentials(username) client_str = get_client_str(username, request.axes_ip_address, request.axes_user_agent, request.axes_path_info) log.info('AXES: Successful login by %s.', client_str) if not settings.AXES_DISABLE_SUCCESS_ACCESS_LOG: # 2. database query: Insert new access logs with login time AccessLog.objects.create( username=username, ip_address=request.axes_ip_address, user_agent=request.axes_user_agent, http_accept=request.axes_http_accept, path_info=request.axes_path_info, attempt_time=request.axes_attempt_time, ) if settings.AXES_RESET_ON_SUCCESS: # 3. database query: Reset failed attempts for the logging in user count = reset_user_attempts(request, credentials) log.info( 'AXES: Deleted %d failed login attempts by %s from database.', count, client_str)
def user_logged_in(self, sender, request, user, **kwargs): # pylint: disable=unused-argument """ When user logs in, update the AccessLog related to the user. """ username = user.get_username() credentials = get_credentials(username) ip_address = get_client_ip(request) user_agent = request.META.get('HTTP_USER_AGENT', '<unknown>')[:255] path_info = request.META.get('PATH_INFO', '<unknown>')[:255] http_accept = request.META.get('HTTP_ACCEPT', '<unknown>')[:1025] log.info( 'AXES: Successful login by %s.', get_client_str(username, ip_address, user_agent, path_info), ) if not settings.AXES_DISABLE_SUCCESS_ACCESS_LOG: AccessLog.objects.create( user_agent=user_agent, ip_address=ip_address, username=username, http_accept=http_accept, path_info=path_info, trusted=True, ) if settings.AXES_RESET_ON_SUCCESS: count = reset_user_attempts(request, credentials) log.info( 'AXES: Deleted %d failed login attempts by %s.', count, get_client_str(username, ip_address, user_agent, path_info), )
def user_logged_in(self, sender, request: AxesHttpRequest, user, **kwargs): # pylint: disable=unused-argument """ When user logs in, update the AccessLog related to the user. """ if not hasattr(request, 'axes_attempt_time'): log.error('AXES: AxesDatabaseHandler.user_logged_in needs a valid AxesHttpRequest object.') return # 1. database query: Clean up expired user attempts from the database clean_expired_user_attempts(request.axes_attempt_time) username = user.get_username() credentials = get_credentials(username) client_str = get_client_str(username, request.axes_ip_address, request.axes_user_agent, request.axes_path_info) log.info('AXES: Successful login by %s.', client_str) if not settings.AXES_DISABLE_SUCCESS_ACCESS_LOG: # 2. database query: Insert new access logs with login time AccessLog.objects.create( username=username, ip_address=request.axes_ip_address, user_agent=request.axes_user_agent, http_accept=request.axes_http_accept, path_info=request.axes_path_info, attempt_time=request.axes_attempt_time, ) if settings.AXES_RESET_ON_SUCCESS: # 3. database query: Reset failed attempts for the logging in user count = reset_user_attempts(request, credentials) log.info('AXES: Deleted %d failed login attempts by %s from database.', count, client_str)
def reset_attempts(self, *args): uidb64 = super().kwargs['uidb64'] user = super().get_user(uidb64) reset_user_attempts(user) print(f"resetting now user {user}...") return self.reset_attempts()