Проверка, что пароли совпадают, и пароль теперь вводится *

This commit is contained in:
2025-12-05 02:05:23 +03:00
parent 77b3aba94f
commit 6c96b6c410
3 changed files with 91 additions and 22 deletions

View File

@@ -1,28 +1,52 @@
<Window xmlns="https://github.com/avaloniaui" <Window xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Class="KeyKeeper.Views.PasswordDialog" x:Class="KeyKeeper.PasswordDialog"
Title="Создание хранилища" Title="Создание хранилища"
Width="300" Width="350"
Height="200"> Height="230">
<StackPanel Margin="20" VerticalAlignment="Center"> <StackPanel Margin="20" VerticalAlignment="Center">
<TextBlock Text="Введите мастер-пароль:" Margin="0,0,0,5"/> <TextBlock Text="Set Master Password"
<TextBox x:Name="PasswordBox" FontSize="16"
Margin="0,0,0,15"/> FontWeight="Bold"
Margin="0,0,0,15"/>
<TextBlock Text="Подтвердите пароль:" Margin="0,0,0,5"/> <!-- Поле для пароля (звездочки) -->
<TextBox x:Name="ConfirmBox" <StackPanel Margin="0,0,0,10">
Margin="0,0,0,20"/> <TextBlock Text="Password:" Margin="0,0,0,5"/>
<TextBox x:Name="PasswordBox"
PasswordChar="*"
Width="250"/>
</StackPanel>
<!-- Поле для подтверждения (звездочки) -->
<StackPanel Margin="0,0,0,15">
<TextBlock Text="Confirm Password:" Margin="0,0,0,5"/>
<TextBox x:Name="ConfirmPasswordBox"
PasswordChar="*"
Width="250"/>
</StackPanel>
<!-- Сообщение об ошибке -->
<TextBlock x:Name="ErrorText"
Text="Passwords do not match"
Foreground="Red"
FontSize="12"
Margin="0,0,0,10"
IsVisible="False"/>
<!-- Кнопки -->
<StackPanel Orientation="Horizontal" HorizontalAlignment="Center" Spacing="10"> <StackPanel Orientation="Horizontal" HorizontalAlignment="Center" Spacing="10">
<Button Content="Отмена" <Button Content="Cancel"
Width="80" Width="80"
Click="OnCancelClick"/> Height="30"
Click="CancelButton_Click"/>
<Button Content="Создать" <Button Content="Create"
Width="80" Width="80"
Click="OnCreateClick"/> Height="30"
Click="CreateButton_Click"/>
</StackPanel> </StackPanel>
</StackPanel> </StackPanel>

View File

@@ -1,8 +1,9 @@
using Avalonia; using Avalonia;
using Avalonia.Controls; using Avalonia.Controls;
using Avalonia.Markup.Xaml; using Avalonia.Markup.Xaml;
using Avalonia.Interactivity;
namespace KeyKeeper.Views namespace KeyKeeper
{ {
public partial class PasswordDialog : Window public partial class PasswordDialog : Window
{ {
@@ -19,15 +20,47 @@ namespace KeyKeeper.Views
AvaloniaXamlLoader.Load(this); AvaloniaXamlLoader.Load(this);
} }
private void OnCreateClick(object sender, Avalonia.Interactivity.RoutedEventArgs e) private void CreateButton_Click(object sender, RoutedEventArgs e)
{ {
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>
var passwordBox = this.FindControl<TextBox>("PasswordBox"); var passwordBox = this.FindControl<TextBox>("PasswordBox");
Password = passwordBox?.Text ?? ""; var confirmBox = this.FindControl<TextBox>("ConfirmPasswordBox");
var errorText = this.FindControl<TextBlock>("ErrorText");
string password = passwordBox?.Text ?? "";
string confirmPassword = confirmBox?.Text ?? "";
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if (string.IsNullOrEmpty(password) || string.IsNullOrEmpty(confirmPassword))
{
ShowError("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
return;
}
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if (password != confirmPassword)
{
ShowError("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
return;
}
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
Password = password;
Created = true; Created = true;
Close(); Close();
} }
private void OnCancelClick(object sender, Avalonia.Interactivity.RoutedEventArgs e) private void ShowError(string message)
{
var errorText = this.FindControl<TextBlock>("ErrorText");
if (errorText != null)
{
errorText.Text = message;
errorText.IsVisible = true;
}
}
private void CancelButton_Click(object sender, RoutedEventArgs e)
{ {
Created = false; Created = false;
Close(); Close();

View File

@@ -1,17 +1,29 @@
<Window xmlns="https://github.com/avaloniaui" <Window xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Class="KeyKeeper.PasswordEntryDialog" x:Class="KeyKeeper.PasswordEntryDialog"
Title="Введите пароль" Title="Enter Master Password"
Width="300" Width="300"
Height="180"> Height="180">
<StackPanel Margin="20" VerticalAlignment="Center"> <StackPanel Margin="20" VerticalAlignment="Center">
<TextBlock Text="Введите мастер-пароль:" Margin="0,0,0,15"/> <TextBlock Text="Enter master password:" Margin="0,0,0,15"/>
<TextBox x:Name="PasswordBox" Margin="0,0,0,20"/>
<!-- Поле для ввода пароля с звездочками -->
<TextBox x:Name="PasswordBox"
PasswordChar="*"
Margin="0,0,0,20"
Width="250"/>
<StackPanel Orientation="Horizontal" HorizontalAlignment="Center" Spacing="10"> <StackPanel Orientation="Horizontal" HorizontalAlignment="Center" Spacing="10">
<Button Content="Отмена" Width="80" Click="CancelButton_Click"/> <Button Content="Cancel"
<Button Content="Открыть" Width="80" Click="OpenButton_Click"/> Width="80"
Height="30"
Click="CancelButton_Click"/>
<Button Content="Open"
Width="80"
Height="30"
Click="OpenButton_Click"/>
</StackPanel> </StackPanel>
</StackPanel> </StackPanel>