插件实现对 附件的权限控制,限制部分人下载原创
金蝶云社区-张大星
张大星
5人赞赏了该文章 468次浏览 未经作者许可,禁止转载编辑于2023年06月17日 17:18:47

系统标准是不支持对附件进行权限管理的,但是有一些没有用PLM的企业,同时又在系统内上传了敏感的图片,需要对这些进行限制,提供一个思路

1、在附件内添加字段“文件类型”

2、设置一个限制名单或者根据角色限制

3、在附件的预览按钮、下载按钮的点击事件里面加逻辑

using System;

using Kingdee.BOS.Core.Bill.PlugIn;

using System.ComponentModel;

using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;

using Kingdee.BOS.ServiceHelper;

using System.Data;


namespace YYY.BusinessPlugIn.plan

{

    [Kingdee.BOS.Util.HotUpdate]

    [Description("评审单部分人员不能查看附件--附件明细列表插件")]

    public  class PSDNotDownLand :AttachmentListPlugIn

    {

     

bool isview =true ;

        string FileType;

        public override void BarItemClick(BarItemClickEventArgs e)

        {

           

            if (e.BarItemKey.ToString()== "tbbtn_OnLineView"|| e.BarItemKey.ToString() == "tbbtnDownLoad" )

            {

                e.Cancel = true;

                string userid = Convert.ToString(this.Context.UserId);

                //获取禁止查看的人员ID

                string sql = string.Format(@"/*dialect*/SELECT A1.F_PJWR_user FROM PJWR_t_Cust100031 a inner join 

PJWR_t_Cust_Entry100128 a1 on a.FID=a1.FID

  WHERE A.FBILLNO='2'");


                DataSet ds = DBServiceHelper.ExecuteDataSet(Context, sql);

                DataTable dt = ds.Tables[0];


                if (dt.Rows.Count > 0)

                {

                    for (int i = 0; i < dt.Rows.Count; i++)

                    {

                        string userids = Convert.ToString(dt.Rows[i]["F_PJWR_user"]);

                        if (userid == userids)

                        {

                            isview = false;

                        }

                    }

                }


                ListSelectedRowCollection selectedRowsInfo = this.ListView.SelectedRowsInfo;               

                if (selectedRowsInfo.Count > 0)

                {


                    foreach (var currRow in selectedRowsInfo)

                    {


                        DynamicObjectDataRow row = currRow.DataRow as DynamicObjectDataRow;

                        string filtype = Convert.ToString(row["F_FlieType"]);

                        if (filtype == "1")

                        {

                            FileType = "图纸";

                        }

                    }

                }

                

                if (!isview && FileType=="图纸")

                {

                    //base.BarItemClick(e);                    

                    this.View.ShowMessage("您没有权限对图纸文件进行操作");

                }

                else 

                {

                    base.BarItemClick(e);

                }

            }


            else

            {

                base.BarItemClick(e);

            }

        }

       

    }

}



赞 5