From 95a39cfd318f663c66f96424c35dcee9e1cbfb61 Mon Sep 17 00:00:00 2001 From: Cliff Hill Date: Wed, 6 Nov 2024 16:04:18 -0500 Subject: [PATCH] Trying to get invites to flow correctly. Signed-off-by: Cliff Hill --- app/main/views/invites.py | 10 ++++------ app/main/views/register.py | 20 ++++++++++---------- app/notify_client/invite_api_client.py | 11 +---------- 3 files changed, 15 insertions(+), 26 deletions(-) diff --git a/app/main/views/invites.py b/app/main/views/invites.py index 49fb66f88..07f6b3ac8 100644 --- a/app/main/views/invites.py +++ b/app/main/views/invites.py @@ -17,14 +17,12 @@ def accept_invite(token): and current_user.email_address.lower() != invited_user.email_address.lower() ): message = Markup( - """ - You’re signed in as {}. + f""" + You’re signed in as {current_user.email_address}. This invite is for another email address. - Sign out + Sign out and click the link again to accept this invite. - """.format( - current_user.email_address, url_for("main.sign_out") - ) + """ ) flash(message=message) diff --git a/app/main/views/register.py b/app/main/views/register.py index d5188e5ce..1762cb285 100644 --- a/app/main/views/register.py +++ b/app/main/views/register.py @@ -173,7 +173,9 @@ def set_up_your_profile(): user_email = redis_client.get(f"user_email-{state}") user_uuid = redis_client.get(f"user_uuid-{state}") - if user_email is None or user_uuid is None: # invite path + new_user = user_email is None or user_uuid is None + + if new_user: # invite path access_token = sign_in._get_access_token(code) debug_msg("Got the access token for login.gov") @@ -184,7 +186,7 @@ def set_up_your_profile(): invite_data = redis_client.get(f"invitedata-{state}") invite_data = json.loads(invite_data) debug_msg(f"final state {invite_data}") - invited_user_id = invite_data["user_id"] + invited_user_id = invite_data["id"] invited_user_email_address = get_invited_user_email_address(invited_user_id) debug_msg(f"email address from the invite_date is {invited_user_email_address}") check_invited_user_email_address_matches_expected( @@ -193,7 +195,7 @@ def set_up_your_profile(): invited_user_accept_invite(invited_user_id) debug_msg( - f"accepted invite user {invited_user_email_address} to service {invite_data['service_id']}" + f"accepted invite user {invited_user_email_address} to service {invite_data['service']}" ) # We need to avoid taking a second trip through the login.gov code because we cannot pull the # access token twice. So once we retrieve these values, let's park them in redis for 15 minutes @@ -203,7 +205,7 @@ def set_up_your_profile(): form = SetupUserProfileForm() - if form.validate_on_submit(): + if form.validate_on_submit() and not new_user: invite_data, user_email, user_uuid, invited_user_email_address = ( get_invite_data_from_redis(state) ) @@ -229,17 +231,15 @@ def set_up_your_profile(): debug_msg("activated user") usr = User.from_id(user["id"]) usr.add_to_service( - invite_data["service_id"], + invite_data["service"], invite_data["permissions"], invite_data["folder_permissions"], - invite_data["from_user_id"], - ) - debug_msg( - f"Added user {usr.email_address} to service {invite_data['service_id']}" + invite_data["from_user"], ) + debug_msg(f"Added user {usr.email_address} to service {invite_data['service']}") # notify-admin-1766 # redirect new users to templates area of new service instead of dashboard - service_id = invite_data["service_id"] + service_id = invite_data["service"] url = url_for(".service_dashboard", service_id=service_id) url = f"{url}/templates" return redirect(url) diff --git a/app/notify_client/invite_api_client.py b/app/notify_client/invite_api_client.py index 994ccfd3f..9184abbd1 100644 --- a/app/notify_client/invite_api_client.py +++ b/app/notify_client/invite_api_client.py @@ -62,16 +62,7 @@ class InviteApiClient(NotifyAdminAPIClient): resp_data = resp["data"] invite_data_key = f"invitedata-{unquote(state)}" - remap_keys = { - "service": "service_id", - "from_user": "from_user_id", - "id": "user_id", - } - redis_invite_data = { - remap_keys[key] if key in remap_keys else key: value - for key, value in resp_data.items() - } - redis_invite_data = json.dumps(redis_invite_data) + redis_invite_data = json.dumps(resp_data) redis_client.set(invite_data_key, redis_invite_data) return resp_data