src/views/admin/settings/user.tpl
<div class="acp-page-container">
<!-- IMPORT admin/partials/settings/header.tpl -->
<div class="row settings m-0">
<div id="spy-container" class="col-12 col-md-8 px-0 mb-4" tabindex="0">
<div id="account-settings" class="mb-4">
<h5 class="fw-bold tracking-tight settings-header">[[admin/settings/user:account-settings]]</h5>
<div class="mb-3">
<label class="form-label" for="allowLoginWith">[[admin/settings/user:allow-login-with]]</label>
<select id="allowLoginWith" class="form-select" data-field="allowLoginWith">
<option value="username-email">[[admin/settings/user:allow-login-with.username-email]]</option>
<option value="username">[[admin/settings/user:allow-login-with.username]]</option>
</select>
</div>
<div class="form-check form-switch mb-3">
<input class="form-check-input" type="checkbox" id="gdpr_enabled" data-field="gdpr_enabled">
<label for="gdpr_enabled" class="form-check-label">[[admin/settings/user:gdpr-enabled]]</label>
<p class="form-text">[[admin/settings/user:gdpr-enabled-help]]</p>
</div>
<div class="form-check form-switch mb-3">
<input class="form-check-input" type="checkbox" id="username:disableEdit" data-field="username:disableEdit">
<label for="username:disableEdit" class="form-check-label">[[admin/settings/user:disable-username-changes]]</label>
</div>
<div class="form-check form-switch mb-3">
<input class="form-check-input" type="checkbox" id="email:disableEdit" data-field="email:disableEdit">
<label for="email:disableEdit" class="form-check-label">[[admin/settings/user:disable-email-changes]]</label>
</div>
<div class="form-check form-switch mb-3">
<input class="form-check-input" type="checkbox" id="password:disableEdit" data-field="password:disableEdit">
<label for="password:disableEdit" class="form-check-label">[[admin/settings/user:disable-password-changes]]</label>
</div>
<div class="form-check form-switch mb-3">
<input class="form-check-input" type="checkbox" id="allowAccountDelete" data-field="allowAccountDelete" checked>
<label for="allowAccountDelete" class="form-check-label">[[admin/settings/user:allow-account-deletion]]</label>
</div>
<div class="form-check form-switch mb-3">
<input class="form-check-input" type="checkbox" id="hideFullname" data-field="hideFullname">
<label for="hideFullname" class="form-check-label">[[admin/settings/user:hide-fullname]]</label>
</div>
<div class="form-check form-switch mb-3">
<input class="form-check-input" type="checkbox" id="hideEmail" data-field="hideEmail">
<label for="hideEmail" class="form-check-label">[[admin/settings/user:hide-email]]</label>
</div>
<div class="form-check form-switch mb-3">
<input class="form-check-input" type="checkbox" id="showFullnameAsDisplayName" data-field="showFullnameAsDisplayName">
<label for="showFullnameAsDisplayName" class="form-check-label">[[admin/settings/user:show-fullname-as-displayname]]</label>
</div>
<div class="form-check form-switch mb-3">
<input class="form-check-input" type="checkbox" id="disableCustomUserSkins" data-field="disableCustomUserSkins">
<label for="disableCustomUserSkins" class="form-check-label">[[admin/settings/user:disable-user-skins]]</label>
</div>
</div>
<hr/>
<div id="account-protection" class="mb-4">
<h5 class="fw-bold tracking-tight settings-header">[[admin/settings/user:account-protection]]</h5>
<div class="mb-3">
<label class="form-label" for="adminReloginDuration">[[admin/settings/user:admin-relogin-duration]]</label>
<input id="adminReloginDuration" type="text" class="form-control" data-field="adminReloginDuration" placeholder="60" />
<p class="form-text">
[[admin/settings/user:admin-relogin-duration-help]]
</p>
</div>
<div class="mb-3">
<label class="form-label" for="loginAttempts">[[admin/settings/user:login-attempts]]</label>
<input id="loginAttempts" type="text" class="form-control" data-field="loginAttempts" placeholder="5" />
<p class="form-text">
[[admin/settings/user:login-attempts-help]]
</p>
</div>
<div class="mb-3">
<label class="form-label" for="lockoutDuration">[[admin/settings/user:lockout-duration]]</label>
<input id="lockoutDuration" type="text" class="form-control" data-field="lockoutDuration" placeholder="60" />
</div>
<div class="mb-3">
<label class="form-label" for="passwordExpiryDays">[[admin/settings/user:password-expiry-days]]</label>
<input id="passwordExpiryDays" type="text" class="form-control" data-field="passwordExpiryDays" placeholder="0" />
</div>
</div>
<hr/>
<div id="session-time" class="mb-4">
<h5 class="fw-bold tracking-tight settings-header">[[admin/settings/user:session-time]]</h5>
<div class="row">
<div class="col-sm-6">
<div class="form-group mb-3">
<label class="form-label" for="loginDays">[[admin/settings/user:session-time-days]]</label>
<input id="loginDays" type="number" min="0" class="form-control" data-field="loginDays" placeholder="[[admin/settings/user:session-time-days]]" />
</div>
</div>
<div class="col-sm-6">
<div class="form-group mb-3">
<label class="form-label" for="loginSeconds">[[admin/settings/user:session-time-seconds]]</label>
<input id="loginSeconds" type="number" min="0" step="60" class="form-control" data-field="loginSeconds" placeholder="[[admin/settings/user:session-time-seconds]]" />
</div>
</div>
</div>
<div class="row">
<div class="col-12">
<p class="form-text">
[[admin/settings/user:session-time-help]]
</p>
</div>
</div>
<div class="form-group mb-3">
<label class="form-label" for="sessionDuration">[[admin/settings/user:session-duration]]</label>
<input id="sessionDuration" type="number" step="60" min="0" class="form-control" data-field="sessionDuration">
<p class="form-text">[[admin/settings/user:session-duration-help]]</p>
</div>
<div class="form-group mb-3">
<label class="form-label" for="onlineCutoff">[[admin/settings/user:online-cutoff]]</label>
<input id="onlineCutoff" type="number" min="0" class="form-control" data-field="onlineCutoff">
<p class="form-text">[[admin/settings/user:online-cutoff-help]]</p>
</div>
</div>
<hr/>
<div id="user-registration" class="mb-4">
<h5 class="fw-bold tracking-tight settings-header">[[admin/settings/user:registration]]</h5>
<div class="mb-3">
<label class="form-label" for="registrationType">[[admin/settings/user:registration-type]]</label>
<select id="registrationType" class="form-select" data-field="registrationType">
<option value="normal">[[admin/settings/user:registration-type.normal]]</option>
<option value="invite-only">[[admin/settings/user:registration-type.invite-only]]</option>
<option value="admin-invite-only">[[admin/settings/user:registration-type.admin-invite-only]]</option>
<option value="disabled">[[admin/settings/user:registration-type.disabled]]</option>
</select>
<p class="form-text">
[[admin/settings/user:registration-type.help, {config.relative_path}]]
</p>
</div>
<div class="mb-3">
<label class="form-label" for="registrationApprovalType">[[admin/settings/user:registration-approval-type]]</label>
<select id="registrationApprovalType" class="form-select" data-field="registrationApprovalType">
<option value="normal">[[admin/settings/user:registration-type.normal]]</option>
<option value="admin-approval">[[admin/settings/user:registration-type.admin-approval]]</option>
<option value="admin-approval-ip">[[admin/settings/user:registration-type.admin-approval-ip]]</option>
</select>
<p class="form-text">
[[admin/settings/user:registration-approval-type.help, {config.relative_path}]]
</p>
</div>
<div class="mb-3">
<label class="form-label" for="autoApproveTime">[[admin/settings/user:registration-queue-auto-approve-time]]</label>
<input id="autoApproveTime" type="number" class="form-control" data-field="autoApproveTime" placeholder="0">
<p class="form-text">
[[admin/settings/user:registration-queue-auto-approve-time-help]]
</p>
</div>
<div class="form-check form-switch mb-3">
<input class="form-check-input" type="checkbox" id="showAverageApprovalTime" data-field="showAverageApprovalTime">
<label for="showAverageApprovalTime" class="form-check-label">[[admin/settings/user:registration-queue-show-average-time]]</label>
</div>
<div class="form-check form-switch mb-3">
<input class="form-check-input" type="checkbox" id="requireEmailAddress" data-field="requireEmailAddress" name="requireEmailAddress" />
<label for="requireEmailAddress" class="form-check-label">[[admin/settings/email:require-email-address]]</label>
</div>
<p class="form-text">[[admin/settings/email:require-email-address-warning]]</p>
<div class="mb-3">
<label class="form-label" for="maximumInvites">[[admin/settings/user:max-invites]]</label>
<input id="maximumInvites" type="number" class="form-control" data-field="maximumInvites" placeholder="0">
<p class="form-text">
[[admin/settings/user:max-invites-help]]
</p>
</div>
<div class="mb-3">
<label class="form-label" for="inviteExpiration">[[admin/settings/user:invite-expiration]]</label>
<input id="inviteExpiration" type="number" class="form-control" data-field="inviteExpiration" placeholder="7">
<p class="form-text">
[[admin/settings/user:invite-expiration-help]]
</p>
</div>
<div class="mb-3">
<label class="form-label" for="minimumUsernameLength">[[admin/settings/user:min-username-length]]</label>
<input id="minimumUsernameLength" type="text" class="form-control" value="2" data-field="minimumUsernameLength">
</div>
<div class="mb-3">
<label class="form-label" for="maximumUsernameLength">[[admin/settings/user:max-username-length]]</label>
<input id="maximumUsernameLength" type="text" class="form-control" value="16" data-field="maximumUsernameLength">
</div>
<div class="mb-3">
<label class="form-label" for="minimumPasswordLength">[[admin/settings/user:min-password-length]]</label>
<input id="minimumPasswordLength" type="text" class="form-control" value="6" data-field="minimumPasswordLength">
</div>
<div class="mb-3">
<label class="form-label" for="minimumPasswordStrength">[[admin/settings/user:min-password-strength]]</label>
<select id="minimumPasswordStrength" class="form-select" data-field="minimumPasswordStrength">
<option value="0">0 - too guessable: risky password</option>
<option value="1">1 - very guessable</option>
<option value="2">2 - somewhat guessable</option>
<option value="3">3 - safely unguessable</option>
<option value="4">4 - very unguessable</option>
</select>
</div>
<div class="mb-3">
<label class="form-label" for="maximumAboutMeLength">[[admin/settings/user:max-about-me-length]]</label>
<input id="maximumAboutMeLength" type="text" class="form-control" value="500" data-field="maximumAboutMeLength">
</div>
<div class="mb-3">
<label class="form-label" for="termsOfUse">[[admin/settings/user:terms-of-use]]</label>
<textarea id="termsOfUse" class="form-control" data-field="termsOfUse"></textarea>
</div>
</div>
<hr/>
<!-- new user restrictions -->
<div id="new-user-restrictions" class="mb-4">
<h5 class="fw-bold tracking-tight settings-header">[[admin/settings/user:restrictions-new]]</h5>
<div class="mb-3">
<label class="form-label" for="newbieReputationThreshold">[[admin/settings/user:restrictions.rep-threshold]]</label>
<input id="newbieReputationThreshold" type="text" class="form-control" value="3" data-field="newbieReputationThreshold">
</div>
<div class="mb-3">
<label class="form-label" for="newbiePostDelay">[[admin/settings/user:restrictions.seconds-between-new]]</label>
<input id="newbiePostDelay" type="text" class="form-control" value="120" data-field="newbiePostDelay">
</div>
<div class="mb-3">
<label class="form-label" for="initialPostDelay">[[admin/settings/user:restrictions.seconds-before-new]]</label>
<input id="initialPostDelay" type="text" class="form-control" value="10" data-field="initialPostDelay">
</div>
<div class="mb-3">
<label class="form-label" for="newbiePostEditDuration">[[admin/settings/user:restrictions.seconds-edit-after-new]]</label>
<input id="newbiePostEditDuration" type="text" class="form-control" value="120" data-field="newbiePostEditDuration">
</div>
<div class="mb-3">
<label class="form-label" for="newbieChatMessageDelay">[[admin/settings/user:restrictions.milliseconds-between-messages]]</label>
<input id="newbieChatMessageDelay" type="text" class="form-control" data-field="newbieChatMessageDelay">
</div>
<div class="mb-3">
<label class="form-label" for="groupsExemptFromNewUserRestrictions">[[admin/settings/user:restrictions.groups-exempt-from-new-user-restrictions]]</label>
<select id="groupsExemptFromNewUserRestrictions" class="form-select" multiple data-field="groupsExemptFromNewUserRestrictions">
{{{ each groupsExemptFromNewUserRestrictions }}}
<option value="{groupsExemptFromNewUserRestrictions.displayName}">{groupsExemptFromNewUserRestrictions.displayName}</option>
{{{ end }}}
</select>
</div>
</div>
<hr/>
<div id="guest-settings" class="mb-4">
<h5 class="fw-bold tracking-tight settings-header">[[admin/settings/guest:guest-settings]]</h5>
<div class="mb-3">
<div class="form-check form-switch mb-3">
<input class="form-check-input" type="checkbox" id="allowGuestHandles" data-field="allowGuestHandles">
<label for="allowGuestHandles" class="form-check-label">[[admin/settings/guest:handles.enabled]]</label>
</div>
<p class="form-text">
[[admin/settings/guest:handles.enabled-help]]
</p>
</div>
<div class="mb-3">
<div class="form-check form-switch mb-3">
<input class="form-check-input" type="checkbox" id="guestsIncrementTopicViews" data-field="guestsIncrementTopicViews">
<label for="guestsIncrementTopicViews" class="form-check-label">[[admin/settings/guest:topic-views.enabled]]</label>
</div>
</div>
<div class="mb-3">
<div class="form-check form-switch mb-3">
<input class="form-check-input" type="checkbox" id="allowGuestReplyNotifications" data-field="allowGuestReplyNotifications">
<label for="allowGuestReplyNotifications" class="form-check-label">[[admin/settings/guest:reply-notifications.enabled]]</label>
</div>
</div>
</div>
<hr/>
<div id="default-user-settings" class="mb-4">
<h5 class="fw-bold tracking-tight settings-header">[[admin/settings/user:default-user-settings]]</h5>
<div class="form-check form-switch mb-3">
<input class="form-check-input" type="checkbox" id="showemail" data-field="showemail">
<label for="showemail" class="form-check-label">[[admin/settings/user:show-email]]</label>
</div>
<div class="form-check form-switch mb-3">
<input class="form-check-input" type="checkbox" id="showfullname" data-field="showfullname">
<label for="showfullname" class="form-check-label">[[admin/settings/user:show-fullname]]</label>
</div>
<div class="form-check form-switch mb-3">
<input class="form-check-input" type="checkbox" id="restrictChat" data-field="restrictChat">
<label for="restrictChat" class="form-check-label">[[admin/settings/user:restrict-chat]]</label>
</div>
<div class="form-check form-switch mb-3">
<input class="form-check-input" type="checkbox" id="openOutgoingLinksInNewTab" data-field="openOutgoingLinksInNewTab">
<label for="openOutgoingLinksInNewTab" class="form-check-label">[[admin/settings/user:outgoing-new-tab]]</label>
</div>
<div class="form-check form-switch mb-3">
<input class="form-check-input" type="checkbox" id="topicSearchEnabled" data-field="topicSearchEnabled">
<label for="topicSearchEnabled" class="form-check-label">[[admin/settings/user:topic-search]]</label>
</div>
<div class="form-check form-switch mb-3">
<input class="form-check-input" type="checkbox" id="updateUrlWithPostIndex" data-field="updateUrlWithPostIndex">
<label for="updateUrlWithPostIndex" class="form-check-label">[[admin/settings/user:update-url-with-post-index]]</label>
</div>
<div class="mb-3">
<label class="form-label" for="dailyDigestFreq">[[admin/settings/user:digest-freq]]</label>
<select id="dailyDigestFreq" class="form-select" data-field="dailyDigestFreq">
<option value="off">[[admin/settings/user:digest-freq.off]]</option>
<option value="day">[[admin/settings/user:digest-freq.daily]]</option>
<option value="week">[[admin/settings/user:digest-freq.weekly]]</option>
<option value="biweek">[[admin/settings/user:digest-freq.biweekly]]</option>
<option value="month">[[admin/settings/user:digest-freq.monthly]]</option>
</select>
</div>
<div class="form-check form-switch mb-3">
<input class="form-check-input" type="checkbox" id="followTopicsOnCreate" data-field="followTopicsOnCreate">
<label for="followTopicsOnCreate" class="form-check-label">[[admin/settings/user:follow-created-topics]]</label>
</div>
<div class="form-check form-switch mb-3">
<input class="form-check-input" type="checkbox" id="followTopicsOnReply" data-field="followTopicsOnReply">
<label for="followTopicsOnReply" class="form-check-label">[[admin/settings/user:follow-replied-topics]]</label>
</div>
<div class="mb-3">
<label class="form-label" for="categoryWatchState">[[admin/settings/user:categoryWatchState]]</label>
<select id="categoryWatchState" class="form-select" data-field="categoryWatchState">
<option value="tracking">[[admin/settings/user:categoryWatchState.tracking]]</option>
<option value="notwatching">[[admin/settings/user:categoryWatchState.notwatching]]</option>
<option value="ignoring">[[admin/settings/user:categoryWatchState.ignoring]]</option>
</select>
</div>
<label class="form-label mb-2">[[admin/settings/user:default-notification-settings]]</label>
{{{ each notificationSettings }}}
<div class="row">
<div class="mb-3 col-7">
<label class="form-label">{./label}</label>
</div>
<div class="mb-3 col-5">
<select class="form-select" data-field="{./name}">
<option value="none">[[notifications:none]]</option>
<option value="notification">[[notifications:notification-only]]</option>
<option value="email">[[notifications:email-only]]</option>
<option value="notificationemail">[[notifications:notification-and-email]]</option>
</select>
</div>
</div>
{{{ end }}}
</div>
</div>
<!-- IMPORT admin/partials/settings/toc.tpl -->
</div>
</div>