winform简易用户权限管理系统

一、功能简介

1. 数据库可使用sqlite、mssql、mysql等

2. 管理员账号不管控,其余账号进行权限管控(左侧菜单,表单按钮),且只能看到自己创建的角色、用户

 

二、操作界面

1. 管理员账号登陆后,左侧菜单栏自动添加 “菜单管理” ,菜单选择 Menu / Button

 

2. 角色分配权限

3. 用户绑定角色

4. 游客登陆后界面

三、数据库表

 

 

四、源码结构

 

五、权限控制代码

1. 菜单栏

public static void SetTreeView(TreeView treeView1, ImageList imageList1, string checkList, bool onlyMenu = false)
        {
            if (null == checkList) checkList = string.Empty;

            treeView1.Nodes.Clear();
            treeView1.ImageList = imageList1;

            // 管理员特别权限
            if (onlyMenu && LoginUser.Root)
            {
                TreeNode tn = new TreeNode();
                tn.Text = "菜单管理";
                treeView1.Nodes.Add(tn);
            }

            var list = FreeSqlHelper.GetMenu();
            var parents = list.Where(o => o.ParentId == 0);
            foreach (var item in parents)
            {
                var id = item.Id.ToString();
                var nodeSign = GetSignTag(id);
                //
                TreeNode tn = new TreeNode();
                tn.Text = item.MenuTag;
                tn.Tag = id;
                tn.ImageIndex = 0; 
                //
                FillTree(tn, list, checkList, onlyMenu);
                //
                if (checkList.Contains(nodeSign))
                {
                    tn.Checked = true;// 菜单设置用
                }
                //
                if (onlyMenu)
                {
                    // 添加左菜单栏时用(只包含菜单,且有权限时展示)
                    if (EnumMenuType.Menu == (EnumMenuType)item.MenuType)
                    {
                        if (string.IsNullOrEmpty(checkList))
                        {
                            treeView1.Nodes.Add(tn);
                        }
                        else
                        {
                            if (checkList.Contains(nodeSign))
                            {
                                treeView1.Nodes.Add(tn);
                            }
                        }
                    }
                }
                else
                {
                    treeView1.Nodes.Add(tn);
                }
            }

            if (treeView1.Nodes.Count > 0)//展开一级节点
            {
                treeView1.Nodes[0].Expand();
            }
        }

2. 表单按钮

ToolStripButton btnAssign = new ToolStripButton();
        ToolStripTextBox txtQuery_Name = new ToolStripTextBox();
        ToolStripTextBox txtQuery_Tag = new ToolStripTextBox();

        public frmRole()
        {
            InitializeComponent();
            SetDataGridView();
            //
            // 控制按钮
            btnAssign = GetToolStripButton("btnAssign", "分配权限", Resources.btnAssign); 
            btnAssign.Click += new EventHandler(btnAssign_Click); 
            //
            // 查询按钮
            var label1 = new ToolStripLabel(); label1.Text = "角色名称"; toolStripQuery.Items.Insert(0, label1); toolStripQuery.Items.Insert(1, txtQuery_Name);
            var label2 = new ToolStripLabel(); label2.Text = "角色标记"; toolStripQuery.Items.Insert(2, label2); toolStripQuery.Items.Insert(3, txtQuery_Tag);
        }

        public void InitUI()
        { 
            if (!DataMgr.LoginUser.Root)
            {
                var roleMenu = DataMgr.LoginUser.RoleMenuNames.ToLower();
                btnAdd.Visible = roleMenu.Contains("add_role") ? true : false;
                btnEdit.Visible = roleMenu.Contains("edit_role") ? true : false;
                btnDelete.Visible = roleMenu.Contains("delete_role") ? true : false;
                btnAssign.Visible = roleMenu.Contains("assign_role") ? true : false;
            }
            //
            base.InitData();
        }

 

posted @ 2024-01-03 11:50  CHHC  阅读(71)  评论(0编辑  收藏  举报