mirror of
https://github.com/GSA/notifications-admin.git
synced 2026-08-23 07:46:23 -04:00
Email auth for inviting members and editing permissions
This commit is contained in:
@@ -19,7 +19,7 @@ from app.main.forms import (
|
||||
InviteUserForm,
|
||||
PermissionsForm
|
||||
)
|
||||
from app import (user_api_client, service_api_client, invite_api_client)
|
||||
from app import (user_api_client, current_service, service_api_client, invite_api_client)
|
||||
from app.utils import user_has_permissions
|
||||
|
||||
|
||||
@@ -38,6 +38,7 @@ def manage_users(service_id):
|
||||
users = user_api_client.get_users_for_service(service_id=service_id)
|
||||
invited_users = [invite for invite in invite_api_client.get_invites_for_service(service_id=service_id)
|
||||
if invite.status != 'accepted']
|
||||
|
||||
return render_template(
|
||||
'views/manage-users.html',
|
||||
users=users,
|
||||
@@ -51,7 +52,13 @@ def manage_users(service_id):
|
||||
@user_has_permissions('manage_users', admin_override=True)
|
||||
def invite_user(service_id):
|
||||
|
||||
form = InviteUserForm(invalid_email_address=current_user.email_address)
|
||||
form = InviteUserForm(
|
||||
invalid_email_address=current_user.email_address
|
||||
)
|
||||
|
||||
service_has_email_auth = 'email_auth' in current_service['permissions']
|
||||
if not service_has_email_auth:
|
||||
form.login_authentication.data = 'sms_auth'
|
||||
|
||||
if form.validate_on_submit():
|
||||
email_address = form.email_address.data
|
||||
@@ -60,7 +67,8 @@ def invite_user(service_id):
|
||||
current_user.id,
|
||||
service_id,
|
||||
email_address,
|
||||
permissions
|
||||
permissions,
|
||||
form.login_authentication.data
|
||||
)
|
||||
|
||||
flash('Invite sent to {}'.format(invited_user.email_address), 'default_with_tick')
|
||||
@@ -68,7 +76,8 @@ def invite_user(service_id):
|
||||
|
||||
return render_template(
|
||||
'views/invite-user.html',
|
||||
form=form
|
||||
form=form,
|
||||
service_has_email_auth=service_has_email_auth
|
||||
)
|
||||
|
||||
|
||||
@@ -76,26 +85,35 @@ def invite_user(service_id):
|
||||
@login_required
|
||||
@user_has_permissions('manage_users', admin_override=True)
|
||||
def edit_user_permissions(service_id, user_id):
|
||||
service_has_email_auth = 'email_auth' in current_service['permissions']
|
||||
# TODO we should probably using the service id here in the get user
|
||||
# call as well. eg. /user/<user_id>?&service=service_id
|
||||
user = user_api_client.get_user(user_id)
|
||||
# Need to make the email address read only, or a disabled field?
|
||||
# Do it through the template or the form class?
|
||||
form = PermissionsForm(**{
|
||||
role: user.has_permissions(permissions=permissions) for role, permissions in roles.items()
|
||||
})
|
||||
user_has_no_mobile_number = user.mobile_number is None
|
||||
|
||||
form = PermissionsForm(
|
||||
**{role: user.has_permissions(permissions=permissions) for role, permissions in roles.items()},
|
||||
login_authentication=user.auth_type
|
||||
)
|
||||
|
||||
if form.validate_on_submit():
|
||||
user_api_client.set_user_permissions(
|
||||
user_id, service_id,
|
||||
permissions=set(get_permissions_from_form(form)),
|
||||
)
|
||||
if service_has_email_auth:
|
||||
user_api_client.update_user_attribute(
|
||||
user_id,
|
||||
auth_type=form.login_authentication.data
|
||||
)
|
||||
return redirect(url_for('.manage_users', service_id=service_id))
|
||||
|
||||
return render_template(
|
||||
'views/edit-user-permissions.html',
|
||||
user=user,
|
||||
form=form
|
||||
form=form,
|
||||
service_has_email_auth=service_has_email_auth,
|
||||
user_has_no_mobile_number=user_has_no_mobile_number
|
||||
)
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user