mirror of
https://github.com/wismna/ModernKeePass.git
synced 2025-10-03 23:50:18 -04:00
Added password complexity indicator to Entry page
This commit is contained in:
@@ -13,6 +13,8 @@
|
|||||||
<Page.Resources>
|
<Page.Resources>
|
||||||
<converters:BooleanToVisibilityConverter x:Key="BooleanToVisibilityConverter"/>
|
<converters:BooleanToVisibilityConverter x:Key="BooleanToVisibilityConverter"/>
|
||||||
<converters:InverseBooleanToVisibilityConverter x:Key="InverseBooleanToVisibilityConverter"/>
|
<converters:InverseBooleanToVisibilityConverter x:Key="InverseBooleanToVisibilityConverter"/>
|
||||||
|
<converters:ProgressBarLegalValuesConverter x:Key="ProgressBarLegalValuesConverter"/>
|
||||||
|
<converters:DoubleToForegroungBrushComplexityConverter x:Key="DoubleToForegroungBrushComplexityConverter"/>
|
||||||
<Style TargetType="PasswordBox" x:Name="PasswordBoxWithButtonStyle">
|
<Style TargetType="PasswordBox" x:Name="PasswordBoxWithButtonStyle">
|
||||||
<Setter Property="MinWidth" Value="{ThemeResource TextControlThemeMinWidth}" />
|
<Setter Property="MinWidth" Value="{ThemeResource TextControlThemeMinWidth}" />
|
||||||
<Setter Property="MinHeight" Value="{ThemeResource TextControlThemeMinHeight}" />
|
<Setter Property="MinHeight" Value="{ThemeResource TextControlThemeMinHeight}" />
|
||||||
@@ -376,6 +378,7 @@
|
|||||||
<TextBlock TextWrapping="Wrap" Text="Password" FontSize="18"/>
|
<TextBlock TextWrapping="Wrap" Text="Password" FontSize="18"/>
|
||||||
<PasswordBox HorizontalAlignment="Left" Password="{Binding Password, Mode=TwoWay}" Width="350" Height="32" IsPasswordRevealButtonEnabled="True" Visibility="{Binding IsRevealPassword, Converter={StaticResource InverseBooleanToVisibilityConverter}}" Style="{StaticResource PasswordBoxWithButtonStyle}" />
|
<PasswordBox HorizontalAlignment="Left" Password="{Binding Password, Mode=TwoWay}" Width="350" Height="32" IsPasswordRevealButtonEnabled="True" Visibility="{Binding IsRevealPassword, Converter={StaticResource InverseBooleanToVisibilityConverter}}" Style="{StaticResource PasswordBoxWithButtonStyle}" />
|
||||||
<TextBox HorizontalAlignment="Left" TextWrapping="Wrap" Text="{Binding Password, Mode=TwoWay}" Width="350" Height="32" Visibility="{Binding IsRevealPassword, Converter={StaticResource BooleanToVisibilityConverter}}" />
|
<TextBox HorizontalAlignment="Left" TextWrapping="Wrap" Text="{Binding Password, Mode=TwoWay}" Width="350" Height="32" Visibility="{Binding IsRevealPassword, Converter={StaticResource BooleanToVisibilityConverter}}" />
|
||||||
|
<ProgressBar Value="{Binding PasswordComplexityIndicator, ConverterParameter=0\,128, Converter={StaticResource ProgressBarLegalValuesConverter}}" Maximum="128" Width="350" HorizontalAlignment="Left" Foreground="{Binding PasswordComplexityIndicator, ConverterParameter=128, Converter={StaticResource DoubleToForegroungBrushComplexityConverter}}" />
|
||||||
<CheckBox HorizontalAlignment="Left" Margin="-3,0,0,0" Content="Show password" IsChecked="{Binding IsRevealPassword, Mode=TwoWay}" IsEnabled="{Binding IsRevealPasswordEnabled}" />
|
<CheckBox HorizontalAlignment="Left" Margin="-3,0,0,0" Content="Show password" IsChecked="{Binding IsRevealPassword, Mode=TwoWay}" IsEnabled="{Binding IsRevealPasswordEnabled}" />
|
||||||
<TextBlock TextWrapping="Wrap" Text="URL" FontSize="18"/>
|
<TextBlock TextWrapping="Wrap" Text="URL" FontSize="18"/>
|
||||||
<local:TextBoxWithButton x:Name="UrlTextBox" HorizontalAlignment="Left" Text="{Binding Url, Mode=TwoWay}" Height="32" Width="350" MaxLength="256" Style="{StaticResource TextBoxWithButtonStyle}" GotoClick="UrlButton_Click" />
|
<local:TextBoxWithButton x:Name="UrlTextBox" HorizontalAlignment="Left" Text="{Binding Url, Mode=TwoWay}" Height="32" Width="350" MaxLength="256" Style="{StaticResource TextBoxWithButtonStyle}" GotoClick="UrlButton_Click" />
|
||||||
|
@@ -7,6 +7,7 @@ using ModernKeePassLib.Cryptography.PasswordGenerator;
|
|||||||
using ModernKeePassLib.Security;
|
using ModernKeePassLib.Security;
|
||||||
using System;
|
using System;
|
||||||
using Windows.UI.Xaml;
|
using Windows.UI.Xaml;
|
||||||
|
using ModernKeePassLib.Cryptography;
|
||||||
|
|
||||||
namespace ModernKeePass.ViewModels
|
namespace ModernKeePass.ViewModels
|
||||||
{
|
{
|
||||||
@@ -18,7 +19,8 @@ namespace ModernKeePass.ViewModels
|
|||||||
public System.Drawing.Color? BackgroundColor => Entry?.BackgroundColor;
|
public System.Drawing.Color? BackgroundColor => Entry?.BackgroundColor;
|
||||||
public System.Drawing.Color? ForegroundColor => Entry?.ForegroundColor;
|
public System.Drawing.Color? ForegroundColor => Entry?.ForegroundColor;
|
||||||
public bool IsRevealPasswordEnabled => !string.IsNullOrEmpty(Password);
|
public bool IsRevealPasswordEnabled => !string.IsNullOrEmpty(Password);
|
||||||
|
public bool HasExpired => HasExpirationDate && Entry.ExpiryTime < DateTime.Now;
|
||||||
|
public double PasswordComplexityIndicator => QualityEstimation.EstimatePasswordBits(Password.ToCharArray());
|
||||||
|
|
||||||
public double PasswordLength { get; set; } = 25;
|
public double PasswordLength { get; set; } = 25;
|
||||||
public bool UpperCasePatternSelected { get; set; } = true;
|
public bool UpperCasePatternSelected { get; set; } = true;
|
||||||
@@ -55,6 +57,7 @@ namespace ModernKeePass.ViewModels
|
|||||||
{
|
{
|
||||||
SetEntryValue(PwDefs.PasswordField, value);
|
SetEntryValue(PwDefs.PasswordField, value);
|
||||||
NotifyPropertyChanged("Password");
|
NotifyPropertyChanged("Password");
|
||||||
|
NotifyPropertyChanged("PasswordComplexityIndicator");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
public string Url
|
public string Url
|
||||||
@@ -118,11 +121,7 @@ namespace ModernKeePass.ViewModels
|
|||||||
NotifyPropertyChanged("HasExpirationDate");
|
NotifyPropertyChanged("HasExpirationDate");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
public bool HasExpired
|
|
||||||
{
|
|
||||||
get { return HasExpirationDate && Entry.ExpiryTime < DateTime.Now; }
|
|
||||||
}
|
|
||||||
|
|
||||||
public event PropertyChangedEventHandler PropertyChanged;
|
public event PropertyChangedEventHandler PropertyChanged;
|
||||||
|
|
||||||
private bool _isEditMode;
|
private bool _isEditMode;
|
||||||
@@ -167,6 +166,7 @@ namespace ModernKeePass.ViewModels
|
|||||||
Entry?.Strings.Set(PwDefs.PasswordField, password);
|
Entry?.Strings.Set(PwDefs.PasswordField, password);
|
||||||
NotifyPropertyChanged("Password");
|
NotifyPropertyChanged("Password");
|
||||||
NotifyPropertyChanged("IsRevealPasswordEnabled");
|
NotifyPropertyChanged("IsRevealPasswordEnabled");
|
||||||
|
NotifyPropertyChanged("PasswordComplexityIndicator");
|
||||||
}
|
}
|
||||||
|
|
||||||
private string GetEntryValue(string key)
|
private string GetEntryValue(string key)
|
||||||
|
Reference in New Issue
Block a user