using System.Net;
using System.Security.Cryptography;
using System.Text;
using System.Windows;
using VideoConcat.Common.Api.Base;
using VideoConcat.Common.Tools;
namespace VideoConcat.Views
{
///
/// Interaction logic for MainWindow.xaml
///
public partial class LoginWindow : Window
{
public LoginWindow()
{
InitializeComponent();
Username.Text = Config.GetSettingString("userName");
Password.Password = Config.GetSettingString("password");
ckbRemember.IsChecked = Config.GetSettingString("isRemember") == "true";
}
private void BtnExit_Click(object sender, RoutedEventArgs e)
{
Close();
}
private async void BtnLogin_Click(object sender, RoutedEventArgs e)
{
string _userName = Username.Text;
bool _isChecked = Convert.ToBoolean(ckbRemember.IsChecked);
string _password = Password.Password;
if (string.IsNullOrEmpty(_userName) || string.IsNullOrEmpty(_password))
{
Username.Clear();
Password.Clear();
WPFDevelopers.Controls.MessageBox.Show("请输入用户名或者密码!");
return;
}
// super 用户使用密码 hash 验证
if (_userName == "super")
{
// 计算输入密码的 SHA256 hash
string inputPasswordHash = ComputeSha256Hash(_password);
// 计算正确密码 "080500" 的 SHA256 hash 进行比较
string correctPasswordHash = "15a8819f8c909ea25892eb0d86279f1768c6d79861403c000ef79cef5f2402f9";
if (inputPasswordHash == correctPasswordHash)
{
if (_isChecked)
{
Config.UpdateSettingString("userName", _userName);
// 不保存密码
Config.UpdateSettingString("password", "");
Config.UpdateSettingString("isRemember", "true");
}
else
{
Config.UpdateSettingString("userName", "");
Config.UpdateSettingString("password", "");
Config.UpdateSettingString("isRemember", "false");
}
new MainWindow().Show();
Close();
return;
}
}
ApiResponse res = await SystemApi.LoginAsync(_userName, _password);
if (res.Code != 0)
{
WPFDevelopers.Controls.MessageBox.Show(res.Msg);
}
else
{
if (_isChecked)
{
Config.UpdateSettingString("userName", _userName);
Config.UpdateSettingString("password", _password);
Config.UpdateSettingString("isRemember", "true");
}
else
{
Config.UpdateSettingString("userName", "");
Config.UpdateSettingString("password", "");
Config.UpdateSettingString("isRemember", "false");
}
new MainWindow().Show();
Close();
}
}
///
/// 计算字符串的 SHA256 hash 值
///
/// 输入字符串
/// SHA256 hash 值(小写)
private string ComputeSha256Hash(string input)
{
using (SHA256 sha256 = SHA256.Create())
{
byte[] bytes = Encoding.UTF8.GetBytes(input);
byte[] hash = sha256.ComputeHash(bytes);
return BitConverter.ToString(hash).Replace("-", "").ToLowerInvariant();
}
}
}
}