首页 > 其他分享 >上位机学习记录(六)用户权限管理

上位机学习记录(六)用户权限管理

时间:2023-03-15 15:24:38浏览次数:63  
标签:LoginName Checked chk 用户 上位 objAdmin User 权限

上位机学习记录(六)用户权限管理

使用到的控件如下:

控件名称 控件类型
dgv_User DataGridView
txt_CurrentUser,txt_User TextBox
chk_HandCtrl,chk_AutoCtrl,chk_SysLog,chk_Trend TextBox
chk_Report,chk_SysSet,chk_UserManage CheckBox
btn_Add,btn_Delete,btn_Save,btn_Select Button
LoginName DataGridViewTextBoxColumn

需求分析

  1. 界面初始化的时候:(1)加载所有的用户信息(2)在界面上所有控件显示第一个用户的信息

  2. 界面运行的时候:

    1. 查询原有用户权限,并且能够进行修改
    2. 增加新用户
    3. 删除旧的用户

功能编写:

  1. 界面初始化:

    修改DataGridView样式

    注意:在界面初始化时: this.dgv_User.AutoGenerateColumns = false;

    image-20230315144733936

    编写加载所有用户信息方法:

    1. 将每一个读到的用户信息加载到AdminList列表中。
    2. dgv_User.DataSource绑定AdminList。
    3. 在界面控件上显示第一个用户信息
        #region 绑定用户集合
        private void BindAdminList()
        {
            AdminList = GetAdminList();
            this.dgv_User.DataSource = null;
            this.dgv_User.DataSource = AdminList;
        }

        /// <summary>
        /// 获取所有的用户列表
        /// </summary>
        /// <returns></returns>
        private List<SysAdmins> GetAdminList()
        {
            string sql = "Select * from SysAdmins";

            MySqlDataReader dr = MySQLHelper.GetReader(sql);

            List<SysAdmins> AdminList = new List<SysAdmins>();

            while (dr.Read())
            {
                AdminList.Add(new SysAdmins()
                {
                    LoginName = dr["LoginName"].ToString(),
                    LoginPwd = Register.Decrypt(dr["LoginPwd"].ToString()),
                    HandCtrl = dr["HandCtrl"].ToString() == "1",
                    AutoCtrl = dr["AutoCtrl"].ToString() == "1",
                    SysSet = dr["SysSet"].ToString() == "1",
                    SysLog = dr["SysLog"].ToString() == "1",
                    Report = dr["Report"].ToString() == "1",
                    Trend = dr["Trend"].ToString() == "1",
                    UserManage = dr["UserManage"].ToString() == "1",
                });
            }
            return AdminList;
        }
        #endregion
            
        /// 加载读取到的第一个用户信息
        private void FrmUserManage_Load(object sender, EventArgs e)
        {
            BindAdminList();
            this.txt_CurrentUser.Text = CommonMethods.objAdmin.LoginName;

            if (AdminList.Count > 0)
            {
                SysAdmins objAdmin = AdminList[0];

                this.txt_User.Text = objAdmin.LoginName;
                this.txt_Pwd.Text = objAdmin.LoginPwd;
                this.chk_HandCtrl.Checked = objAdmin.HandCtrl;
                this.chk_AutoCtrl.Checked = objAdmin.AutoCtrl;
                this.chk_SysSet.Checked = objAdmin.SysSet;
                this.chk_SysLog.Checked = objAdmin.SysLog;
                this.chk_Report.Checked = objAdmin.Report;
                this.chk_Trend.Checked = objAdmin.Trend;
                this.chk_UserManage.Checked = objAdmin.UserManage;
            }
        }
  1. 界面运行的时候。

    核心思想:先找到AdminList中对应的objAdmin,然后用objAdmin的方法进行修改。(目前代码可读性高,但是不够规范,应该把模型的操作方法放到Models中,但是对于初学者尽快上手,目前可以这样简单去做,代码没有使用Sql生成器,后面可能出现sql语句维护的问题)

    1. 对原有用户信息查看与修改。(点击表格,跳转出详细用户信息)

              #region 点击DGV
              private void dgv_User_CellClick(object sender, DataGridViewCellEventArgs e)
              {
                  if (this.dgv_User.SelectedRows.Count > 0)
                  {
                      int index = e == null ? 0 : e.RowIndex;
      
                      if (index >= 0)
                      {
                          UpdateUI(AdminList[index]);
                      }
                  }
              }
              #endregion
              
              private void btn_Save_Click(object sender, EventArgs e)
              {
                  if (this.txt_User.Text == "管理员" && this.txt_CurrentUser.Text != "管理员")
                  {
                      MessageBox.Show("管理员信息修改权限不足", "保存修改");
                      return;
                  }
      
                  if (CheckLoginNameExit(this.txt_User.Text))
                  {
                      //封装用户对象
                      SysAdmins objAdmin = new SysAdmins()
                      {
                          LoginName = this.txt_User.Text.Trim(),
                          LoginPwd = Register.Encrypt(this.txt_Pwd.Text.Trim()),
                          HandCtrl = this.chk_HandCtrl.Checked,
                          AutoCtrl = this.chk_AutoCtrl.Checked,
                          SysSet = this.chk_SysSet.Checked,
                          SysLog = this.chk_SysLog.Checked,
                          Report = this.chk_Report.Checked,
                          Trend = this.chk_Trend.Checked,
                          UserManage = this.chk_UserManage.Checked
                      };
                      if (UpdateUser(objAdmin))
                      {
                          MessageBox.Show("用户信息修改成功", "保存修改");
                      }
                      else
                      {
                          MessageBox.Show("用户信息修改失败", "保存修改");
                          return;
                      }
      
                      BindAdminList();
                  }
                  else
                  {
                      MessageBox.Show("当前修改的用户名不存在,请添加后修改", "保存修改");
                  }
      
              }
      		
             private bool UpdateUser(SysAdmins objAdmin)
              {
                  StringBuilder sb = new StringBuilder();
      
                  sb.Append("Update SysAdmins set LoginPwd='{0}',HandCtrl={1},AutoCtrl={2},");
      
                  sb.Append("SysSet={3},SysLog={4},Report={5},Trend={6},UserManage={7}");
      
                  sb.Append(" where LoginName='{8}'");
      
                  string sql = string.Format(sb.ToString(), objAdmin.LoginPwd, objAdmin.HandCtrl ? 1 : 0,
      
                      objAdmin.AutoCtrl ? 1 : 0, objAdmin.SysSet ? 1 : 0, objAdmin.SysLog ? 1 : 0, objAdmin.Report ? 1 : 0,
      
                       objAdmin.Trend ? 1 : 0, objAdmin.UserManage ? 1 : 0, objAdmin.LoginName);
      
                  return MySQLHelper.Update(sql) == 1;
              
              }
      
      
      1. 新建与删除用户

                #region 添加用户
                private void btn_Add_Click(object sender, EventArgs e)
                {
                    if (!CheckLoginNameExit(this.txt_User.Text.Trim()))
                    {
                        //封装用户对象
                        SysAdmins objAdmin = new SysAdmins()
                        {
                            LoginName = this.txt_User.Text.Trim(),
                            LoginPwd = Register.Encrypt(this.txt_Pwd.Text.Trim()),
                            HandCtrl = this.chk_HandCtrl.Checked,
                            AutoCtrl = this.chk_AutoCtrl.Checked,
                            SysSet = this.chk_SysSet.Checked,
                            SysLog = this.chk_SysLog.Checked,
                            Report = this.chk_Report.Checked,
                            Trend = this.chk_Trend.Checked,
                            UserManage = this.chk_UserManage.Checked
                        };
                        if (AddUser(objAdmin))
                        {
                            MessageBox.Show("添加用户成功!", "添加用户");
                        }
                        else
                        {
                            MessageBox.Show("添加用户失败!", "添加用户");
                            return;
                        }
                        BindAdminList();
                    }
                    else
                    {
                        MessageBox.Show("当前用户名已经存在,请修改后添加", "添加用户");            
                    }
                }
        
                #endregion
        
                #region 检测用户名是否存在,存在为True,不存在未False
                private bool CheckLoginNameExit(string LoginName)
                {
                    foreach (var item in AdminList)
                    {
                        if (item.LoginName == LoginName)
                        {
                            return true;
                        }
                    }
                    return false;
                }
        
                #endregion
        
                #region 根据用户对象添加用户
        
                private bool AddUser(SysAdmins objAdmin)
                {
                    StringBuilder sb = new StringBuilder();
        
                    sb.Append("Insert into SysAdmins(LoginName,LoginPwd,HandCtrl,AutoCtrl,SysSet,SysLog,Report,Trend,UserManage)");
        
                    sb.Append(" values('{0}','{1}',{2},{3},{4},{5},{6},{7},{8})");
        
                    string sql = string.Format(sb.ToString(), objAdmin.LoginName, objAdmin.LoginPwd, objAdmin.HandCtrl ? 1:0, objAdmin.AutoCtrl ? 1 : 0, 
                        
                        objAdmin.SysSet ? 1 : 0, objAdmin.SysLog ? 1 : 0, objAdmin.Report ? 1 : 0, objAdmin.Trend ? 1 : 0, objAdmin.UserManage ? 1 : 0);
        
                    return MySQLHelper.Update(sql) == 1;
        
                }
                #endregion
        
        
                private void btn_Delete_Click(object sender, EventArgs e)
                {
                    if (this.txt_User.Text == "管理员")
                    {
                        MessageBox.Show("管理员用户无法删除", "删除用户");
                        return;
                    }
        
                    SysAdmins objAdmin = new SysAdmins()
                    {
                        LoginName = this.txt_User.Text.Trim()
                    };
                    if (DeleteUser(objAdmin))
                    {
                        MessageBox.Show("用户删除成功!", "删除用户");
                    }
                    else
                    {
                        MessageBox.Show("用户删除失败!", "删除用户");
                        return;
                    }
                    BindAdminList();
                }
        
        
                #region 根据用户对象进行删除
        
                private bool DeleteUser(SysAdmins objAdmin)
                {
                    StringBuilder sb = new StringBuilder();
                    sb.Append("Delete from SysAdmins");
                    sb.Append(" where LoginName='{0}'");
        
                    string sql = string.Format(sb.ToString(), objAdmin.LoginName);
        
                    return MySQLHelper.Update(sql) == 1;
                
                }
        
                #endregion
        
        

标签:LoginName,Checked,chk,用户,上位,objAdmin,User,权限
From: https://www.cnblogs.com/LtWf/p/17218658.html

相关文章

  • linux查询用户登录历史记录
    last命令列出当前和曾经登入系统的用户信息默认读取的是/var/log/wtmp文件的信息lastlog命令列出所有用户最近登录的信息默认读取的是/var/log/lastlog文件中的信息l......
  • GPU服务器无root权限conda初始化
    1.给anaconda文件写入权限sudochmoda+w.conda如果没有权限则会在创建环境时报以下错误NoWritableEnvsDirError:Nowriteableenvsdirectoriesconfigured.-......
  • Mongodb创建用户角色
    一、Mongodb数据库用户角色?MongoDB采用基于角色的访问控制(RBAC)来确定用户的访问。授予用户一个或多个角色,确定用户对MongoDB资源的访问权限和用户可以执行哪些操作。......
  • Linux - 添加用户
    添加用户语法:useradd[选项]用户名-d 指定用户的家目录-g 指定用户所属组-m 不自动建立用户登录的目录-u 指定用户idpasswd用于设置/修改用户密码passwd[用户名]w......
  • 上位机练习小项目(2)登陆功能 与 (3)后台只能运行一个程序实例
    软件学习记录:(2)登陆功能需求分析:首先是登陆验证功能,需要用户类作为模型。考虑用户类的功能:需要考虑登陆用户能够访问哪些功能界面与业务功能所以为用户类设计属性......
  • 微信小程序管理软件:提高小程序效率和用户体验的不二选择
    随着移动互联网和智能终端的普及,微信小程序已经成为越来越多企业和品牌开展业务的重要应用。微信小程序的用户体验好、使用便捷、功能丰富等特点,为企业带来了更多的商业机......
  • 普通用户和超级用户的内置权限
    1.导入SessionAuthentication配置超级权限:  2.演示超级用户内置权限的使用_IsAdminUser:  3.用户权限测试:  ......
  • 权限认证组件和自定义权限
    1.权限组件源码分析:  2.自定义权限超级用户类_app_auth.py:  3.在部分接口内局部添加超级用户权限_仅提供于超级用户查看:  4.在全部添加超级用户权限_......
  • 上位机练习小项目(一)
    软件学习记录:(1)软件架构搭建分层架构:DAL、Models、View。目前view层存储页面与基本的业务逻辑。DAL层存放帮助类文件。Models层存放运行中使用的模型类。软件的项目结......
  • 虎牙SRE谈可观测:如何做到比用户和老板更早发现业务异常?
    一分钟精华速览可观测能力是指在复杂的软件系统中能及时、准确感知到服务状态,特别是异常或故障的发生,确定异常的影响范围、异常部位边界、判定异常点位、并由相关人员或软......