mirror of
https://github.com/GSA/notifications-admin.git
synced 2025-12-11 23:53:52 -05:00
This adds a new type of event, 'archive_user', which stores the id of the archived user and the id of the user who is doing the archiving.
67 lines
2.0 KiB
Python
67 lines
2.0 KiB
Python
from flask import request
|
|
|
|
from app import events_api_client
|
|
|
|
|
|
def on_user_logged_in(_sender, user):
|
|
_send_event('sucessful_login', user_id=user.id)
|
|
|
|
|
|
def create_email_change_event(user_id, updated_by_id, original_email_address, new_email_address):
|
|
_send_event(
|
|
'update_user_email',
|
|
user_id=user_id,
|
|
updated_by_id=updated_by_id,
|
|
original_email_address=original_email_address,
|
|
new_email_address=new_email_address)
|
|
|
|
|
|
def create_mobile_number_change_event(user_id, updated_by_id, original_mobile_number, new_mobile_number):
|
|
_send_event(
|
|
'update_user_mobile_number',
|
|
user_id=user_id,
|
|
updated_by_id=updated_by_id,
|
|
original_mobile_number=original_mobile_number,
|
|
new_mobile_number=new_mobile_number)
|
|
|
|
|
|
def create_archive_user_event(user_id, archived_by_id):
|
|
_send_event(
|
|
'archive_user',
|
|
user_id=user_id,
|
|
archived_by_id=archived_by_id)
|
|
|
|
|
|
def _send_event(event_type, **kwargs):
|
|
event_data = _construct_event_data(request)
|
|
event_data.update(kwargs)
|
|
|
|
events_api_client.create_event(event_type, event_data)
|
|
|
|
|
|
def _construct_event_data(request):
|
|
return {'ip_address': _get_remote_addr(request),
|
|
'browser_fingerprint': _get_browser_fingerprint(request)}
|
|
|
|
|
|
# This might not be totally correct depending on proxy setup
|
|
def _get_remote_addr(request):
|
|
if request.headers.getlist("X-Forwarded-For"):
|
|
return request.headers.getlist("X-Forwarded-For")[0]
|
|
else:
|
|
return request.remote_addr
|
|
|
|
|
|
def _get_browser_fingerprint(request):
|
|
browser = request.user_agent.browser
|
|
version = request.user_agent.version
|
|
platform = request.user_agent.platform
|
|
user_agent_string = request.user_agent.string
|
|
# at some point this may be hashed?
|
|
finger_print = {'browser': browser,
|
|
'platform': platform,
|
|
'version': version,
|
|
'user_agent_string': user_agent_string}
|
|
|
|
return finger_print
|