脚本不适用于具有读取权限的用户

时间:2016-06-02 17:46:23

标签: javascript permissions sharepoint-2013 access-denied

我有一个发送电子邮件的工作流程。当用户收到电子邮件时,会有一个名为Review的超链接。当用户单击Review时,改进列表上名为ReviewStatus的列的值将更改为Requested。我在下面有一个脚本,可以在内容编辑器Web部件上处理:

<script language="javascript" type="text/javascript"> 
_spBodyOnLoadFunctionNames.push("getSetListItem");
        var listItem;
        var list;
        var clientContext;
        var siteUrl = "https://contoso.com/process/";
        function getSetListItem() {
            this.clientContext = new SP.ClientContext(siteUrl);
            if (this.clientContext != undefined && clientContext != null) {
                var webSite = clientContext.get_web();
                var itemID = parseInt(GetUrlKeyValue('ID'));
                this.list = webSite.get_lists().getByTitle("Improvement");
                this.listItem = list.getItemById(itemID);
                clientContext.load(this.listItem);
                this.clientContext.executeQueryAsync(Function.createDelegate(this, this.OnLoadSuccess),
Function.createDelegate(this, this.OnLoadFailed));
            }
        } 
        function OnLoadSuccess(sender, args) {
            var value = this.listItem.get_item("ReviewStatus");
            this.listItem.set_item("ReviewStatus", "Requested");
            this.listItem.update();
            this.clientContext.load(this.listItem);
            this.clientContext.executeQueryAsync(Function.createDelegate(this, this.OnLoadSuccess1),
Function.createDelegate(this, this.OnLoadFailed));
        } 
        function OnLoadSuccess1(sender, args) {
            alert(this.listItem.get_item("ReviewStatus"));
        } 
        function OnLoadFailed(sender, args) {
            alert('Request failed. ' + args.get_message() + '\n' + args.get_stackTrace());
        }

        </script>

以上对我有用,但我有Site Col Admin权限。当具有读取权限的用户单击超链接时,它会将他们带到CEWP所在的页面,并且他们会收到以下消息:

enter image description here

我知道它的权限,但我该怎么做才能使它适用于没有权限的用户?顺便说一句,客户端希望将权限保留为只读用户,因此我无能为力。

感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

按照设计,javascript代码无法使用提升的权限运行,因为现在浏览器中的每个用户都可以添加javascript进行编辑(我正在谈论浏览器开发人员工具)。

这对您的项目来说当然是非常危险的:)

如果您希望代码以提升的权限运行,则可以创建服务器场解决方案,如果您真的不想更改权限设置。

如果要保留脚本,则必须修改执行脚本的用户的权限