From f7e8a4f076c73d477f61d61e15fc7b592fdedac8 Mon Sep 17 00:00:00 2001 From: Matias Griese Date: Wed, 13 Nov 2019 11:46:53 +0200 Subject: [PATCH] Improved `permissions` field to add support for displaying calculated permissions --- CHANGELOG.md | 2 ++ languages/en.yaml | 8 ++++++ .../fields/permissions/permissions.html.twig | 25 +++++++++++++++---- 3 files changed, 30 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 818b4a34..96c1b626 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,8 @@ # v1.10.0-rc.2 ## mm/dd/2019 +1. [](#improved) + * Improved `permissions` field to add support for displaying calculated permissions 1. [](#bugfix) * Fixed `permissions` field with nested permissions diff --git a/languages/en.yaml b/languages/en.yaml index 9c0a4760..576c89ab 100644 --- a/languages/en.yaml +++ b/languages/en.yaml @@ -851,3 +851,11 @@ PLUGIN_ADMIN: SANITIZE_SVG: "Sanitize SVG" SANITIZE_SVG_HELP: "Removes any XSS code from SVG" ACCOUNTS: "Accounts" + USER_ACCOUNTS: "User Accounts" + USER_GROUPS: "User Groups" + GROUP_NAME: "Group Name" + DISPLAY_NAME: "Display Name" + ICON: "Icon" + ACCESS: "Access" + NO_ACCESS: "No Access" + SUPER_USER: "Super User" diff --git a/themes/grav/templates/forms/fields/permissions/permissions.html.twig b/themes/grav/templates/forms/fields/permissions/permissions.html.twig index 08d428c8..d25f51e2 100644 --- a/themes/grav/templates/forms/fields/permissions/permissions.html.twig +++ b/themes/grav/templates/forms/fields/permissions/permissions.html.twig @@ -20,19 +20,24 @@ {% set permissions = permissions|merge({(existing_key): 'boolean'}) %} {% endif %} {% endfor %} + {% set super = object.authorize('admin.super', 'test') %}
{% for permission, type in permissions %}
- {% set permission_value = value[permission] ?? null %} - {% if permission_value in ['on', 'true', 1] %} - {% set permission_value = 'true' %} + {% set permission_value = value[permission] ?? '' %} + {% if permission_value is not same as('') %} + {% if permission_value in ['yes', 'on', 'true', 1, true] %} + {% set permission_value = 'true' %} + {% else %} + {% set permission_value = 'false' %} + {% endif %} {% endif %}
- {% set options = { true: 'PLUGIN_ADMIN.YES', false: 'PLUGIN_ADMIN.NO', '': 'PLUGIN_ADMIN.NOT_SET' } %} + {% set options = { 'true': 'PLUGIN_ADMIN.YES', 'false': 'PLUGIN_ADMIN.NO', '': 'PLUGIN_ADMIN.NOT_SET' } %} {% set maxLen = 0 %} {% for value, text in options %} @@ -52,13 +57,23 @@ {% if key|fieldName == '' ~ permission_value|fieldName %} checked="checked" {% endif %} - {% if field.validate.required in ['on', 'true', 1] %}required="required"{% endif %} + {% if field.validate.required in ['yes', 'on', 'true', 1, true] %}required="required"{% endif %} /> {% endfor %}
+ {% if object %} + {% set auth = object.authorize(permission, 'test') ?? super %} + {% if super and auth %} + {{ 'PLUGIN_ADMIN.SUPER_USER'|tu }} + {% elseif auth %} + {{ 'PLUGIN_ADMIN.ACCESS'|tu }} + {% else %} + {{ 'PLUGIN_ADMIN.NO_ACCESS'|tu }} + {% endif %} + {% endif %}
{% endfor %}