{% requireAdmin %} {% extends "settings/users/_layout" %} {% set selectedNavItem = 'settings' %} {% import "_includes/forms" as forms %} {% if settings is not defined %} {% set settings = craft.app.projectConfig.get('users') ?? [] %} {% endif %} {# set defaults #} {% set settings = { photoVolumeUid: null, photoSubpath: null, requireEmailVerification: true, allowPublicRegistration: false, validateOnPublicRegistration: false, suspendByDefault: false, defaultGroup: null, }|merge(settings) %} {% set allVolumes = craft.app.volumes.getAllVolumes() %} {% set volumeList = [] %} {% for volume in allVolumes %} {% set volumeList = volumeList|push({label: volume.name, value: volume.uid}) %} {% endfor %} {% macro assetLocationInput(volumeOptions, volumeUid, subpath) %} {% from "_includes/forms" import select, text %}
{{ select({ id: 'photoVolumeUid', name: 'photoVolumeUid', options: volumeOptions, value: volumeUid, }) }}
{{ text({ id: 'photoSubpath', class: 'ltr', name: 'photoSubpath', value: subpath, placeholder: "path/to/subfolder"|t('app') }) }}
{% endmacro %} {% from _self import assetLocationInput %} {% block content %}
{{ actionInput('user-settings/save-user-settings') }} {{ csrfInput() }} {% if volumeList %} {{ forms.field({ first: true, label: "User Photo Location"|t('app'), instructions: "Where do you want to store user photos? Note that the subfolder path can contain variables like {username}."|t('app') }, assetLocationInput(volumeList, settings.photoVolumeUid, settings.photoSubpath)) }} {% else %} {{ forms.field({ first: true, label: "User Photo Volume"|t('app') }, '

' ~ "No volumes exist yet."|t('app') ~ '

') }} {% endif %} {% if CraftEdition == CraftPro %} {{ forms.checkboxField({ label: 'Verify email addresses'|t('app'), instructions: "Should new email addresses be verified before getting saved to user accounts? (This also affects new user registration.)"|t('app'), name: 'requireEmailVerification', checked: settings.requireEmailVerification, }) }} {{ forms.checkboxField({ label: 'Allow public registration'|t('app'), name: 'allowPublicRegistration', checked: settings.allowPublicRegistration, toggle: 'publicRegistrationSettings' }) }}
{{ forms.checkboxField({ label: 'Validate custom fields on public registration'|t('app'), instructions: 'Whether custom fields should be validated during public registration.'|t('app'), name: 'validateOnPublicRegistration', checked: settings.validateOnPublicRegistration, }) }} {{ forms.checkboxField({ label: 'Suspend users by default'|t('app'), instructions: 'Should users who register their own accounts be suspended by default? This will prevent them from receiving an activation email.'|t('app'), name: 'suspendByDefault', checked: settings.suspendByDefault, }) }} {% set groups = [{ label: "None"|t('app'), value: '' }] %} {% for group in craft.app.userGroups.getAllGroups() %} {% set groups = groups|merge([{ label: group.name, value: group.uid }]) %} {% endfor %} {{ forms.selectField({ label: "Default User Group"|t('app'), instructions: "Choose a user group that publicly-registered members will be added to by default."|t('app'), name: 'defaultGroup', options: groups, value: settings.defaultGroup }) }}
{% endif %}
{% endblock %}