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/web/SysUser.ashx |  384 ++++++++++++++++++++++++++++++++++++------------------
 1 files changed, 257 insertions(+), 127 deletions(-)

diff --git a/web/web/SysUser.ashx b/web/web/SysUser.ashx
index ffb5d7b..190dddf 100644
--- a/web/web/SysUser.ashx
+++ b/web/web/SysUser.ashx
@@ -1,5 +1,5 @@
 锘�<%@ WebHandler Language="C#" Class="SysUserHandler" %>
- 
+
 using Common;
 using Dao;
 using Model;
@@ -10,146 +10,276 @@
 
 public class SysUserHandler : PageHandler<SysUser>
 {
-  private UserDao _Dao = new UserDao();
+    private UserDao _Dao = new UserDao();
 
-  public override JsonPageResult ProcessRequestInternal(PageContext<SysUser> context)
-  {
-    string @string = context.GetString("action");
-    switch (@string)
+    public override JsonPageResult ProcessRequestInternal(PageContext<SysUser> context)
     {
-      case "saveUser":
-        return this.SaveUser(context);
-      case "loadUserList":
-        return this.LoadUserList(context);
-      case "deleteUser":
-        return this.DeleteUser(context);
-      case "loadUserInfo":
-        return this.LoadUserInfo(context);
-      case "loadUserMenuList":
-        return this.LoadUserMenuList(context);
-      case "updatePermission":
-        return this.UpdatePermission(context);
-      default:
-        throw new Exception("Invalid Action=" + @string);
+        string @string = context.GetString("action");
+        switch (@string)
+        {
+            case "saveUser":
+                return this.SaveUser(context);
+            case "loadUserList":
+                return this.LoadUserList(context);
+            case "deleteUser":
+                return this.DeleteUser(context);
+            case "loadUserInfo":
+                return this.LoadUserInfo(context);
+            case "loadUserMenuList":
+                return this.LoadUserMenuList(context);
+            case "updatePermission":
+                return this.UpdatePermission(context);
+            case "updateStatus":
+                return this.UpdateStatus(context);
+            //淇敼瀵嗙爜
+            case "updatePwd":
+                return UpdatePwd(context);
+            //鏍规嵁鏁扮粍瀛楃涓茶浆鎹㈠瓧鍏�
+            case "arrayStrToDict":
+                return ArrayStrToDict(context);
+
+            default:
+                throw new Exception("Invalid Action=" + @string);
+        }
     }
-  }
 
-  private JsonPageResult UpdatePermission(PageContext<SysUser> context)
-  {
-    context.CheckRight("1042", FailedOperation.PromptOnly);
-    string @string = context.GetString("menuIDArray");
-    int @int = context.GetInt("userid");
-    string[] menuIDArray = JsonConvert.DeserializeObject<string[]>(@string);
-    if (menuIDArray == null)
-      throw new ArgumentException("鑿滃崟鏁版嵁寮傚父锛�");
-    if (@int == 0)
-      throw new ArgumentException("USERID鍙傛暟寮傚父锛�");
-    this._Dao.UpdatePermission(@int, menuIDArray);
-    return new JsonPageResult(true, (object) "淇濆瓨鏉冮檺鎴愬姛锛�");
-  }
-
-  private JsonPageResult LoadUserList(PageContext<SysUser> context)
-  {
-    context.CheckRight("104", FailedOperation.PromptOnly);
-    int recordCount = 0;
-    int int1 = context.GetInt("pageSize", 20);
-    int int2 = context.GetInt("pageIndex", 1);
-    List<SysUser> list = this._Dao.LoadInfoList(out recordCount, int1, int2);
-    list.ForEach((Action<SysUser>) (u => u.Password = ""));
-    return new JsonPageResult(true, (object) new
+    private JsonPageResult UpdatePermission(PageContext<SysUser> context)
     {
-      Table = list,
-      TotalCount = recordCount
-    });
-  }
-
-  private JsonPageResult DeleteUser(PageContext<SysUser> context)
-  {
-    context.CheckRight("1044", FailedOperation.PromptOnly);
-    int @int = context.GetInt("userid");
-    if (@int == 1)
-      throw new ArgumentException("绯荤粺榛樿璐︽埛涓嶈兘鍒犻櫎锛�");
-    this._Dao.Delete(@int);
-    return new JsonPageResult(true, (object) "鍒犻櫎鐢ㄦ埛鎴愬姛锛�");
-  }
-
-  private JsonPageResult LoadUserInfo(PageContext<SysUser> context)
-  {
-    context.CheckRight("104", FailedOperation.PromptOnly);
-    return new JsonPageResult(true, (object) this._Dao.GetUserInfo(context.GetInt("userid")));
-  }
-
-  private JsonPageResult LoadUserMenuList(PageContext<SysUser> context)
-  {
-    context.CheckRight("104", FailedOperation.PromptOnly);
-    return new JsonPageResult(true, (object) this._Dao.LoadUserMenuList(context.GetInt("userid")).Keys);
-  }
-
-  private JsonPageResult SaveUser(PageContext<SysUser> context)
-  {
-    int int1 = context.GetInt("userid");
-    string string1 = context.GetString("account");
-    string string2 = context.GetString("password");
-    string string3 = context.GetString("email");
-    string string4 = context.GetString("mobile");
-    int int2 = context.GetInt("emailFlag");
-    int int3 = context.GetInt("mobileFlag");
-    int num = 0;
-    if (string.IsNullOrEmpty(string1) || !Regex.IsMatch(string1, "\\w{3,}"))
-      throw new ArgumentException("璐︽埛鑷冲皯3浣嶅彲瑙佸瓧绗︼紝璇烽噸鏂拌緭鍏ワ紒");
-    if (string.IsNullOrEmpty(string2) || string2.Length < 6)
-      throw new ArgumentException("璐︽埛瀵嗙爜鑷冲皯6浣嶏紝璇烽噸鏂拌緭鍏ワ紒");
-    if (context.GetBoolean("isVerification"))
-      num = 1;
-    string string5 = context.GetString("clientIp");
-    if (num == 1)
-    {
-      if (string.IsNullOrEmpty(string5))
-        throw new ArgumentException("IP鍦板潃涓嶈兘涓虹┖锛岃杈撳叆锛�");
-      if (string.IsNullOrEmpty(string4.ToString()) || !Regex.IsMatch(string4, "1\\d{10}"))
-        throw new ArgumentException("鎵嬫満鍙风爜鏃犳晥锛岃閲嶆柊杈撳叆锛�");
+        context.CheckRight("1042", FailedOperation.PromptOnly);
+        string @string = context.GetString("menuIDArray");
+        int @int = context.GetInt("userid");
+        string[] menuIDArray = JsonConvert.DeserializeObject<string[]>(@string);
+        if (menuIDArray == null)
+            throw new ArgumentException("鑿滃崟鏁版嵁寮傚父锛�");
+        if (@int == 0)
+            throw new ArgumentException("USERID鍙傛暟寮傚父锛�");
+        this._Dao.UpdatePermission(@int, menuIDArray);
+        return new JsonPageResult(true, (object) "淇濆瓨鏉冮檺鎴愬姛锛�");
     }
-    if (!string.IsNullOrEmpty(string4.ToString()) && !Regex.IsMatch(string4, "1\\d{10}"))
-      throw new ArgumentException("鎵嬫満鍙风爜鏃犳晥锛岃閲嶆柊杈撳叆锛�");
-    if (!string.IsNullOrEmpty(string3) && !Regex.IsMatch(string3, "^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(.[a-zA-Z0-9_-])+"))
-      throw new ArgumentException("閭鍦板潃鏃犳晥,璇烽噸鏂拌緭鍏ワ紒");
-    if ((int3 == 1 || int3 == 2 || (int3 == 3 || int3 == 4) || int3 == 5) && !Regex.IsMatch(string4, "1\\d{10}"))
-      throw new ArgumentException("鎵嬫満鍙风爜鏃犳晥锛岃閲嶆柊杈撳叆锛�");
-    if ((int2 == 1 || int2 == 2 || (int2 == 3 || int2 == 4) || int2 == 5) && !Regex.IsMatch(string3, "^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(.[a-zA-Z0-9_-])+"))
-      throw new ArgumentException("閭鍦板潃鏃犳晥锛岃閲嶆柊杈撳叆锛�");
-    SysUser sysUser = new SysUser();
-    sysUser.UserID = int1;
-    sysUser.Account = string1;
-    sysUser.CreateTime = DateTime.Now;
+
+    private JsonPageResult LoadUserList(PageContext<SysUser> context)
+    {
+        context.CheckRight("104", FailedOperation.PromptOnly);
+        int recordCount = 0;
+        int int1 = context.GetInt("pageSize", 20);
+        int int2 = context.GetInt("pageIndex", 1);
+        List<SysUser> list = this._Dao.LoadInfoList(out recordCount, int1, int2);
+        list.ForEach((Action<SysUser>) (u => u.Password = ""));
+        return new JsonPageResult(true, (object) new
+        {
+            Table = list,
+            TotalCount = recordCount
+        });
+    }
+
+    private JsonPageResult DeleteUser(PageContext<SysUser> context)
+    {
+        context.CheckRight("1044", FailedOperation.PromptOnly);
+        int @int = context.GetInt("userid");
+        if (@int == 1)
+            throw new ArgumentException("绯荤粺榛樿璐︽埛涓嶈兘鍒犻櫎锛�");
+        this._Dao.Delete(@int);
+        return new JsonPageResult(true, (object) "鍒犻櫎鐢ㄦ埛鎴愬姛锛�");
+    }
+
+    private JsonPageResult LoadUserInfo(PageContext<SysUser> context)
+    {
+        context.CheckRight("104", FailedOperation.PromptOnly);
+        return new JsonPageResult(true, (object) this._Dao.GetUserInfo(context.GetInt("userid")));
+    }
+
+    private JsonPageResult LoadUserMenuList(PageContext<SysUser> context)
+    {
+        context.CheckRight("104", FailedOperation.PromptOnly);
+        //return new JsonPageResult(true, (object) this._Dao.LoadUserMenuList(context.GetInt("userid")).Keys);
+        return new JsonPageResult(true, (object) this._Dao.LoadUserRoleMenuList(context.GetInt("userid")).Keys);
+    }
+
+    private JsonPageResult SaveUser(PageContext<SysUser> context)
+    {
+        int int1 = context.GetInt("userid");
+        string string1 = context.GetString("account");
+        string string2 = context.GetString("password");
+        string userName = context.GetString("userName");
+        string userType = context.GetString("userType");
+            
+        List<string> tmpList = new List<string>();
+        //鏁扮粍鍚堝苟
+        tmpList.AddRange( JsonConvert.DeserializeObject<string[]>(context.GetString("userType")) );
+
+        //鏁扮粍鍘婚噸
+        string[] tmpArray = DataConverter.DelRepeatData(tmpList.ToArray() );
+        userType = string.Join(",", tmpArray) ;
+
+        string string3 = context.GetString("email");
+        string string4 = context.GetString("mobile");
+        int int2 = context.GetInt("emailFlag");
+        int int3 = context.GetInt("mobileFlag");
+        int num = 0;
+        if (string.IsNullOrEmpty(string1) || !Regex.IsMatch(string1, "\\w{3,}"))
+            throw new ArgumentException("璐︽埛鑷冲皯3浣嶅彲瑙佸瓧绗︼紝璇烽噸鏂拌緭鍏ワ紒");
+        if(int1<= 0 )
+        { 
+            if (string.IsNullOrEmpty(string2) || string2.Length < 6)
+                throw new ArgumentException("璐︽埛瀵嗙爜鑷冲皯6浣嶏紝璇烽噸鏂拌緭鍏ワ紒");
+        }
+        if (string.IsNullOrEmpty(userName))
+            throw new ArgumentException("璐︽埛鍚嶇О涓嶈兘涓虹┖锛岃杈撳叆锛�");
+        if (string.IsNullOrEmpty(userType))
+            throw new ArgumentException("璐︽埛绫诲瀷涓嶈兘涓虹┖锛岃閫夋嫨锛�");
+        if (context.GetBoolean("isVerification"))
+            num = 1;
+        string string5 = context.GetString("clientIp");
+        if (num == 1)
+        {
+            if (string.IsNullOrEmpty(string5))
+                throw new ArgumentException("IP鍦板潃涓嶈兘涓虹┖锛岃杈撳叆锛�");
+            if (string.IsNullOrEmpty(string4.ToString()) || !Regex.IsMatch(string4, "1\\d{10}"))
+                throw new ArgumentException("鎵嬫満鍙风爜鏃犳晥锛岃閲嶆柊杈撳叆锛�");
+        }
+        if (!string.IsNullOrEmpty(string4.ToString()) && !Regex.IsMatch(string4, "1\\d{10}"))
+            throw new ArgumentException("鎵嬫満鍙风爜鏃犳晥锛岃閲嶆柊杈撳叆锛�");
+        if (!string.IsNullOrEmpty(string3) && !Regex.IsMatch(string3, "^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(.[a-zA-Z0-9_-])+"))
+            throw new ArgumentException("閭鍦板潃鏃犳晥,璇烽噸鏂拌緭鍏ワ紒");
+        if ((int3 == 1 || int3 == 2 || (int3 == 3 || int3 == 4) || int3 == 5) && !Regex.IsMatch(string4, "1\\d{10}"))
+            throw new ArgumentException("鎵嬫満鍙风爜鏃犳晥锛岃閲嶆柊杈撳叆锛�");
+        if ((int2 == 1 || int2 == 2 || (int2 == 3 || int2 == 4) || int2 == 5) && !Regex.IsMatch(string3, "^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(.[a-zA-Z0-9_-])+"))
+            throw new ArgumentException("閭鍦板潃鏃犳晥锛岃閲嶆柊杈撳叆锛�");
+        SysUser sysUser = new SysUser();
+        sysUser.UserID = int1;
+        sysUser.Account = string1;
+
+        if (this._Dao.UserNameExists(userName, int1))
+            throw new ArgumentException("璐︽埛鍚嶇О宸茬粡瀛樺湪锛岃閲嶆柊杈撳叆锛�");
+
+        sysUser.UserName = userName;
+        sysUser.UserType = userType;
+        sysUser.CreateTime = DateTime.Now;
+
+        /**
+    //鑾峰彇鍞竴鏍囪瘑绗�
+    string salt = DataConverter.getRandom(6);
     if (int1 > 0)
     {
-      SysUser userInfo = this._Dao.GetUserInfo(int1);
-      sysUser.Password = userInfo.Password == string2 ? userInfo.Password : DataHelper.MD5Hex(string2);
-      sysUser.IsEncryption = userInfo.Password == string2 ? userInfo.IsEncryption : 1;
+        SysUser userInfo = this._Dao.GetUserInfo(int1);
+        sysUser.Password = userInfo.Password == string2 ? userInfo.Password : DataHelper.MD5Hex(string2);
+        sysUser.IsEncryption = userInfo.Password == string2 ? userInfo.IsEncryption : 1;
     }
     else
     {
-      sysUser.Password = DataHelper.MD5Hex(string2);
-      sysUser.IsEncryption = 1;
+        string2 += salt;
+        sysUser.Password = DataHelper.MD5Hex(string2);
+        sysUser.IsEncryption = 1;
+        sysUser.Salt = salt;
+    }**/
+
+        sysUser.Email = string3;
+        sysUser.Mobile = string4;
+        sysUser.MobileFlag = int3;
+        sysUser.EmailFlag = int2;
+        sysUser.IsVerification = num;
+        sysUser.ClientIp = string5;
+        if (int1 > 0)
+        {
+            context.CheckRight("1042", FailedOperation.PromptOnly);
+            if (int1 > 0)
+            {
+                SysUser userInfo = this._Dao.GetUserInfo(int1);
+                sysUser.IsEncryption = userInfo.Password == string2 ? userInfo.IsEncryption : 1;
+            }
+            //edit:yangzh by 20220612 淇敼鏃朵笉鏇存柊瀵嗙爜
+            this._Dao.Update(sysUser);
+        }
+        else
+        {
+            context.CheckRight("1041", FailedOperation.PromptOnly);
+            if (this._Dao.Exists(string1))
+                throw new ArgumentException("璐︽埛宸茬粡瀛樺湪锛岃閲嶆柊杈撳叆锛�");
+
+
+            string password = "";
+            if(int1> 0 )
+            {
+                throw new ArgumentException("瀵嗙爜涓嶈兘涓虹┖锛岃閲嶆柊杈撳叆锛�");
+            }
+
+            //鑾峰彇鍞竴鏍囪瘑绗�
+            string salt = DataConverter.getRandom(6);
+
+            string2 += salt;
+            password = DataHelper.MD5Hex(string2);
+
+            sysUser.IsEncryption = 1;
+            sysUser.Salt = salt;
+            sysUser.Password = password;
+
+            this._Dao.Add(sysUser);
+
+        }
+        return new JsonPageResult(true, (object) "璐︽埛淇濆瓨鎴愬姛锛�");
     }
-    sysUser.Email = string3;
-    sysUser.Mobile = string4;
-    sysUser.MobileFlag = int3;
-    sysUser.EmailFlag = int2;
-    sysUser.IsVerification = num;
-    sysUser.ClientIp = string5;
-    if (int1 > 0)
+
+
+    //鏇存柊淇℃伅鍚敤鎴栧仠鐢�
+    private JsonPageResult UpdateStatus(PageContext<SysUser> context)
     {
-      context.CheckRight("1042", FailedOperation.PromptOnly);
-      this._Dao.Update(sysUser);
+        int userId = context.GetInt("userId");
+        int status = context.GetInt("status");
+
+        SysUser sysUser = new SysUser();
+        sysUser.UserID = userId;
+        sysUser.Status = status;
+        this._Dao.UpdateStatus(sysUser);
+        return new JsonPageResult(true, "鏇存柊淇℃伅鐘舵�佹垚鍔燂紒");
+
     }
-    else
+
+    //淇敼瀵嗙爜
+    private JsonPageResult UpdatePwd(PageContext<Model.SysUser> context)
     {
-      context.CheckRight("1041", FailedOperation.PromptOnly);
-      if (this._Dao.Exists(string1))
-        throw new ArgumentException("璐︽埛宸茬粡瀛樺湪锛岃閲嶆柊杈撳叆锛�");
-      this._Dao.Add(sysUser);
+        string account = context.GetString("account");
+        string newPwd = context.GetString("newPwd");
+        int userID = 0;
+
+        if (string.IsNullOrEmpty(account))
+        {
+            throw new ArgumentException("绯荤粺璐﹀彿鍙傛暟寮傚父锛�");
+        }
+
+        if (string.IsNullOrEmpty(newPwd) || !System.Text.RegularExpressions.Regex.IsMatch(newPwd, @"[a-zA-Z0-9]{4,10}"))
+        {
+            throw new ArgumentException("鐧诲綍瀵嗙爜涓嶈兘涓虹┖锛屼笖蹇呴』涓�4-10浣嶈嫳鏂囨垨鏁板瓧瀛楃缁勫悎锛�");
+        }
+        string salt = "";
+        SysUser sysUser = _Dao.GetUser(account);
+
+        salt = sysUser.Salt==null? "": sysUser.Salt.ToString();
+        newPwd += salt;
+
+        //瀵嗙爜MD5鍔犲瘑锛�
+        newPwd = DataHelper.MD5Hex(newPwd);
+
+        _Dao.UpdatePwd(account, newPwd );
+
+        return new JsonPageResult(true, (object)"淇敼瀵嗙爜鎴愬姛锛�");
+    }        
+        
+    //鏍规嵁鏁扮粍瀛楃涓茶浆鎹㈠瓧鍏�
+    private JsonPageResult ArrayStrToDict(PageContext<Model.SysUser> context)
+    {
+        string userId = context.GetString("userId");
+        string userType = context.GetString("userType");
+            
+        Dictionary<string, object> dictionary = new Dictionary<string, object>();
+
+        List<object> list = DataConverter.stringToList(userType);
+        for (int i = 0; i < list.Count; i++)
+        {
+            //dictionary[userId.ToString()] = list[i];
+            dictionary[list[i].ToString()] = list[i];
+        }
+
+        return new JsonPageResult(true, dictionary.Keys);
     }
-    return new JsonPageResult(true, (object) "璐︽埛淇濆瓨鎴愬姛锛�");
-  }
+
 }

--
Gitblit v1.9.1