二开案例.表单插件.自定义功能验权

栏目:云星空知识作者:金蝶来源:金蝶云社区发布:2024-09-23浏览:1

二开案例.表单插件.自定义功能验权

【应用场景】

对自定义菜单,或自定义按钮,或自定义的某个功能,进行权限控制。


【案例演示】

采购订单,菜单集合新增一个菜单【发送消息】,针对此菜单的点击进行权限控制,鼠标点击该菜单后进行验证,有权继续执行,无权显示验权失败的提示信息,并终止操作。


【实现步骤】

<1>用管理员账号登录星空系统,新增权限项【发送消息】,获取权限项内码(后面插件中要用到)。

获取权限项内码:


<2>权限对象绑定权限项。

采购订单的权限对象是【采购订单】,可在BOSIDE中查看。


<3>新增角色。

<4>角色设定权限。

<5>用户绑定角色。


<6>编写表单插件,代码如下。

using Kingdee.BOS.Core.DynamicForm.PlugIn;

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

using Kingdee.BOS.Util;

using System.ComponentModel;

using System.Linq;


namespace Jac.XkDemo.BOS.Business.PlugIn

{

    /// <summary>

    /// 【表单插件】自定义功能验权

    /// </summary>

    [Description("【表单插件】自定义功能验权"), HotUpdate]

    public class FuncPermissionAuthFormPlugIn : AbstractDynamicFormPlugIn

    {

        /// <summary>

        /// 发送消息的权限项内码

        /// </summary>

        const string permissionItemId = "6138179c9d7520";


        /// <summary>

        /// 发送消息的权限项名称,非必填参数,可为空

        /// </summary>

        const string permissionItemName = "发送消息";


        public override void BarItemClick(BarItemClickEventArgs e)

        {

            base.BarItemClick(e);

            if (e.BarItemKey == "SendMsg")

            {

                var pkid = string.Empty; // 验单据权限时填单据内码,没有填空

                var permissionAuthResult = this.View.Model.FuncPermissionAuth(new[] { pkid }

                    , permissionItemId, permissionItemName, false).FirstOrDefault();

                if (permissionAuthResult != null && !permissionAuthResult.Passed)

                {

                    this.View.ShowMessage(string.Format("验权失败:您没有“{0}”的“{1}”权限!", this.View.BillBusinessInfo.GetForm().Name, permissionItemName));

                    e.Cancel = true;

                    return;

                }

                this.View.ShowMessage("验权通过!");

            }

        }

    }

}

/*

--权限项

DELETE T_SEC_PERMISSIONITEM WHERE FITEMID = '6138179c9d7520';

INSERT INTO T_SEC_PERMISSIONITEM(FITEMID, FFORBIDSTATUS, FNUMBER, FDESCRIPTION, FSEQ, FGROUP, FISSYSPRESET) VALUES('6138179c9d7520','A', N'Tst_SendMsg', N' ',100,'4','0');


--权限项多语言

DELETE T_SEC_PERMISSIONITEM_L WHERE FITEMID = '6138179c9d7520' AND FLOCALEID = 2052;

INSERT INTO T_SEC_PERMISSIONITEM_L(FPKID, FITEMID, FLOCALEID, FNAME, FDESCRIPTION) VALUES('6138179c9d7521','6138179c9d7520',2052, N'发送消息(测试)', N' ');

*/


<7>拷贝插件组件到应用站点的WebSite\Bin目录下,重启IIS。


<9>BOSIDE扩展采购订单,菜单集合新增菜单项,注册表单插件,保存元数据,开发完毕。



【功能验证】

<1>登录业务站点,打开采购订单新增界面,点击菜单【发送消息】,验权通过。

<2>用管理员账号登录星空系统,将角色【测试员】的【采购订单】的【发送消息】的权限设置为【无权】,再次点击菜单【发送消息】,验权不通过。

---------------------------------------------------------------------------------------------------------













【金蝶云星空BOS二次开发案例演示】

https://vip.kingdee.com/article/94751030918525696

二开案例.表单插件.自定义功能验权

【应用场景】对自定义菜单,或自定义按钮,或自定义的某个功能,进行权限控制。【案例演示】采购订单,菜单集合新增一个菜单【发送消息】,...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息