mirror of
https://github.com/wismna/ModernKeePass.git
synced 2025-10-03 15:40:18 -04:00
113 lines
5.0 KiB
C#
113 lines
5.0 KiB
C#
![]() |
using System.Threading.Tasks;
|
|||
|
using GalaSoft.MvvmLight;
|
|||
|
using GalaSoft.MvvmLight.Command;
|
|||
|
using MediatR;
|
|||
|
using Messages;
|
|||
|
using ModernKeePass.Application.Common.Interfaces;
|
|||
|
using ModernKeePass.Application.Security.Commands.GeneratePassword;
|
|||
|
using ModernKeePass.Common;
|
|||
|
|
|||
|
namespace ModernKeePass.ViewModels
|
|||
|
{
|
|||
|
public class PasswordGenerationBoxControlVm: ViewModelBase
|
|||
|
{
|
|||
|
private readonly IMediator _mediator;
|
|||
|
private readonly ISettingsProxy _settings;
|
|||
|
private readonly ICredentialsProxy _credentials;
|
|||
|
private string _password;
|
|||
|
private bool _isRevealPassword;
|
|||
|
|
|||
|
public double PasswordComplexityIndicator => _credentials.EstimatePasswordComplexity(Password);
|
|||
|
public double PasswordLength
|
|||
|
{
|
|||
|
get { return _settings.GetSetting(Constants.Settings.PasswordGenerationOptions.PasswordLength, 25); }
|
|||
|
set { _settings.PutSetting(Constants.Settings.PasswordGenerationOptions.PasswordLength, value); }
|
|||
|
}
|
|||
|
public bool UpperCasePatternSelected
|
|||
|
{
|
|||
|
get { return _settings.GetSetting(Constants.Settings.PasswordGenerationOptions.UpperCasePattern, true); }
|
|||
|
set { _settings.PutSetting(Constants.Settings.PasswordGenerationOptions.UpperCasePattern, value); }
|
|||
|
}
|
|||
|
public bool LowerCasePatternSelected
|
|||
|
{
|
|||
|
get { return _settings.GetSetting(Constants.Settings.PasswordGenerationOptions.LowerCasePattern, true); }
|
|||
|
set { _settings.PutSetting(Constants.Settings.PasswordGenerationOptions.LowerCasePattern, value); }
|
|||
|
}
|
|||
|
public bool DigitsPatternSelected
|
|||
|
{
|
|||
|
get { return _settings.GetSetting(Constants.Settings.PasswordGenerationOptions.DigitsPattern, true); }
|
|||
|
set { _settings.PutSetting(Constants.Settings.PasswordGenerationOptions.DigitsPattern, value); }
|
|||
|
}
|
|||
|
public bool MinusPatternSelected
|
|||
|
{
|
|||
|
get { return _settings.GetSetting(Constants.Settings.PasswordGenerationOptions.MinusPattern, false); }
|
|||
|
set { _settings.PutSetting(Constants.Settings.PasswordGenerationOptions.MinusPattern, value); }
|
|||
|
}
|
|||
|
public bool UnderscorePatternSelected
|
|||
|
{
|
|||
|
get { return _settings.GetSetting(Constants.Settings.PasswordGenerationOptions.UnderscorePattern, false); }
|
|||
|
set { _settings.PutSetting(Constants.Settings.PasswordGenerationOptions.UnderscorePattern, value); }
|
|||
|
}
|
|||
|
public bool SpacePatternSelected
|
|||
|
{
|
|||
|
get { return _settings.GetSetting(Constants.Settings.PasswordGenerationOptions.SpacePattern, false); }
|
|||
|
set { _settings.PutSetting(Constants.Settings.PasswordGenerationOptions.SpacePattern, value); }
|
|||
|
}
|
|||
|
public bool SpecialPatternSelected
|
|||
|
{
|
|||
|
get { return _settings.GetSetting(Constants.Settings.PasswordGenerationOptions.SpecialPattern, true); }
|
|||
|
set { _settings.PutSetting(Constants.Settings.PasswordGenerationOptions.SpecialPattern, value); }
|
|||
|
}
|
|||
|
public bool BracketsPatternSelected
|
|||
|
{
|
|||
|
get { return _settings.GetSetting(Constants.Settings.PasswordGenerationOptions.BracketsPattern, false); }
|
|||
|
set { _settings.PutSetting(Constants.Settings.PasswordGenerationOptions.BracketsPattern, value); }
|
|||
|
}
|
|||
|
public string CustomChars { get; set; } = string.Empty;
|
|||
|
|
|||
|
public string Password
|
|||
|
{
|
|||
|
get { return _password; }
|
|||
|
set
|
|||
|
{
|
|||
|
Set(() => Password, ref _password, value);
|
|||
|
RaisePropertyChanged(() => PasswordComplexityIndicator);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
public bool IsRevealPassword
|
|||
|
{
|
|||
|
get { return _isRevealPassword; }
|
|||
|
set { Set(() => IsRevealPassword, ref _isRevealPassword, value); }
|
|||
|
}
|
|||
|
|
|||
|
public RelayCommand GeneratePasswordCommand { get; }
|
|||
|
|
|||
|
public PasswordGenerationBoxControlVm(IMediator mediator, ISettingsProxy settings, ICredentialsProxy credentials)
|
|||
|
{
|
|||
|
_mediator = mediator;
|
|||
|
_settings = settings;
|
|||
|
_credentials = credentials;
|
|||
|
|
|||
|
GeneratePasswordCommand = new RelayCommand(async () => await GeneratePassword());
|
|||
|
}
|
|||
|
|
|||
|
private async Task GeneratePassword()
|
|||
|
{
|
|||
|
Password = await _mediator.Send(new GeneratePasswordCommand
|
|||
|
{
|
|||
|
BracketsPatternSelected = BracketsPatternSelected,
|
|||
|
CustomChars = CustomChars,
|
|||
|
DigitsPatternSelected = DigitsPatternSelected,
|
|||
|
LowerCasePatternSelected = LowerCasePatternSelected,
|
|||
|
MinusPatternSelected = MinusPatternSelected,
|
|||
|
PasswordLength = (int)PasswordLength,
|
|||
|
SpacePatternSelected = SpacePatternSelected,
|
|||
|
SpecialPatternSelected = SpecialPatternSelected,
|
|||
|
UnderscorePatternSelected = UnderscorePatternSelected,
|
|||
|
UpperCasePatternSelected = UpperCasePatternSelected
|
|||
|
});
|
|||
|
MessengerInstance.Send(new PasswordGeneratedMessage { Password = Password });
|
|||
|
}
|
|||
|
}
|
|||
|
}
|