mirror of
https://github.com/open-webui/open-webui.git
synced 2026-10-28 06:22:33 +00:00
fix: regenerate menu setting shows while regenerating is not allowed (#32974)
Settings > Interface showed "Regenerate Menu" to users without permission to regenerate responses. Those users have no regenerate button, so the setting did nothing. It now only shows to users who can regenerate, and the settings search skips it for everyone else. Refs #32830
This commit is contained in:
parent
11081b1567
commit
c4aac6152b
2 changed files with 29 additions and 23 deletions
|
|
@ -1,5 +1,6 @@
|
|||
<script lang="ts">
|
||||
import {
|
||||
canRegenerateResponses,
|
||||
canUseCalls,
|
||||
canUseChannels,
|
||||
canUseTemporaryChats,
|
||||
|
|
@ -1368,32 +1369,34 @@
|
|||
</p>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<div class={settingRowClass}>
|
||||
<label
|
||||
id="regenerate-menu-label"
|
||||
class={settingLabelClass}
|
||||
for="regenerate-menu-label-control"
|
||||
>
|
||||
{$i18n.t('settings.personal.interface.regenerateMenu.label')}
|
||||
</label>
|
||||
{#if canRegenerateResponses({ user: $user, config: $config })}
|
||||
<div>
|
||||
<div class={settingRowClass}>
|
||||
<label
|
||||
id="regenerate-menu-label"
|
||||
class={settingLabelClass}
|
||||
for="regenerate-menu-label-control"
|
||||
>
|
||||
{$i18n.t('settings.personal.interface.regenerateMenu.label')}
|
||||
</label>
|
||||
|
||||
<div class={settingControlClass}>
|
||||
<Switch
|
||||
ariaLabelledbyId="regenerate-menu-label"
|
||||
tooltip={true}
|
||||
bind:state={regenerateMenu}
|
||||
inherited={isDefaultSetting('regenerateMenu')}
|
||||
on:change={() => {
|
||||
saveSettings({ regenerateMenu });
|
||||
}}
|
||||
/>
|
||||
<div class={settingControlClass}>
|
||||
<Switch
|
||||
ariaLabelledbyId="regenerate-menu-label"
|
||||
tooltip={true}
|
||||
bind:state={regenerateMenu}
|
||||
inherited={isDefaultSetting('regenerateMenu')}
|
||||
on:change={() => {
|
||||
saveSettings({ regenerateMenu });
|
||||
}}
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<p class={settingDescriptionClass}>
|
||||
{$i18n.t('settings.personal.interface.regenerateMenu.description')}
|
||||
</p>
|
||||
</div>
|
||||
<p class={settingDescriptionClass}>
|
||||
{$i18n.t('settings.personal.interface.regenerateMenu.description')}
|
||||
</p>
|
||||
</div>
|
||||
{/if}
|
||||
|
||||
<div>
|
||||
<div class={settingRowClass}>
|
||||
|
|
|
|||
|
|
@ -26,6 +26,8 @@ export const canUseCalls = ({ user }: SettingsAccessContext) =>
|
|||
export const canUseWebSearch = ({ user, config }: SettingsAccessContext) =>
|
||||
config?.features?.enable_web_search &&
|
||||
(user?.role === 'admin' || user?.permissions?.features?.web_search);
|
||||
export const canRegenerateResponses = ({ user }: SettingsAccessContext) =>
|
||||
user?.role === 'admin' || (user?.permissions?.chat?.regenerate_response ?? true);
|
||||
export const isSettingsAdmin = ({ user }: SettingsAccessContext) => user?.role === 'admin';
|
||||
|
||||
/** Only permission-gated text needs an explicit rule. Provider/disclosure state is irrelevant. */
|
||||
|
|
@ -84,5 +86,6 @@ export function canSearchSetting(
|
|||
if (stem === 'settings.personal.shortcuts.newTemporaryChat')
|
||||
return !!canUseTemporaryChats(context);
|
||||
if (stem === 'settings.personal.shortcuts.deleteChat') return canManageChats(context, 'delete');
|
||||
if (stem === 'settings.personal.interface.regenerateMenu') return canRegenerateResponses(context);
|
||||
return true;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue