Merge pull request #3475 from alphagov/request-invite

Allow invite form to be pre-populated with an existing user
This commit is contained in:
Chris Hill-Scott
2021-01-08 11:16:18 +00:00
committed by GitHub
7 changed files with 302 additions and 10 deletions

View File

@@ -49,8 +49,9 @@ def manage_users(service_id):
@main.route("/services/<uuid:service_id>/users/invite", methods=['GET', 'POST'])
@main.route("/services/<uuid:service_id>/users/invite/<uuid:user_id>", methods=['GET', 'POST'])
@user_has_permissions('manage_service')
def invite_user(service_id):
def invite_user(service_id, user_id=None):
if current_service.has_permission('broadcast'):
form_class = BroadcastInviteUserForm
@@ -63,6 +64,26 @@ def invite_user(service_id):
folder_permissions=[f['id'] for f in current_service.all_template_folders]
)
if user_id:
user_to_invite = User.from_id(user_id)
if user_to_invite.belongs_to_service(current_service.id):
return render_template(
'views/user-already-team-member.html',
user_to_invite=user_to_invite,
)
if current_service.invite_pending_for(user_to_invite.email_address):
return render_template(
'views/user-already-invited.html',
user_to_invite=user_to_invite,
)
if not user_to_invite.default_organisation:
abort(403)
if user_to_invite.default_organisation.id != current_service.organisation_id:
abort(403)
form.email_address.data = user_to_invite.email_address
else:
user_to_invite = None
service_has_email_auth = current_service.has_permission('email_auth')
if not service_has_email_auth:
form.login_authentication.data = 'sms_auth'
@@ -86,6 +107,7 @@ def invite_user(service_id):
form=form,
service_has_email_auth=service_has_email_auth,
mobile_number=True,
user_to_invite=user_to_invite,
)

View File

@@ -160,6 +160,12 @@ class Service(JSONModel):
def invited_users(self):
return InvitedUsers(self.id)
def invite_pending_for(self, email_address):
return email_address.lower() in (
invited_user.email_address.lower()
for invited_user in self.invited_users
)
@cached_property
def active_users(self):
return Users(self.id)

View File

@@ -10,18 +10,24 @@
{% block maincolumn_content %}
{{ page_header(
'Invite a team member',
'Invite {}'.format(user_to_invite.name if user_to_invite else 'a team member') ,
back_link=url_for('main.manage_users', service_id=current_service.id)
) }}
{% call form_wrapper() %}
{{ form.email_address(
param_extensions={
"classes": "govuk-!-width-full"
},
error_message_with_html=True
) }}
{% if user_to_invite %}
<p class="govuk-body">
{{ user_to_invite.email_address }}
</p>
{% else %}
{{ form.email_address(
param_extensions={
"classes": "govuk-!-width-full"
},
error_message_with_html=True
) }}
{% endif %}
{% include 'views/manage-users/permissions.html' %}

View File

@@ -0,0 +1,20 @@
{% extends "withnav_template.html" %}
{% from "components/page-header.html" import page_header %}
{% block service_page_title %}
This person has already received an invite
{% endblock %}
{% block maincolumn_content %}
{{ page_header(
'This person has already received an invite',
back_link=url_for('main.manage_users', service_id=current_service.id)
) }}
<p class="govuk-body">
{{ user_to_invite.name }} has not accepted their invitation to
{{ current_service.name }} yet. You do not need to do anything.
</p>
{% endblock %}

View File

@@ -0,0 +1,19 @@
{% extends "withnav_template.html" %}
{% from "components/page-header.html" import page_header %}
{% block service_page_title %}
This person is already a team member
{% endblock %}
{% block maincolumn_content %}
{{ page_header(
'This person is already a team member',
back_link=url_for('main.manage_users', service_id=current_service.id)
) }}
<p class="govuk-body">
{{ user_to_invite.name }} is already member of {{ current_service.name }}.
</p>
{% endblock %}