From f63d8ead25bdb3c32dacca817a059bd30390e9bc Mon Sep 17 00:00:00 2001 From: yzh <snbbt@21cn.com> Date: 星期三, 15 六月 2022 22:20:07 +0800 Subject: [PATCH] 1.系统账户数据库优化: 修改“账户类型”的数据类型为VARCHAR2(1024),多个角色时以半角“,”分隔。 加密盐。 密码加密优化;账户登录优化;角色权限管理(作废用户权限); 2.字典类型管理(定义:用户角色) 3.字典数据管理(初始化用户角色数据) 3.角色权限管理 4.系统账户管理,账户类型对应用户角色(可多选)。 --- web/Dao/UserDao.cs | 108 ++++++++++++++++++++++++++++++++++++++++++++++++----- 1 files changed, 97 insertions(+), 11 deletions(-) diff --git a/web/Dao/UserDao.cs b/web/Dao/UserDao.cs index e973d65..8ae5992 100644 --- a/web/Dao/UserDao.cs +++ b/web/Dao/UserDao.cs @@ -6,6 +6,7 @@ using System.Collections.Generic; using System.Configuration; using System.Data.Common; +using System.Text; namespace Dao { @@ -23,7 +24,9 @@ if (!((DbDataReader)reader).Read() || !this.ReadInfo(reader, user)) return false; } - user.MenuIDList = this.LoadUserMenuList(user.UserID); + //浣滃簾鐢ㄦ埛鏉冮檺锛屾敼浣跨敤瑙掕壊鏉冮檺 + //user.MenuIDList = this.LoadUserMenuList(user.UserID); + user.MenuIDList = this.LoadUserRoleMenuList(user.UserID); return true; } @@ -48,6 +51,7 @@ return list; } + //edit:yangzh by 20220615 宸蹭綔搴燂紙宸蹭娇鐢ㄧ敤鎴疯鑹插叧鑱旀潈闄�--LoadUserRoleMenuList(int userID) 锛� public Dictionary<string, SysUserMenu> LoadUserMenuList(int userID) { Dictionary<string, SysUserMenu> dictionary = new Dictionary<string, SysUserMenu>(); @@ -64,6 +68,66 @@ return dictionary; } + public Dictionary<string, SysUserMenu> LoadUserRoleMenuList(int userID) + { + StringBuilder stringBuilder = new StringBuilder(); + + Dictionary<string, SysUserMenu> dictionary = new Dictionary<string, SysUserMenu>(); + string userType = GetUserRoleByUserId(userID); + if (!string.IsNullOrEmpty(userType)) + { + List<object> list = DataConverter.stringToList(userType); + if (list.Count > 0) + { + stringBuilder.Append(" select sm.* from sys_menu sm "); + stringBuilder.Append(" left join ( "); + stringBuilder.Append(" select distinct * from ( "); + stringBuilder.Append(" select * from sys_role_menu where role_id = " + list[0] + " "); + + for (int i = 1; i < list.Count; i++) + { + stringBuilder.Append(" union (select * from sys_role_menu where role_id = " + list[i] + ") "); + + } + stringBuilder.Append(" ) bb "); + stringBuilder.Append(" ) cc on cc.menu_id = sm.menu_id "); + stringBuilder.Append(" where cc.menu_id is not null "); + using (OracleDataReader reader = OracleHelper.ExecuteReader(stringBuilder.ToString(), OracleHelper.Connection)) + { + while (reader != null && ((DbDataReader)reader).Read()) + { + /** + OracleReaderWrapper oracleReaderWrapper = new OracleReaderWrapper(reader); + string menuID = oracleReaderWrapper.GetString("MENU_ID", ""); + string menuName = oracleReaderWrapper.GetString("MENU_NAME", ""); + string remark = oracleReaderWrapper.GetString("REMARK", ""); + string parentID = oracleReaderWrapper.GetString("PARENT_ID", ""); + int menuLV = oracleReaderWrapper.GetInt("MENU_LV", 0); + SysMenu sysMenu = new SysMenu(); + sysMenu.MenuID = menuID; + sysMenu.MenuName = menuName; + sysMenu.Remark = remark; + sysMenu.ParentID = parentID; + sysMenu.MenuLV = menuLV; + + dictionary[menuID] = sysMenu; + **/ + + OracleReaderWrapper oracleReaderWrapper = new OracleReaderWrapper(reader); + string string1 = oracleReaderWrapper.GetString("MENU_ID", ""); + //string string2 = oracleReaderWrapper.GetString("MENU_DATA", ""); + string string2 = ""; + + dictionary[string1] = new SysUserMenu(string1, string2); + + } + } + } + + } + return dictionary; + } + public List<SysMenu> LoadSysMenuList() { List<SysMenu> list = new List<SysMenu>(); @@ -75,7 +139,7 @@ return list; } -//鏂板姞鐧婚檰鏃ュ織 + //鏂板姞鐧婚檰鏃ュ織 public List<SysMenu> LoadSysMenuIDList(int menuid, int menulv) { List<SysMenu> list = new List<SysMenu>(); @@ -130,7 +194,9 @@ e.UserID = oracleReaderWrapper.GetInt("USER_ID", 0); e.Account = oracleReaderWrapper.GetString("ACCOUNT", ""); e.Password = oracleReaderWrapper.GetString("PASSWORD", ""); + e.Salt = oracleReaderWrapper.GetString("SALT", ""); e.UserName = oracleReaderWrapper.GetString("USER_NAME", ""); + e.UserType = oracleReaderWrapper.GetString("USER_TYPE", ""); e.ExpireTime = oracleReaderWrapper.GetDateTime("EXPIRE_TIME"); e.CreateTime = oracleReaderWrapper.GetDateTime("CREATE_TIME"); e.Remark = oracleReaderWrapper.GetString("REMARK", ""); @@ -165,8 +231,22 @@ if (reader != null && ((DbDataReader)reader).Read()) this.ReadInfo(reader, e); } - e.MenuIDList = this.LoadUserMenuList(userID); + //浣滃簾鐢ㄦ埛鏉冮檺锛屾敼浣跨敤瑙掕壊鏉冮檺 + //e.MenuIDList = this.LoadUserMenuList(userID); + e.MenuIDList = this.LoadUserRoleMenuList(userID); return e; + } + + //鏍规嵁璐︽埛ID鑾峰彇鐢ㄦ埛瑙掕壊闆� + public string GetUserRoleByUserId(int userID) + { + SysUser e = new SysUser(); + using (OracleDataReader reader = OracleHelper.ExecuteReader("SELECT * FROM SYS_USER WHERE USER_ID=:USER_ID", OracleHelper.Connection, new OracleParameter("USER_ID", (object)userID))) + { + if (reader != null && ((DbDataReader)reader).Read()) + this.ReadInfo(reader, e); + } + return e.UserType; } public SysUser GetUser(string account) @@ -223,7 +303,7 @@ public bool Update(SysUser o)//淇敼璐﹀彿 { - return OracleHelper.ExecuteSql("update SYS_USER SET ACCOUNT=:ACCOUNT,PASSWORD=:PASSWORD,USER_NAME=:USER_NAME,EXPIRE_TIME=:EXPIRE_TIME,REMARK=:REMARK,MOBILE=:MOBILE,EMAIL=:EMAIL,MOBILE_FLAG=:MOBILE_FLAG,EMAIL_FLAG=:EMAIL_FLAG,ISENCRYPTION=:ISENCRYPTION,ISVERIFICATION=:ISVERIFICATION,CLIENTIP=:CLIENTIP,CREATE_TIME=:CREATE_TIME WHERE USER_ID=:USER_ID", OracleHelper.Connection, new OracleParameter(":ACCOUNT", (object)o.Account), new OracleParameter(":PASSWORD", (object)o.Password), new OracleParameter(":USER_NAME", (object)o.UserName), new OracleParameter(":EXPIRE_TIME", (object)o.ExpireTime), new OracleParameter(":REMARK", (object)o.Remark), new OracleParameter(":USER_ID", (object)o.UserID), new OracleParameter(":MOBILE", (object)o.Mobile), new OracleParameter(":EMAIL", (object)o.Email), new OracleParameter(":MOBILE_FLAG", (object)o.MobileFlag), new OracleParameter(":EMAIL_FLAG", (object)o.EmailFlag), new OracleParameter(":ISENCRYPTION", (object)o.IsEncryption), new OracleParameter(":ISVERIFICATION", (object)o.IsVerification), new OracleParameter(":CLIENTIP", (object)o.ClientIp), new OracleParameter(":CREATE_TIME", (object)o.CreateTime) ) > 0; + return OracleHelper.ExecuteSql("update SYS_USER SET ACCOUNT=:ACCOUNT, USER_NAME=:USER_NAME,USER_TYPE=:USER_TYPE,EXPIRE_TIME=:EXPIRE_TIME,REMARK=:REMARK,MOBILE=:MOBILE,EMAIL=:EMAIL,MOBILE_FLAG=:MOBILE_FLAG,EMAIL_FLAG=:EMAIL_FLAG,ISENCRYPTION=:ISENCRYPTION,ISVERIFICATION=:ISVERIFICATION,CLIENTIP=:CLIENTIP,CREATE_TIME=:CREATE_TIME WHERE USER_ID=:USER_ID", OracleHelper.Connection, new OracleParameter(":ACCOUNT", (object)o.Account), new OracleParameter(":USER_NAME", (object)o.UserName), new OracleParameter(":USER_TYPE", (object)o.UserType), new OracleParameter(":EXPIRE_TIME", (object)o.ExpireTime), new OracleParameter(":REMARK", (object)o.Remark), new OracleParameter(":USER_ID", (object)o.UserID), new OracleParameter(":MOBILE", (object)o.Mobile), new OracleParameter(":EMAIL", (object)o.Email), new OracleParameter(":MOBILE_FLAG", (object)o.MobileFlag), new OracleParameter(":EMAIL_FLAG", (object)o.EmailFlag), new OracleParameter(":ISENCRYPTION", (object)o.IsEncryption), new OracleParameter(":ISVERIFICATION", (object)o.IsVerification), new OracleParameter(":CLIENTIP", (object)o.ClientIp), new OracleParameter(":CREATE_TIME", (object)o.CreateTime) ) > 0; } //鏇存柊鐘舵�� @@ -234,12 +314,18 @@ public bool Add(SysUser e)//娣诲姞璐﹀彿 { - return OracleHelper.ExecuteSql("INSERT INTO SYS_USER(USER_ID,ACCOUNT,PASSWORD, USER_NAME, EXPIRE_TIME,REMARK,MOBILE,EMAIL,MOBILE_FLAG,EMAIL_FLAG,ISENCRYPTION,ISVERIFICATION,CLIENTIP,CREATE_TIME, STATUS) VALUES(SYS_USER_ID_SEQ.NextVal,:ACCOUNT,:PASSWORD, :USER_NAME,:EXPIRE_TIME,:REMARK,:MOBILE,:EMAIL,:MOBILE_FLAG,:EMAIL_FLAG,:ISENCRYPTION,:ISVERIFICATION,:CLIENTIP,:CREATE_TIME, :STATUS)", OracleHelper.Connection, new OracleParameter(":ACCOUNT", (object)e.Account), new OracleParameter(":PASSWORD", (object)e.Password), new OracleParameter(":USER_NAME", (object)e.UserName), new OracleParameter(":EXPIRE_TIME", (object)e.ExpireTime), new OracleParameter(":REMARK", (object)e.Remark), new OracleParameter(":MOBILE", (object)e.Mobile), new OracleParameter(":EMAIL", (object)e.Email), new OracleParameter(":MOBILE_FLAG", (object)e.MobileFlag), new OracleParameter(":EMAIL_FLAG", (object)e.EmailFlag), new OracleParameter(":ISENCRYPTION", (object)e.IsEncryption), new OracleParameter(":ISVERIFICATION", (object)e.IsVerification), new OracleParameter(":CLIENTIP", (object)e.ClientIp), new OracleParameter(":CREATE_TIME", (object)e.CreateTime), new OracleParameter(":STATUS", (object)e.Status)) > 0; + return OracleHelper.ExecuteSql("INSERT INTO SYS_USER(USER_ID,ACCOUNT,PASSWORD, SALT, USER_NAME, USER_TYPE, EXPIRE_TIME,REMARK,MOBILE,EMAIL,MOBILE_FLAG,EMAIL_FLAG,ISENCRYPTION,ISVERIFICATION,CLIENTIP,CREATE_TIME) VALUES(SYS_USER_ID_SEQ.NextVal,:ACCOUNT,:PASSWORD, :SALT, :USER_NAME,:USER_TYPE,:EXPIRE_TIME,:REMARK,:MOBILE,:EMAIL,:MOBILE_FLAG,:EMAIL_FLAG,:ISENCRYPTION,:ISVERIFICATION,:CLIENTIP,:CREATE_TIME)", OracleHelper.Connection, new OracleParameter(":ACCOUNT", (object)e.Account), new OracleParameter(":PASSWORD", (object)e.Password), new OracleParameter(":SALT", (object)e.Salt), new OracleParameter(":USER_NAME", (object)e.UserName), new OracleParameter(":USER_TYPE", (object)e.UserType), new OracleParameter(":EXPIRE_TIME", (object)e.ExpireTime), new OracleParameter(":REMARK", (object)e.Remark), new OracleParameter(":MOBILE", (object)e.Mobile), new OracleParameter(":EMAIL", (object)e.Email), new OracleParameter(":MOBILE_FLAG", (object)e.MobileFlag), new OracleParameter(":EMAIL_FLAG", (object)e.EmailFlag), new OracleParameter(":ISENCRYPTION", (object)e.IsEncryption), new OracleParameter(":ISVERIFICATION", (object)e.IsVerification), new OracleParameter(":CLIENTIP", (object)e.ClientIp), new OracleParameter(":CREATE_TIME", (object)e.CreateTime) ) > 0; } public bool UpdatePassword(int userID, string oldPassword, string newPassword) { return OracleHelper.ExecuteSql("update SYS_USER SET PASSWORD=:NEWPASSWORD,ISENCRYPTION=1 WHERE USER_ID=:USER_ID AND PASSWORD=:OLDPASSWORD", OracleHelper.Connection, new OracleParameter(":NEWPASSWORD", (object)newPassword), new OracleParameter(":OLDPASSWORD", (object)oldPassword), new OracleParameter(":USER_ID", (object)userID)) >= 1; + } + + //鍔犲瘑鐩愪慨鏀瑰瘑鐮� + public bool UpdatePwd(string account, string password) + { + return OracleHelper.ExecuteSql("UPDATE SYS_USER SET PASSWORD=:PASSWORD WHERE ACCOUNT=:ACCOUNT", OracleHelper.Connection, new OracleParameter(":ACCOUNT", (object)account), new OracleParameter(":PASSWORD", (object)password) ) > 0; } public void UpdatePermission(int userid, string[] menuIDArray) @@ -258,14 +344,14 @@ foreach (string str in menuIDArray) { OracleParameter[] oracleParameterArray2 = new OracleParameter[3] - { - new OracleParameter(":USER_ID", (object) userid), - new OracleParameter(":MENU_ID", (object) str), - new OracleParameter(":MENU_DATA", (object) "") - }; + { + new OracleParameter(":USER_ID", (object) userid), + new OracleParameter(":MENU_ID", (object) str), + new OracleParameter(":MENU_DATA", (object) "") + }; list.Add(new KeyValuePair<string, OracleParameter[]>(key2, oracleParameterArray2)); - OracleHelper.ExecuteSqlTran(list, OracleHelper.Connection); } + OracleHelper.ExecuteSqlTran(list, OracleHelper.Connection); } private int ReadCount(OracleDataReader reader) -- Gitblit v1.9.1