Rechte (2/2)

+ Endpunkte Rechte Fix
This commit is contained in:
2026-03-04 15:36:55 +01:00
parent f22dfb3bec
commit 24003a2014
11 changed files with 53 additions and 55 deletions

View File

@@ -14,6 +14,11 @@ namespace BeWo.Converter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
#if DEBUG
if (BeWoApp.IsInDesignMode)
return true;
#endif
try
{
if (value is UserRightType type)
@@ -36,6 +41,9 @@ namespace BeWo.Converter
if (setting == SettingsKeys.ShowGkvBzUrbelege)
return BeWoApp.Mandator.ShowGkvBzUrbelege;
if (setting == SettingsKeys.ShowAI)
return BeWoApp.AppSettings.ShowAI;
}
}
catch (Exception)

View File

@@ -53,25 +53,6 @@
Grid.Column="2"
HorizontalAlignment="Right"
Orientation="Horizontal">
<ToggleButton
x:Name="EditToggleButton"
Grid.Column="4"
Width="157"
Height="25"
Margin="3"
Content="Bearbeiten aktivieren"
IsChecked="{Binding IsEditingMode}"
ToolTip="Wenn der Bearbeiten Modus aktiviert ist, können Sie Elemente mit Drag und Drop verschieben"
Visibility="Collapsed" />
<Button
Style="{StaticResource ButtonPreviousStyle}"
ToolTip="Letzte Änderung rückgängig machen"
Visibility="Collapsed" />
<Button
Style="{StaticResource ButtonRedoStyle}"
ToolTip="Nächste Änderung wiederholen"
Visibility="Collapsed" />
</StackPanel>
<GroupBox
@@ -86,7 +67,6 @@
Padding="4,16,4,16"
AllowDrop="True"
ContextMenuOpening="treeView_ContextMenuOpening"
ContextMenuService.IsEnabled="{Binding IsChecked, ElementName=EditToggleButton}"
ItemContainerStyle="{DynamicResource igoal_treeitemstyle}"
ItemTemplate="{StaticResource ai_promptbaustein_folder_itemtemplate}"
ItemsSource="{Binding Folders.VMList, UpdateSourceTrigger=PropertyChanged}"
@@ -158,7 +138,6 @@
Padding="4,16,4,16"
AllowDrop="False"
ContextMenuOpening="ListBox_ContextMenuOpening"
ContextMenuService.IsEnabled="{Binding IsChecked, ElementName=EditToggleButton}"
ItemContainerStyle="{StaticResource PromptListBoxItem}"
ItemsSource="{Binding SelectedFolder.Prompts, UpdateSourceTrigger=PropertyChanged}"
SelectedItem="{Binding SelectedPrompt, Mode=TwoWay}"

View File

@@ -7,6 +7,7 @@
xmlns:dxa="http://schemas.devexpress.com/winfx/2008/xaml/accordion"
xmlns:localView="clr-namespace:BeWo.View"
xmlns:markup="clr-namespace:BeWo.MultiLanguage.Markup"
xmlns:shared="clr-namespace:BS.Shared;assembly=BS.Shared"
xmlns:t="clr-namespace:BeWo.MultiLanguage.Markup"
xmlns:uc="clr-namespace:BeWo.Controls;assembly=BeWo.Controls"
Width="Auto"
@@ -318,7 +319,11 @@
Header="{markup:Translate Ressource}"
Selected="Tabitem_Selected" />
</dxa:AccordionItem>
<dxa:AccordionItem Name="TabitemKIBereich" Foreground="{StaticResource TabItemTextBrush}" Header="{markup:Translate KI Bereich}">
<dxa:AccordionItem
Name="TabitemKIBereich"
Foreground="{StaticResource TabItemTextBrush}"
Header="{markup:Translate KI Bereich}"
Visibility="{Binding Converter={StaticResource UserPermission2VisibleConverter}, ConverterParameter={x:Static core:SettingsKeys.ShowAI}}">
<!--<dxa:AccordionItem
Name="TabitemAiPromptbausteine"
Foreground="Black"
@@ -332,27 +337,30 @@
IsEnabled="False"
Selected="Tabitem_Selected" />-->
<dxa:AccordionItem
Name="TabitemAiPromptbausteineComplexTree3"
Foreground="Black"
Header="{markup:Translate Promptbausteine}">
<dxa:AccordionItem
Name="TabitemAiPromptbausteineComplexTree"
Name="TabitemAiPromptbausteineComplexTree3"
Foreground="Black"
Header="{markup:Translate Zeiterfassung}">
Header="{markup:Translate Promptbausteine}"
IsEnabled="{Binding Converter={StaticResource UserPermission2BoolConverter}, ConverterParameter={x:Static shared:UserRightType.AiModulePromptbausteineView}}">
<dxa:AccordionItem
Name="TabitemAiPromptbausteineComplexTree1"
Name="TabitemAiPromptbausteineComplexTree"
Foreground="Black"
Header="{markup:Translate Chat}"
Selected="Tabitem_Selected" />
<dxa:AccordionItem
Name="TabitemAiPromptbausteineComplexTree2"
Foreground="Black"
Header="{markup:Translate Dokumentation}"
Selected="Tabitem_Selected" />
Header="{markup:Translate Zeiterfassung}">
<dxa:AccordionItem
Name="TabitemAiPromptbausteineComplexTree1"
Foreground="Black"
Header="{markup:Translate Chat}"
IsEnabled="{Binding Converter={StaticResource UserPermission2BoolConverter}, ConverterParameter={x:Static shared:UserRightType.AiModuleServiceRecordChat}}"
Selected="Tabitem_Selected" />
<dxa:AccordionItem
Name="TabitemAiPromptbausteineComplexTree2"
Foreground="Black"
Header="{markup:Translate Dokumentation}"
IsEnabled="{Binding Converter={StaticResource UserPermission2BoolConverter}, ConverterParameter={x:Static shared:UserRightType.AiModuleServiceRecordDocu}}"
Selected="Tabitem_Selected" />
</dxa:AccordionItem>
</dxa:AccordionItem>
</dxa:AccordionItem>
<dxa:AccordionItem Foreground="{StaticResource TabItemTextBrush}" Header="Sonstiges">
<dxa:AccordionItem Foreground="{StaticResource TabItemTextBrush}" Header="Sonstiges">
<dxa:AccordionItem
Name="TabitemAbsenceCategories"
Foreground="Black"

View File

@@ -99,10 +99,6 @@ namespace BeWo.View.Master
{
TabitemFalldaten.Visibility = Visibility.Collapsed;
}
if (!BeWoApp.AppSettings.ShowAI)
{
TabitemKIBereich.Visibility = Visibility.Collapsed;
}
#if DEBUG
TabitemSbd.Visibility = Visibility.Visible;

View File

@@ -138,7 +138,7 @@ namespace BeWo.ViewModel
}
public bool CanEdit
{
get => DataContract.CanEdit;
get => DataContract.CanEdit && BeWoApp.HasLoggedOnUserRight(UserRightType.AiModulePromptbausteineEdit);
set => DataContract.CanEdit = value;
}

View File

@@ -117,7 +117,7 @@ namespace BeWo.ViewModel
public bool CanEdit
{
get => DataContract.CanEdit;
get => DataContract.CanEdit && BeWoApp.HasLoggedOnUserRight(UserRightType.AiModulePromptbausteineEdit);
set => DataContract.CanEdit = value;
}

View File

@@ -45,7 +45,7 @@ namespace BeWo.ViewModel.View.Administration
public DelegateCommand DeletePromptCommand { get; private set; }
public DelegateCommand ChangeFavoritenStatePromptCommand { get; private set; }
public bool IsEditingMode { get; set; }
public bool CanEditPromptbausteine { get; set; }
public AiPromptbausteinFolderVM SelectedFolder
{
@@ -81,7 +81,7 @@ namespace BeWo.ViewModel.View.Administration
DeletePromptCommand = new DelegateCommand(OpenDeletePromptDialog, canOpenDeletePromptDialog, false);
ChangeFavoritenStatePromptCommand = new DelegateCommand(ChangeFavoritenStatePrompt, canChangeFavoritenStatePrompt, false);
IsEditingMode = BeWoApp.HasLoggedOnUserRight(UserRightType.AiModulePromptbausteineEdit);
CanEditPromptbausteine = BeWoApp.HasLoggedOnUserRight(UserRightType.AiModulePromptbausteineEdit);
}
public override bool IsDirty
@@ -317,11 +317,11 @@ namespace BeWo.ViewModel.View.Administration
bool canOpenAddFolderDialog()
{
return SelectedFolder?.CanAddFolder ?? true;
return CanEditPromptbausteine && (SelectedFolder?.CanAddFolder ?? true);
}
bool canOpenEditFolderDialog()
{
return SelectedFolder?.CanEdit ?? false;
return CanEditPromptbausteine && (SelectedFolder?.CanEdit ?? false);
}
bool canCopyFolder()
{
@@ -335,7 +335,7 @@ namespace BeWo.ViewModel.View.Administration
}
bool canDeleteFolder()
{
return SelectedFolder?.CanEdit ?? false;
return CanEditPromptbausteine && (SelectedFolder?.CanEdit ?? false);
}
void OpenAddPromptDialog()
@@ -444,7 +444,7 @@ namespace BeWo.ViewModel.View.Administration
bool canOpenAddPromptDialog()
{
return SelectedFolder?.CanAddPrompt ?? false;
return CanEditPromptbausteine && (SelectedFolder?.CanAddPrompt ?? false);
}
bool canOpenEditPromptDialog()
{
@@ -452,7 +452,7 @@ namespace BeWo.ViewModel.View.Administration
}
bool canCopyPrompt()
{
return SelectedPrompt is object;
return CanEditPromptbausteine && SelectedPrompt is object;
}
bool canPastePrompt()
{
@@ -460,7 +460,7 @@ namespace BeWo.ViewModel.View.Administration
}
bool canOpenDeletePromptDialog()
{
return SelectedPrompt?.CanEdit ?? false;
return CanEditPromptbausteine && (SelectedPrompt?.CanEdit ?? false);
}
bool canChangeFavoritenStatePrompt()

View File

@@ -390,7 +390,7 @@
<add key="SendMailModuleGkvSender" value="noreply@bewoplaner.de" />
<add key="SendMailModuleGkvReceiver" value="dakota.exchange@ownsoft.de" />
<add key="OllamaUrl" value="https://w2.ownchat.de" />
<add key="OllamaUrl" value="https://ai2.ownsoft.de" />
<add key="Ollama2Url" value="https://ai3.ownsoft.de" />
<add key="XRechnungApiUrl" value="https://test2.evplaner.de/xrg/"/>

View File

@@ -100,6 +100,13 @@ namespace BeWo.Service.Core
var name = $"BeWo.Service.ServiceContracts.{pServiceInterface}";
var t = Type.GetType(name);
methodInfo = t?.GetMethod(pMethodName);
if(methodInfo is null)
{
name = $"BeWo.Service.ServiceContracts.Enhanced.{pServiceInterface}";
t = Type.GetType(name);
methodInfo = t?.GetMethod(pMethodName);
}
}
catch (Exception)
{

View File

@@ -93,7 +93,7 @@ namespace BeWo.Service.ServiceContracts.Enhanced
[FaultContract(typeof(BeWoFault))]
[OperationContract]
[RequireWcfAuthorization(UserRightType.AiModulePromptbausteineEdit)]
[RequireWcfAuthorization(UserRightType.AiModulePromptbausteineView)]
IEnumerable<AiPromptbausteinPromptDC> UpdateAiPromptbausteinPrompt(IEnumerable<AiPromptbausteinPromptDC> prompts);
[FaultContract(typeof(BeWoFault))]
@@ -108,7 +108,7 @@ namespace BeWo.Service.ServiceContracts.Enhanced
[FaultContract(typeof(BeWoFault))]
[OperationContract]
[RequireWcfAuthorization(UserRightType.AiModulePromptbausteineView)]
[RequireWcfAuthorization(UserRightType.AiModuleServiceRecordDocu)]
AiFunctionDocResponse ExecuteAiFunctionServiceRecordDocumentation(AiFunctionDocRequest request);
}
}

View File

@@ -777,7 +777,7 @@ namespace BS.Shared.Core
dict.Add(UserRightType.AiVoiceView, Translator.Translate($"KI-Spracheingabe & Transkription verwenden"));
dict.Add(UserRightType.AiModuleChatView, Translator.Translate($"KI-Chat verwenden {action_keywords[0]}"));
dict.Add(UserRightType.AiModuleChatView, Translator.Translate($"KI-Chat (Allgemein) {action_keywords[0]}"));
//dict.Add(UserRightType.AiModuleChatAdd, Translator.Translate($"KI-Konversationen/Nachrichten {action_keywords[2]}"));
//dict.Add(UserRightType.AiModuleChatClone, Translator.Translate($"KI-Konversationen/Nachrichten {action_keywords[6]}"));
//dict.Add(UserRightType.AiModuleChatEdit, Translator.Translate($"KI-Konversationen/Nachrichten {action_keywords[3]}"));