| | |
| | | using HMI.Core.Entity; |
| | | using HMI.Base; |
| | | using HMI.Core.Entity; |
| | | using HMI.Core.Setting; |
| | | using HMI.Core.Util; |
| | | using HMI.UI.DpUtil; |
| | |
| | | using log4net; |
| | | using Panuon.WPF.UI; |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Data; |
| | | using System.IO; |
| | | using System.Threading.Tasks; |
| | | using System.Windows; |
| | | using System.Windows.Threading; |
| | | using WPFProject.Utils; |
| | | using static System.Windows.Forms.VisualStyles.VisualStyleElement.StartPanel; |
| | | |
| | |
| | | } |
| | | } |
| | | |
| | | private void DoLogin(string username, string password, bool rememberMe) |
| | | private List<PermissionData> SelectPermission(string username, SqliteHelper sqliteHelper, out List<PermissionData> allPermission) |
| | | { |
| | | SqliteHelper helper = null; |
| | | |
| | | List<PermissionData> data = new List<PermissionData>(); |
| | | allPermission = new List<PermissionData>(); |
| | | Dictionary<string, PermissionData> cache = new Dictionary<string, PermissionData>(); |
| | | try |
| | | { |
| | | helper = new SqliteHelper(PathHelper.DatabasePath); |
| | | 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) |
| | | { |
| | | throw new LoginException(LangUtil.Get("App.ErrorUsernameOrPassword")); |
| | | } |
| | | UserInfo user = new UserInfo( |
| | | dt.Rows[0]["id"].ToString(), |
| | | 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")); |
| | | } |
| | | string sql = $@"SELECT DISTINCT m.* FROM menu AS m INNER JOIN role_menu_rel AS rrel ON m.code = rrel.menuCode |
| | | INNER JOIN role AS r ON rrel.roleCode = r.code |
| | | INNER JOIN user_role_rel AS urel ON r.code = urel.roleCode |
| | | AND urel.username = '{username}' ORDER BY m.level,m.sort, m.id;"; |
| | | |
| | | Dispatcher.Invoke(() => |
| | | DataTable dt = sqliteHelper.GetDataTable(sql); |
| | | if (dt != null) |
| | | { |
| | | LoadingWindow loading = new LoadingWindow(); |
| | | loading.Show(); |
| | | this.Closed -= window_Closed; |
| | | this.Close(); |
| | | }); |
| | | foreach (DataRow dr in dt.Rows) |
| | | { |
| | | string path = Path.Combine(PathHelper.IconFolder, dr["iconPath"].ToString()); |
| | | var menu = new PermissionData |
| | | { |
| | | Code = dr["code"].ToString(), |
| | | Name = dr["name"].ToString(), |
| | | Type = dr["type"].ToString(), |
| | | ParentCode = dr["parentCode"].ToString(), |
| | | DllPath = dr["dllPath"].ToString(), |
| | | ClassName = dr["className"].ToString(), |
| | | IconFont = dr["icon"].ToString() |
| | | }; |
| | | cache[menu.Code] = menu; |
| | | allPermission.Add(menu); |
| | | if (!cache.ContainsKey(menu.ParentCode)) |
| | | { |
| | | data.Add(menu); |
| | | } |
| | | else |
| | | { |
| | | cache[menu.ParentCode].Children.Add(menu); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | //LoadMessageAppend?.Invoke(this, ex.Message); |
| | | } |
| | | return data; |
| | | } |
| | | |
| | | private void DoLogin(string username, string password, bool rememberMe) |
| | | { |
| | | try |
| | | { |
| | | using (SqliteHelper helper = new SqliteHelper(PathHelper.DatabasePath)) |
| | | { |
| | | string sql = $"SELECT id,code,username,password,name From user WHERE username='{username}' and password='{password}'"; |
| | | DataTable dt = helper.GetDataTable(sql); |
| | | if (dt == null || dt.Rows.Count <= 0) |
| | | { |
| | | throw new LoginException(LangUtil.Get("App.ErrorUsernameOrPassword")); |
| | | } |
| | | List<PermissionData> permissions = SelectPermission(username, helper, out List<PermissionData> allPermission); |
| | | UserInfo user = new UserInfo( |
| | | dt.Rows[0]["id"].ToString(), |
| | | dt.Rows[0]["code"].ToString(), |
| | | dt.Rows[0]["username"].ToString(), |
| | | dt.Rows[0]["name"].ToString(), |
| | | permissions, |
| | | allPermission, |
| | | dt.Rows[0]["password"].ToString() |
| | | ); |
| | | |
| | | UserInfo.Login(user); |
| | | if (rememberMe) |
| | | { |
| | | // 记住登录操作 |
| | | string userToken = |
| | | JsonUtil.Serialize( |
| | | new UserInfo(null, user.Code, user.Username, user.Name, null, null, |
| | | 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(); |
| | | }); |
| | | } |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | |
| | | } |
| | | finally |
| | | { |
| | | |
| | | Dispatcher.Invoke(() => |
| | | { |
| | | ButtonHelper.SetIsPending(BtnLogin, false); |