Push Changes from Techcrafters Repo

This commit is contained in:
2026-03-05 14:37:43 +01:00
parent d2665d17fa
commit 9636ff0457
215 changed files with 5052 additions and 14150 deletions

View File

@@ -0,0 +1,213 @@
using CommunityToolkit.Mvvm.ComponentModel;
using CommunityToolkit.Mvvm.Input;
using Heisig.HMI.AdsManager;
using HMIToolkit;
using InfineonHMI.Common;
using MahApps.Metro.Controls;
using Microsoft.Win32;
using System.Collections.ObjectModel;
using System.ComponentModel.DataAnnotations;
using System.Drawing.Text;
using System.Security;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Input;
using TwinCAT.TypeSystem;
namespace Common;
public sealed partial class UserManagementWindowVm : ObservableValidator
{
private IAdsManager _adsManager;
private readonly string _variableName;
[ObservableProperty] private string? selectedUsername;
[ObservableProperty] private string newUser;
[ObservableProperty] private ObservableCollection<string>? savedUsers;
private ObservableCollection<User> users;
private UserManagementWindow dlg = new UserManagementWindow();
private string selectedUserPassword;
private string filePath = "C:\\ProgramData\\InfineonHMI_UserData\\Userdata.xml";
private string selectedUserPasswordWdh;
public User CurrentUser { get; set; }
public string SelectedUserPassword
{
get { return selectedUserPassword; }
set
{
SetProperty(ref selectedUserPassword, value);
IsCreateCommandEnabled = SelectedUserPasswordWdh.Equals(value) && !string.IsNullOrEmpty(value)&& CurrentUser.UserLevel>0;
}
}
public string? SelectedUserPasswordWdh
{
get { return selectedUserPasswordWdh; }
set
{
SetProperty(ref selectedUserPasswordWdh, value);
IsCreateCommandEnabled = SelectedUserPassword.Equals(value) && !string.IsNullOrEmpty(value) && CurrentUser.UserLevel > 0;
}
}
[ObservableProperty] private bool isCreateCommandEnabled;
public UserManagementWindowVm()
{
IsCreateCommandEnabled = false;
CurrentUser = new("default", "default", 0);
users = L4ItXmlSerializer.DeSerializeObject<ObservableCollection<User>>(filePath);
savedUsers = new ObservableCollection<string>();
foreach (var user in users)
{
if (user.UserName != null)
savedUsers.Add(user.UserName);
}
selectedUserPassword = "";
selectedUserPasswordWdh = "";
selectedUsername = "";
SelectedUserPasswordWdh = "";
SelectedUserPassword = "";
SelectedUsername = "";
}
public UserManagementWindowVm(User curUser)
{
IsCreateCommandEnabled = true;
if (curUser != null)
{
CurrentUser = curUser;
}
else
{
CurrentUser = new User("unknown", "default", 100);
}
users = L4ItXmlSerializer.DeSerializeObject<ObservableCollection<User>>(filePath);
savedUsers = new ObservableCollection<string>();
if (users == null)
{
users = new ObservableCollection<User>();
users.Add(new User("default", "ssW+1nwLrdWTKi1tkE/pfQ==", 100));
}
foreach (var user in users)
{
if(user.UserName != null)
savedUsers.Add(user.UserName);
}
selectedUserPassword = "";
selectedUserPasswordWdh = "";
selectedUsername = "";
SelectedUserPasswordWdh = "";
SelectedUserPassword = "";
SelectedUsername = "";
}
public User GetCurrentUserLevel()
{
dlg.DataContext = this;
dlg.ShowDialog();
return CurrentUser;
}
[RelayCommand]
private void Login()
{
User userInFile = new User("default", "default", 0);
bool userFound = false;
foreach (var user in users)
{
if (user.UserName.Equals(SelectedUsername))
{
userInFile = user;
userFound = true;
break;
}
}
if (userFound && CheckPassword(userInFile))
{
CurrentUser = userInFile;
}
dlg.Close();
}
[RelayCommand]
private void Logoff()
{
CurrentUser = new User("default", "default", 0);
dlg.Close();
}
[RelayCommand]
private void CreateUser()
{
if(!SelectedUserPassword.Equals(SelectedUserPasswordWdh))
return;
if (users == null)
users = new ();
var u = new User
{
UserName = NewUser,
PasswordHash = L4ItXmlSerializer.Encrypt(SelectedUserPassword),
UserLevel = 100,
};
users.Add(new User(u));
SavedUsers.Add(NewUser);
SelectedUserPassword = "";
SelectedUserPasswordWdh = "";
L4ItXmlSerializer.SerializeObject(users, filePath);
}
[RelayCommand]
private void DeleteUser()
{
if (SelectedUsername.Equals("default"))
return;
users.Remove(users.First(user => user.UserName.Equals(SelectedUsername)));
SavedUsers = new ObservableCollection<string>();
foreach (var user in users)
{
SavedUsers.Add(user.UserName);
}
L4ItXmlSerializer.SerializeObject(users, filePath);
}
private bool CheckPassword(User user)
{
var hashcode = L4ItXmlSerializer.Decrypt(user.PasswordHash);
if (hashcode.Equals(SelectedUserPassword))
return true;
return false;
}
}