store invited user ids in session

same as the invited org user ids in the previous commit
This commit is contained in:
Leo Hemsted
2021-03-08 12:51:35 +00:00
parent 6d62c9ba36
commit 45297eae43
9 changed files with 84 additions and 7 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)

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

@@ -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)
@@ -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,

View File

@@ -476,6 +476,12 @@ class InvitedUser(JSONModel):
invite_api_client.get_invited_user_for_service(service_id, invited_user_id)
)
@classmethod
def by_id(cls, invited_user_id):
return cls(
invite_api_client.get_invited_user(invited_user_id)
)
def accept_invite(self):
invite_api_client.accept_invite(self.service, self.id)
@@ -515,6 +521,10 @@ class InvitedUser(JSONModel):
@classmethod
def from_session(cls):
invited_user_id = session.get('invited_user_id')
if invited_user_id:
return cls.by_id(invited_user_id)
invited_user = session.get('invited_user')
return cls(invited_user) if invited_user else None

View File

@@ -37,6 +37,11 @@ class InviteApiClient(NotifyAdminAPIClient):
'/service/{}/invite'.format(service_id)
)['data']
def get_invited_user(self, invited_user_id):
return self.get(
f'/invite/service/{invited_user_id}'
)['data']
def get_invited_user_for_service(self, service_id, invited_user_id):
return self.get(
f'/service/{service_id}/invite/{invited_user_id}'