mirror of
https://github.com/GSA/notifications-admin.git
synced 2026-09-08 19:03:12 -04:00
Expand permissions to all possible values on admin before posting to
api. This makes template work for both existing and invited users. API will no longer need to convert from what ui presents as permissions
This commit is contained in:
@@ -1,5 +1,4 @@
|
|||||||
from itertools import chain
|
from itertools import chain
|
||||||
from collections import OrderedDict
|
|
||||||
from flask import (
|
from flask import (
|
||||||
request,
|
request,
|
||||||
render_template,
|
render_template,
|
||||||
@@ -35,14 +34,14 @@ roles = {
|
|||||||
@login_required
|
@login_required
|
||||||
@user_has_permissions('view_activity', admin_override=True)
|
@user_has_permissions('view_activity', admin_override=True)
|
||||||
def manage_users(service_id):
|
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(
|
return render_template(
|
||||||
'views/manage-users.html',
|
'views/manage-users.html',
|
||||||
users=user_api_client.get_users_for_service(service_id=service_id),
|
users=users,
|
||||||
current_user=current_user,
|
current_user=current_user,
|
||||||
invited_users=[
|
invited_users=invited_users
|
||||||
invite for invite in invite_api_client.get_invites_for_service(service_id=service_id)
|
|
||||||
if invite.status != 'accepted'
|
|
||||||
]
|
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@@ -58,8 +57,10 @@ def invite_user(service_id):
|
|||||||
# view_activity is a default role to be added to all users.
|
# view_activity is a default role to be added to all users.
|
||||||
# All users will have at minimum view_activity to allow users to see notifications,
|
# All users will have at minimum view_activity to allow users to see notifications,
|
||||||
# templates, team members but no update privileges
|
# templates, team members but no update privileges
|
||||||
selected_permissions = [role for role in sorted(roles.keys()) if request.form.get(role) == 'y']
|
selected_permissions = [permissions for role, permissions in roles.items() if request.form.get(role) == 'y']
|
||||||
|
selected_permissions = list(chain.from_iterable(selected_permissions))
|
||||||
selected_permissions.append('view_activity')
|
selected_permissions.append('view_activity')
|
||||||
|
selected_permissions.sort()
|
||||||
permissions = ','.join(selected_permissions)
|
permissions = ','.join(selected_permissions)
|
||||||
invited_user = invite_api_client.create_invite(
|
invited_user = invite_api_client.create_invite(
|
||||||
current_user.id,
|
current_user.id,
|
||||||
|
|||||||
@@ -99,7 +99,8 @@ class UserApiClient(BaseAPIClient):
|
|||||||
|
|
||||||
def add_user_to_service(self, service_id, user_id, permissions):
|
def add_user_to_service(self, service_id, user_id, permissions):
|
||||||
endpoint = '/service/{}/users/{}'.format(service_id, user_id)
|
endpoint = '/service/{}/users/{}'.format(service_id, user_id)
|
||||||
resp = self.post(endpoint, data={'permissions': permissions})
|
data = [{'permission': x} for x in permissions]
|
||||||
|
resp = self.post(endpoint, data=data)
|
||||||
return User(resp['data'], max_failed_login_count=self.max_failed_login_count)
|
return User(resp['data'], max_failed_login_count=self.max_failed_login_count)
|
||||||
|
|
||||||
def set_user_permissions(self, user_id, service_id, permissions):
|
def set_user_permissions(self, user_id, service_id, permissions):
|
||||||
|
|||||||
@@ -160,11 +160,13 @@ def test_invite_user(
|
|||||||
assert page.h1.string.strip() == 'Team members'
|
assert page.h1.string.strip() == 'Team members'
|
||||||
flash_banner = page.find('div', class_='banner-default-with-tick').string.strip()
|
flash_banner = page.find('div', class_='banner-default-with-tick').string.strip()
|
||||||
assert flash_banner == 'Invite sent to test@example.gov.uk'
|
assert flash_banner == 'Invite sent to test@example.gov.uk'
|
||||||
excpected_permissions = 'manage_api_keys,manage_service,send_messages,view_activity'
|
|
||||||
|
expected_permissions = 'manage_api_keys,manage_settings,manage_templates,manage_users,send_emails,send_letters,send_texts,view_activity' # noqa
|
||||||
|
|
||||||
app.invite_api_client.create_invite.assert_called_once_with(sample_invite['from_user'],
|
app.invite_api_client.create_invite.assert_called_once_with(sample_invite['from_user'],
|
||||||
sample_invite['service'],
|
sample_invite['service'],
|
||||||
email_address,
|
email_address,
|
||||||
excpected_permissions)
|
expected_permissions)
|
||||||
|
|
||||||
|
|
||||||
def test_cancel_invited_user_cancels_user_invitations(app_,
|
def test_cancel_invited_user_cancels_user_invitations(app_,
|
||||||
|
|||||||
Reference in New Issue
Block a user