Merge pull request #3827 from alphagov/invited-user-id

Invited user
This commit is contained in:
Leo Hemsted
2021-03-15 13:42:16 +00:00
committed by GitHub
13 changed files with 208 additions and 18 deletions

View File

@@ -49,8 +49,9 @@ def old_service_dashboard(service_id):
@user_has_permissions()
def service_dashboard(service_id):
if session.get('invited_user'):
if session.get('invited_user_id') or session.get('invited_user'):
session.pop('invited_user', None)
session.pop('invited_user_id', None)
session['service_id'] = service_id
if current_service.has_permission('broadcast'):

View File

@@ -40,12 +40,14 @@ def accept_invite(token):
if invited_user.status == 'accepted':
session.pop('invited_user', None)
session.pop('invited_user_id', None)
service = Service.from_id(invited_user.service)
if service.has_permission('broadcast'):
return redirect(url_for('main.broadcast_tour', service_id=service.id, step_index=1))
return redirect(url_for('main.service_dashboard', service_id=invited_user.service))
session['invited_user'] = invited_user.serialize()
session['invited_user_id'] = invited_user.id
existing_user = User.from_email_address_or_none(invited_user.email_address)
@@ -103,9 +105,11 @@ def accept_org_invite(token):
if invited_org_user.status == 'accepted':
session.pop('invited_org_user', None)
session.pop('invited_org_user_id', None)
return redirect(url_for('main.organisation_dashboard', org_id=invited_org_user.organisation))
session['invited_org_user'] = invited_org_user.serialize()
session['invited_org_user_id'] = invited_org_user.id
existing_user = User.from_email_address_or_none(invited_org_user.email_address)
organisation_users = OrganisationUsers(invited_org_user.organisation)

View File

@@ -36,11 +36,12 @@ def sign_in():
if user and user.state == 'pending':
return redirect(url_for('main.resend_email_verification', next=redirect_url))
if user and session.get('invited_user'):
if user and (session.get('invited_user') or session.get('invited_user_id')):
invited_user = InvitedUser.from_session()
if user.email_address.lower() != invited_user.email_address.lower():
flash("You cannot accept an invite for another person.")
session.pop('invited_user', None)
session.pop('invited_user_id', None)
abort(403)
else:
invited_user.accept_invite()

View File

@@ -16,7 +16,7 @@ from app import user_api_client
from app.main import main
from app.main.forms import TwoFactorForm
from app.models.service import Service
from app.models.user import InvitedUser, User
from app.models.user import InvitedOrgUser, InvitedUser, User
from app.utils import redirect_to_sign_in
@@ -75,7 +75,7 @@ def activate_user(user_id):
activated_user = user.activate()
activated_user.login()
invited_user = session.get('invited_user')
invited_user = InvitedUser.from_session()
if invited_user:
service_id = _add_invited_user_to_service(invited_user)
service = Service.from_id(service_id)
@@ -83,9 +83,9 @@ def activate_user(user_id):
return redirect(url_for('main.broadcast_tour', service_id=service.id, step_index=1))
return redirect(url_for('main.service_dashboard', service_id=service_id))
invited_org_user = session.get('invited_org_user')
invited_org_user = InvitedOrgUser.from_session()
if invited_org_user:
user_api_client.add_user_to_organisation(invited_org_user['organisation'], session['user_details']['id'])
user_api_client.add_user_to_organisation(invited_org_user.organisation, session['user_details']['id'])
if organisation_id:
return redirect(url_for('main.organisation_dashboard', org_id=organisation_id))
@@ -93,10 +93,9 @@ def activate_user(user_id):
return redirect(url_for('main.add_service', first='first'))
def _add_invited_user_to_service(invited_user):
invitation = InvitedUser(invited_user)
def _add_invited_user_to_service(invitation):
user = User.from_id(session['user_id'])
service_id = invited_user['service']
service_id = invitation.service
user.add_to_service(
service_id,
invitation.permissions,