mirror of
https://github.com/GSA/notifications-admin.git
synced 2026-02-25 21:00:47 -05:00
76 lines
2.2 KiB
Python
76 lines
2.2 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_remove_user_from_service_event(user_id, removed_by_id, service_id):
|
|
_send_event(
|
|
'remove_user_from_service',
|
|
user_id=user_id,
|
|
removed_by_id=removed_by_id,
|
|
service_id=service_id
|
|
)
|
|
|
|
|
|
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
|