| | |
| | | using HMI.Core.Entity; |
| | | using HMI.Core.Setting; |
| | | using HMI.Core.Util; |
| | | using HMI.UI.DpUtil; |
| | | using HMI.UI.Util; |
| | |
| | | using Panuon.WPF.UI; |
| | | using System; |
| | | using System.Data; |
| | | using System.IO; |
| | | using System.Threading.Tasks; |
| | | using System.Windows; |
| | | using WPFProject.Utils; |
| | | using static System.Windows.Forms.VisualStyles.VisualStyleElement.StartPanel; |
| | | |
| | | namespace WPFProject |
| | | { |
| | | public class LoginException : Exception |
| | | { |
| | | public LoginException(string message):base(message) |
| | | public LoginException(string message) : base(message) |
| | | { |
| | | } |
| | | } |
| | |
| | | InitializeComponent(); |
| | | } |
| | | |
| | | private static readonly Encryptor encryptor = new Encryptor("aB3dE5fG7hI9jjK1lMnOpQrS2tUvWxYz", |
| | | "8Wq9RsT4vYx6ZuB1"); |
| | | |
| | | private void Button_Click(object sender, RoutedEventArgs e) |
| | | { |
| | | if (FormGroupHelper.ValidateForm(formPanel)) |
| | |
| | | ButtonHelper.SetIsPending(BtnLogin, true); |
| | | string username = TbAccount.Text; |
| | | string password = PwdPassword.Password; |
| | | bool rememberMe = SwRememberMe.IsChecked == true; |
| | | Task.Run(() => |
| | | { |
| | | DoLogin(username, password); |
| | | DoLogin(username, password, rememberMe); |
| | | }); |
| | | } |
| | | |
| | | //try |
| | | //{ |
| | | |
| | | //} |
| | | //finally { |
| | | // ButtonHelper.SetIsPending(BtnLogin, false); |
| | | //} |
| | | |
| | | } |
| | | |
| | | private void DoLogin(string username, string password) |
| | | private void DoLogin(string username, string password, bool rememberMe) |
| | | { |
| | | SqliteHelper helper = null; |
| | | |
| | | try |
| | | { |
| | | helper = new SqliteHelper(PathHelper.DatabasePath); |
| | | string sql = $"SELECT id,username,name From user WHERE username='{username}' and password='{password}'"; |
| | | string sql = $"SELECT id,username,password,name From user WHERE username='{username}' and password='{password}'"; |
| | | DataTable dt = helper.GetDataTable(sql); |
| | | if (dt == null || dt.Rows.Count <= 0) |
| | | { |
| | |
| | | dt.Rows[0]["username"].ToString(), |
| | | dt.Rows[0]["name"].ToString()); |
| | | UserInfo.Login(user); |
| | | if (rememberMe) |
| | | { |
| | | // 记住登录操作 |
| | | string userToken = |
| | | JsonUtil.Serialize( |
| | | new UserInfo(null, user.Username, user.Name, dt.Rows[0]["password"].ToString())); |
| | | // 存储数据 |
| | | BinUtil.SaveStrToBin(encryptor.Encrypt(userToken), |
| | | Path.Combine(PathHelper.DatabaseFolder, "user.bin")); |
| | | } |
| | | |
| | | Dispatcher.Invoke(() => |
| | | { |
| | | LoadingWindow loading = new LoadingWindow(); |
| | | loading.Show(); |
| | | this.Closed -= window_Closed; |
| | | this.Close(); |
| | | }); |
| | | } |
| | |
| | | }); |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 渲染完成后,尝试自动登录 |
| | | /// </summary> |
| | | /// <param name="sender"></param> |
| | | /// <param name="e"></param> |
| | | private void WindowX_ContentRendered(object sender, EventArgs e) |
| | | { |
| | | string userToken = string.Empty; |
| | | if (BinUtil.LoadStrFromBin(ref userToken, Path.Combine(PathHelper.DatabaseFolder, "user.bin"))) |
| | | { |
| | | userToken = encryptor.Decrypt(userToken); |
| | | UserInfo userInfo = JsonUtil.Deserialize<UserInfo>(userToken); |
| | | TbAccount.Text = userInfo.Username; |
| | | PwdPassword.Password = userInfo.Password; |
| | | SwRememberMe.IsChecked = true; |
| | | Button_Click(null, null); |
| | | } |
| | | } |
| | | private void window_Closed(object sender, EventArgs e) |
| | | { |
| | | Application.Current.Shutdown(); |
| | | } |
| | | |
| | | private void SwRememberMe_Unchecked(object sender, RoutedEventArgs e) |
| | | { |
| | | string path = Path.Combine(PathHelper.DatabaseFolder, "user.bin"); |
| | | if (File.Exists(path)) |
| | | { |
| | | File.Delete(path); |
| | | } |
| | | } |
| | | } |
| | | } |