Update permissions page

This commit is contained in:
Tom Byers
2020-04-02 18:08:50 +01:00
parent a99ca640e3
commit e030d7d3a1
3 changed files with 18 additions and 24 deletions

View File

@@ -713,7 +713,9 @@ class PermissionsForm(StripWhitespaceForm):
(item['id'], item['name']) for item in ([{'name': 'Templates', 'id': None}] + all_template_folders) (item['id'], item['name']) for item in ([{'name': 'Templates', 'id': None}] + all_template_folders)
] ]
folder_permissions = NestedCheckboxesField('Folders this team member can see') folder_permissions = govukCollapsibleNestedCheckboxesField(
'Folders this team member can see',
field_label='folder')
login_authentication = RadioField( login_authentication = RadioField(
'Sign in using', 'Sign in using',
@@ -725,21 +727,23 @@ class PermissionsForm(StripWhitespaceForm):
validators=[DataRequired()] validators=[DataRequired()]
) )
@property permissions_field = govukCheckboxesField(
def permissions(self): 'Permssions',
return {role for role in roles.keys() if self[role].data is True} choices=[
(value, label) for value, label in permissions
@property ],
def permissions_fields(self): param_extensions={
return (getattr(self, permission) for permission, _ in permissions) "hint": {"text": "All team members can see sent messages."}
}
)
@classmethod @classmethod
def from_user(cls, user, service_id, **kwargs): def from_user(cls, user, service_id, **kwargs):
return cls( return cls(
**kwargs, **kwargs,
**{ **{
role: user.has_permission_for_service(service_id, role) "permissions_field": [
for role in roles.keys() role for role in roles.keys() if user.has_permission_for_service(service_id, role)]
}, },
login_authentication=user.auth_type login_authentication=user.auth_type
) )

View File

@@ -63,7 +63,7 @@ def invite_user(service_id):
current_user.id, current_user.id,
service_id, service_id,
email_address, email_address,
form.permissions, set(form.permissions_field.data),
form.login_authentication.data, form.login_authentication.data,
form.folder_permissions.data, form.folder_permissions.data,
) )
@@ -102,7 +102,7 @@ def edit_user_permissions(service_id, user_id):
if form.validate_on_submit(): if form.validate_on_submit():
user.set_permissions( user.set_permissions(
service_id, service_id,
permissions=form.permissions, permissions=set(form.permissions_field.data),
folder_permissions=form.folder_permissions.data, folder_permissions=form.folder_permissions.data,
) )
if service_has_email_auth: if service_has_email_auth:

View File

@@ -1,20 +1,10 @@
{% from "components/checkbox.html" import checkbox, checkboxes_nested %} {% from "components/checkbox.html" import checkbox, checkboxes_nested %}
{% from "components/radios.html" import radio, radios, conditional_radio_panel %} {% from "components/radios.html" import radio, radios, conditional_radio_panel %}
<fieldset class="form-group"> {{ form.permissions_field }}
<legend class="form-label heading-small">
Permissions
</legend>
<span class="hint">
All team members can see sent messages.
</span>
{% for field in form.permissions_fields %}
{{ checkbox(field) }}
{% endfor %}
</fieldset>
{% if form.folder_permissions.all_template_folders %} {% if form.folder_permissions.all_template_folders %}
{{ checkboxes_nested(form.folder_permissions, form.folder_permissions.children(), hide_legend=True, collapsible_opts={ 'field': 'folder' }) }} {{ form.folder_permissions }}
{% elif user and user.platform_admin %} {% elif user and user.platform_admin %}
<p class="bottom-gutter"> <p class="bottom-gutter">
Platform admin users can access all template folders. Platform admin users can access all template folders.