本帖最后由 lovebeyond 于 2013-11-20 17:35 编辑
权限控制在系统开发之初就要设定好,这个是ERP等数据库系统的核心。
步骤一:权限类[C#] 纯文本查看 复制代码 /// <summary>
/// 权限类
/// </summary>
/// <param name="form_name">窗体名称</param>
/// <param name="users">用户编号</param>
/// <param name="pro_num">程序名称</param>
public void search_role_ff(Form form_name,string users,string pro_num)
{
SqlConnection con = new SqlConnection(ClassL.EncodeAndDecode.passString()); // 字符串解密, SqlDataAdapte 无须open和close
string commString = string.Format("select User_Role_dt.users,sys_admin,pro_num,pro_role from User_Role_dt left join User_Role_ds on User_Role_ds.users=User_Role_dt.users and pro_num=@pro_num where User_Role_dt.users = @users");
SqlDataAdapter sqldata = new SqlDataAdapter(commString, con);
sqldata.SelectCommand.Parameters.Add("@pro_num",SqlDbType.Char,20).Value = pro_num;
sqldata.SelectCommand.Parameters.Add("@users",SqlDbType.Char,10).Value = users;
DataTable datatable1 = new DataTable();
sqldata.Fill(datatable1);
if (datatable1.Rows.Count == 0)
{
MessageBoxEx.Show("没有可进入的授权,请联系系统管理员!","提示:",MessageBoxButtons.OK,MessageBoxIcon.Hand);
}
else
{
if (datatable1.Rows[0]["sys_admin"].ToString() == "Y")
{
ClassL.classL.UserRole_Form.value = "YYYYYYY";
form_name.Show();
}
else //非超级管理员
{
if ( string.IsNullOrEmpty(datatable1.Rows[0]["pro_role"].ToString()))
{
MessageBoxEx.Show("没有可进入的授权,请联系系统管理员!", "提示:", MessageBoxButtons.OK, MessageBoxIcon.Hand);
}
else
{
ClassL.classL.UserRole_Form.value = datatable1.Rows[0]["pro_role"].ToString();//执行成功后则将 该窗体权限赋值给该窗体
form_name.Show();
}
}
}
}
步骤二:按钮事件
private void 订单交期确认_Click(object sender, EventArgs e)
{
ClassL.Sys_Class newclass = new ClassL.Sys_Class();
Sales_Manage.Order_delivery_Form Order_delivery_Form = new Sales_Manage.Order_delivery_Form();
newclass.search_role_ff(Order_delivery_Form, ClassL.classL.UserS.value.ToString(), "Order_delivery_Form");
}
-- 权限设置说明
1、录入程序信息
2、录入用户权限(双档表,分单头和单身,有些ERP 是三档,如果有设置 金额和单价等财务权限,则需做权限扩展,并且对应窗体显示方法)
3、程序打开时查询“用户权限表”,验证当前登录用户是否有权限
4、根据权限设置各程序窗体按钮 Enabled属性
[C#] 纯文本查看 复制代码 private void role_ff()
{
string role = ClassL.classL.UserRole_Form.value.ToString().Trim();
if (role.Substring(0, 1) == "Y") //新增
{
Create_Btn.Enabled = true;//新增
}
else
{
Create_Btn.Enabled = false;//新增
}
if (role.Substring(1, 1) == "Y") //查询
{
Search_Btn.Enabled = true;//查询
}
else
{
Search_Btn.Enabled = false;//查询
}
if (role.Substring(2, 1) == "Y") //修改
{
Modify_Btn.Enabled = true;//未审核允许修改,具体业务逻辑较为复杂,根据实际情况做具体设置。
}
else //无
{
Modify_Btn.Enabled = false;//修改
}
}
-- 声明: 原创帖,转载请注明来自 苏飞 论坛。
|